Page 305 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼フィールド名の更新 YUUKI 03/5/28(水) 20:50 ┣VBAとして答えてみますね。 こうちゃん 03/6/2(月) 10:08 ┃ ┗Re:VBAとして答えてみますね。 YUUKI 03/6/3(火) 23:31 ┗Re:フィールド名の更新 イケガミ 03/6/4(水) 2:28 ┣フォローありがとうございます。 こうちゃん 03/6/4(水) 8:49 ┗ありがとうございます YUUKI 03/6/18(水) 9:25 ─────────────────────────────────────── ■題名 : フィールド名の更新 ■名前 : YUUKI ■日付 : 03/5/28(水) 20:50 -------------------------------------------------------------------------
現在VBから*.mdbファイルを読込んでいるのですが、 現在のフィールド名から新しいフィールド名にしたいのですがどうすればいいのでしょうか? レコードの更新はわかるのですが、フィールドの更新のやりかたがわかりません。 レコードの更新みたいにEditメソッドを使うのですか? |
YUUKIさん、こんにちは どなたかがお答えになっていたような気がしましたが、削除されたようなので・・ >現在VBから*.mdbファイルを読込んでいるのですが、 >現在のフィールド名から新しいフィールド名にしたいのですがどうすればいいのでしょうか? >レコードの更新はわかるのですが、フィールドの更新のやりかたがわかりません。 >レコードの更新みたいにEditメソッドを使うのですか? AccessのVBAで、ADOXを使って、フィールド名を変更する例です。 参照設定で「Microsoft ADO Ext 2.x for DLL and Security」にチェックしておいてください。 テーブル名、フィールド名等は実際のものとして試験してみてくださいね。 Public Sub FldNameChange() Dim Myctlg As New ADOX.Catalog Dim Tbl As ADOX.Table Dim Fld As ADOX.Column Myctlg.ActiveConnection = CurrentProject.Connection 'テーブルの指定 Set Tbl = Myctlg.Tables("TABLE1") 'フィールド名変更。ここは実際のものにしてください。 'この例ではフィールド名の最後に"99"を付加しています。 For Each Fld In Tbl.Columns Fld.Name = Fld.Name & "99" Next Fld Set Tbl = Nothing Set Myctlg = Nothing End Sub #ちなみにVBから呼び出す場合は、カタログ指定で・・ Orgcat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & FNAME & ";" & _ "Jet OLEDB:Database Password=" & PSWD Set Orgtbl = Orgcat.Tables.Item(TBLNAME) ってな感じで、指定する必要があります。 参照設定等も違うと思いますのでご注意ください。 (VBはよくわからないので、これ以上の説明は無理くさい^^;) |
こうちゃんさん、こんばんは 回答有難うございます。 早速試してみたいと思いますが しかし、現在少し立てこんでまして結果報告が遅れるかもしれませんが 参考にさせていただきます。 ▼こうちゃん さん: >AccessのVBAで、ADOXを使って、フィールド名を変更する例です。 >参照設定で「Microsoft ADO Ext 2.x for DLL and Security」にチェックしておいてください。 >テーブル名、フィールド名等は実際のものとして試験してみてくださいね。 > >Public Sub FldNameChange() > > Dim Myctlg As New ADOX.Catalog > Dim Tbl As ADOX.Table > Dim Fld As ADOX.Column > > Myctlg.ActiveConnection = CurrentProject.Connection > 'テーブルの指定 > Set Tbl = Myctlg.Tables("TABLE1") > 'フィールド名変更。ここは実際のものにしてください。 > 'この例ではフィールド名の最後に"99"を付加しています。 > For Each Fld In Tbl.Columns > Fld.Name = Fld.Name & "99" > Next Fld > > Set Tbl = Nothing > Set Myctlg = Nothing > >End Sub > >#ちなみにVBから呼び出す場合は、カタログ指定で・・ > Orgcat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ > "Data Source=" & FNAME & ";" & _ > "Jet OLEDB:Database Password=" & PSWD > Set Orgtbl = Orgcat.Tables.Item(TBLNAME) >ってな感じで、指定する必要があります。 >参照設定等も違うと思いますのでご注意ください。 >(VBはよくわからないので、これ以上の説明は無理くさい^^;) |
#バージョンはきちんと書いてくださいね。 補足になるんですが、ADOXとかは基本的にAccess2000以降だと 思います。 なので、それに該当するのならば以下は無視してください。 クエリ(SQL文)でも同様のことができると思います。 (バージョンが違うかもしれませんので、ハズシかもしれません。) ヘルプで、「Jet SQL リファレンス」の中の「ALTER TABLE ステートメント」を 確認してみてください。 なお、更新(変更)ができるのかどうかは、試したことがないので、 分からないです。。。 |
イケガミさん、こんにちは >#バージョンはきちんと書いてくださいね。 >補足になるんですが、ADOXとかは基本的にAccess2000以降だと >思います。 ですね、97ではADO不可です。 >ヘルプで、「Jet SQL リファレンス」の中の「ALTER TABLE ステートメント」を >確認してみてください。 > >なお、更新(変更)ができるのかどうかは、試したことがないので、 >分からないです。。。 ALTER TABLEでやる場合は、フィールド名の変更ができませんので、DROP COLUMNで削除して、ADD COLUMN で追加する手法をとります。 データが既に格納されている場合は、仮テーブルに一旦コピーする等の対策が必要ですね。 (でしたよね・・多分^^;) |
▼イケガミ さん: >#バージョンはきちんと書いてくださいね。 > >補足になるんですが、ADOXとかは基本的にAccess2000以降だと >思います。 >なので、それに該当するのならば以下は無視してください。 > >クエリ(SQL文)でも同様のことができると思います。 >(バージョンが違うかもしれませんので、ハズシかもしれません。) > >ヘルプで、「Jet SQL リファレンス」の中の「ALTER TABLE ステートメント」を >確認してみてください。 > >なお、更新(変更)ができるのかどうかは、試したことがないので、 >分からないです。。。 |