プロが教えるわが家の防犯対策術!

いつもお世話になっております。

既存のテーブルのフィールド名を、単票フォーム上の入力値に変更
したいと思っています。
例)Aテーブル 月1 月2
  Bフォーム上のテキストA:200810 テキストB:200811
  (結果)Aテーブル 2008 200811

(テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい)

どなたか、ご教示願います。

A 回答 (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、空文字列、フィールド名として使えない文字のチェックを
 していないので、実際に作る時はチェックが必要
    • good
    • 0
この回答へのお礼

助かりました!!ありがとうございます!!

お礼日時:2008/11/20 15:26

普通は、考えもしない処理ですよね。


だって、テーブルの列名を変更すればい色んな不具合が発生するからです。
もちろん、非連結でフォームを作成していれば出来ない芸当ではありません。
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

なお、接続文字列は質問者の環境のそれに。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2008/11/20 15:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す