- ベストアンサー
ACCESS 既存のテーブルのフィールド名をフォーム上のテキスト入力値に変更したい
いつもお世話になっております。 既存のテーブルのフィールド名を、単票フォーム上の入力値に変更 したいと思っています。 例)Aテーブル 月1 月2 Bフォーム上のテキストA:200810 テキストB:200811 (結果)Aテーブル 2008 200811 (テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい) どなたか、ご教示願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フォームのボタンのイベントプロシージャの例 Private Sub コマンド_Click() Dim TDS As DAO.Tabledefs Dim TDF As DAO.Tabledef Dim FLD As DAO.Field Set TDS = CurrentDb.TableDefs Set TDF = TDS("Aテーブル") Set FLD = TDF.Fields("月1") '★1 FLD.Name = Me.テキストA.Value '★2 End Sub ★1定数にしておくと2回目からエラーになる。 もし、「最初のフィールド」というなら(0)でも良い。 ★2Null、空文字列、フィールド名として使えない文字のチェックを していないので、実際に作る時はチェックが必要
その他の回答 (1)
普通は、考えもしない処理ですよね。 だって、テーブルの列名を変更すればい色んな不具合が発生するからです。 もちろん、非連結でフォームを作成していれば出来ない芸当ではありません。 No1さんとは別のやり方ですと・・・。 [イミディエイト] ? ChangeFieldName("item", "ID", "II") True Public Const 接続文字列="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\DB11.mdb" Public Function ChangeFieldName(ByVal strTableName As String, _ ByVal strNowName As String, _ ByVal strNewName As String) As Boolean Dim isOK As Boolean Dim I As Integer Dim N As Integer Dim catDB As ADOX.Catalog Dim fldName As String Set catDB = New ADOX.Catalog catDB.ActiveConnection = 接続文字列 N = catDB.Tables(strTableName).Columns.Count - 1 For I = 0 To N If catDB.Tables(strTableName).Columns(I).Name = strNowName Then catDB.Tables(strTableName).Columns(I).Name = strNewName isOK = True End If Next I ChangeFieldName = isOK End Function なお、接続文字列は質問者の環境のそれに。
お礼
ありがとうございました。
お礼
助かりました!!ありがとうございます!!