• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスのテーブルに項目を追加するコードの作成方法)

アクセスのテーブルに項目を追加するコードの作成方法

このQ&Aのポイント
  • アクセスのテーブルに新しい項目を追加する方法を知りたいです。現在作成済みのアクセスのテーブルにいくつかの項目を追加するプログラムを作成したいと思います。また、既存の項目のデータ型を変更する方法も教えていただけると助かります。
  • アクセスのテーブルに新しい項目を追加するコードを作成する方法を教えてください。現在のアクセスのテーブルにいくつかの項目を追加したいと思います。また、既存の項目のデータ型を変更する方法も知りたいです。
  • アクセスのテーブルに新しい項目を追加する方法について教えてください。現在のアクセスのテーブルに何個かの項目を追加したいです。また、既存の項目のデータ型を変更する方法も知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacob-wk9
  • ベストアンサー率36% (85/231)
回答No.3

原則的には#1の方#2の方のご回答に同意いたします。 ADOXを使うとは、大変難しい仕組みを知っていらっしゃるんですね。私は普段は、昔の知識のままDAOでやっていますので、今回初めて勉強させて貰いました。 ちなみに、社内に配布済みのプログラムのテーブルを変更したいということですが、そういう案件ですとSQLサーバーのデータを共有しているわけではないのですか。もしくは、サーバーのデータを共有しているほかに、作業用にテンポラリーな意味合いのローカルテーブルを持たせている、とか。もちろん新しい接続形式のほうが、VB.NETとの互換性が高いので有効だと思いますが、私だったら、前のバージョンのプログラムを元に、新しい器となるテーブルと元のテーブルから新しい器にコピーするクエリーを作っておき、「クエリー実行→元のテーブルを別名にする→新しいテーブルを元のテーブル名にする」の一連の動作をVBAで書いて、ボタンを作って配布し、使用者に実行してもらいますね。 さて、本題ですが、私が再現して動くところまでやったらこうなりました。 (ACCESS2010しか持ってないので、エンジンは元の.Jet.OLEDB.4.0で読み替えてください。) Private Sub コマンド0_Click() Beep If (MsgBox("データをアップデートします!!") = 7) Then End If Dim CatDB As ADOX.Catalog Set CatDB = New ADOX.Catalog CatDB.ActiveConnection = "provider=Microsoft.ACE.OLEDB.12.0;Data source=c:\Users\XXXX\Database2.accdb" Dim tbl As ADOX.Table Dim colAdo As ADOX.Column Dim strCon As String Dim lIdx As Long Set tbl = CatDB.Tables("区画1") '変更か削除したいフィールド 'CurrentProject.Connection.Execute "ALTER TABLE [区画1] ALTER COLUMN 場所 TEXT(255)" '以下追加したいフィールド Set colAdo = New ADOX.Column With colAdo .Name = "場所ドライブ" .Type = adVarWChar .Attributes = adColNullable End With tbl.Columns.Append colAdo (省略) Set colAdo = New ADOX.Column With colAdo .Name = "区画図" .Type = adVarWChar .Attributes = adColNullable End With tbl.Columns.Append colAdo '質問ではカットされてましたが実際ではお忘れなく End Sub 手直ししたのは基本的に最初のほうだけですので、おそらくADODBとADOXの関係性というか、使用法が違うのかなと思いました。あくまで、ADO素人の意見ですので、ご了承ください。

その他の回答 (3)

  • jacob-wk9
  • ベストアンサー率36% (85/231)
回答No.4

質問読み返して気づきましたが、今「場所」という名前のカラムがあるテーブルに、 同じく「場所」という名前のカラムを追加しようとしていないですよね。 それはエラーが出てストップします。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

テーブルの移行はテーブル構造を直接変更するのではなく 1.テーブルのバックアップ 2.元テーブルの削除 3.新テーブルの作成 4.新テーブルにバックアップからインサート のようなSQLを順に実行するようにした方が 簡単・安全かと思います。 場所項目ですが、 OLEオブジェクト型のデータ内容はイメージデータ ではないでしょうか。 その場合テキスト型への変換はできないのでは。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

回答ではないです。 基本的にテーブルの項目は固定で持つべきもので 安易に追加、削除をするのもではないです。 追加・削除をプログラムでしようとするからには フレキシブルで項目を持ちたいのではないかと 思いますが、そのためにクエリがあります。 もう一度テーブルの設計がら見直してはいかがでしょう。

ynet
質問者

お礼

ありがとうございます。 フレキシブルで項目を持ちたいのではなく 何台もあるパソコンにあるアクセスのデータのテーブル項目を修正したいのですが・・・ 1台づつ修正するのが面倒なので書き換えできるプログラムを作ったのですが だめなんです・・・ お手数おかけしました。 祥子

関連するQ&A