• ベストアンサー

アクセスでフィールド入替えのVisualBasic

アクセス2000で作成したテーブルに現在「場所」というフィールドがあります。 このフィールドのデータ型を「OLEオブジェクト」から「テキスト型」に変える「VisualBasic」の書き方を教えてください。 [現在ある"場所"を削除してから・・・ tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "場所" .Type = adVarWChar .Attributes = adColNullable End With 上記を追加する形になるのでしょうか? お願いいたします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。ADOなので、 CurrentProject.Connection.Execute "ALTER TABLE テーブル名 ALTER COLUMN 場所 TEXT(255)"

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

DoCmd.RunSQL "ALTER TABLE テーブル名 ALTER COLUMN 場所 TEXT(255)" をコードの中で実行する。

関連するQ&A

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

    現在作成済みのアクセスのテーブルにいくつかの項目を追加するプログラムを作っています。 「Name = "場所ドライブ"」 「.Name = "区画図ドライブ"」 「.Name = "区画図"」 以上の項目をテキスト型で追加したいのです。 同時に現在ある「Name = "場所"」というはすでに存在する項目を「OLEオブジェクト型」から「テキスト型」に変更したいのです。 単純に「Name = "場所"」をテキスト型で追加したコードを作成したら動きません。 どなたか助けていただけますか。下記にコードを書きます。                                          祥子 Private Sub コマンド1_Click() Beep If (MsgBox("データをアップデートします!!") = 7) Then End If Dim cnn As New ADODB.Connection Dim catDB As New ADOX.Catalog Dim colAdo As ADOX.Column Dim tbl As ADOX.Table Dim strCon As String Dim lIdx As Long strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" strCon = strCon & "Data Source=c:\ynet\Hz2data1.mdb" cnn.Open strCon catDB.ActiveConnection = cnn 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 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

  • アクセス2000のデータベースにテーブルを追加して、フィールドを作成したい 

    アクセス2000のデータベースがあります。 このファイル「c:\ynet\Hz2data1.mdb」に新しいテーブル「会費管理2」を追加して、フィールドを作成したいのです。 現在は「会費管理2」テーブルがあるのを前提に下記のように書き込みしてみましたが・・・ 新しく「会費管理2」テーブルを指定したファイル「c:\ynet\Hz2data1.mdb」に作成してフィールドも作成するのを同時にできるのかしら? どなたか助けていただければ幸いです。                                           かしこ Private Sub コマンド1_Click() Beep If (MsgBox("データをアップデートしますが宜しいですか? 作業は一瞬で終わりますよ!!") = 7) Then End If Dim cnn As ADODB.Connection Dim catDB As ADOX.Catalog Dim tbl As ADOX.Table Dim colAdo As ADOX.Column strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" strCon = strCon & "Data Source=c:\ynet\Hz2data1.mdb" Set cnn = CurrentProject.Connection Set catDB = New ADOX.Catalog catDB.ActiveConnection = cnn Set tbl = New ADOX.Table tbl.Name = "会費管理2" '以下追加したいフィールド Set colAdo = New ADOX.Column With colAdo .Name = "個別台帳ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "会費名称ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "会費区分ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "年度" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "入金日" .Type = adDate .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "入金額" .Type = adCurrency .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = Nothing Set tbl = Nothing Set catDB = Nothing cnn.Close End Sub

  • アクセス2000で作成したデータベースにテーブルを追加したいのです 「Set tbl = catDB.Tables![会費管理2]」 

    アクセスで作成したデータベースがあります。 簡単にテーブルを追加するプログラムを作成したいのですが可能かしら? 現在[会費管理2]というテーブルが無いので[会費管理2]と言うテーブルを追加して、そのテーブルに各フィールドを作成したいのです。 作成したSet tbl = catDB.Tables![会費管理2] に '以下追加したいフィールド Set colAdo = New ADOX.Column With colAdo .Name = "数値1" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "数値2" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "数値3" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "日付" .Type = adDate .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "金額" .Type = adCurrency .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = Nothing Set tbl = Nothing Set catDB = Nothing cnn.Close End Sub

  • ADOX 複数回フィールドを定義することは出来ませ

    アクセス2010ですが アクセスの仕様を見ると テーブル内のフィールド数の最大値は255なのですが ADOXでVBAでテーブルを作成してるのですが 実行時エラー -2147217858 複数回フィールドを定義することは出来ません。 と言うエラーになり、テーブルが作れません。 vbaコードの一部は Set cat = New ADOX.Catalog Set tbl = New ADOX.Table cat.ActiveConnection = CurrentProject.Connection tbl.Name = "test" For i = LBound(tmp) To 200 ' UBound(tmp) Col = tmp(i) tbl.Columns.Append Col, adVarWChar, 20 tbl.Columns(Col).Attributes = adColNullable Next i cat.Tables.Append tbl です。 ためしに To 200 を To 100 にしても同じようなエラーになりました。 何でエラーになるのでしょう???

  • ADOX Append Null許可フィールド作成

    お世話になります。 既存テーブルにフィールドを追加したところNull不許可で作成されました。 Dim CAT As ADOX.Catalog CAT.Tables("TM住所録").Columns.Append "年賀状", adVarWChar, 2 検索したところ次のようなサンプルがあったのですが、下のエラーになります。 CAT.Tables("TM住所録").Columns("年賀状").Attributes = adColNullable 実行時にエラー -2147217887 複数ステップのOLE DBの操作でエラーが発生しました。 各OLE DBの状態の値を確認して下さい。作業は終了しませんでした。 appendで追加したフィードをNull許可にするにはどうしたらいいでしょうか? よろしくお願いいたします。

  • ADOX フィールドのRequiredプロパティを

    ADOX フィールドのRequiredプロパティをFalseにしたい アクセスです。 Sub test() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim idx As ADOX.Index Dim varRet As Variant Dim strMsg As String Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection Set tbl = New ADOX.Table tbl.Name = "test" tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる tbl.Columns.Append "氏名", adVarWChar, 50 cat.Tables.Append tbl 主キーを作る Set idx = New ADOX.Index idx.Name = "Primary" idx.PrimaryKey = True idx.Columns.Append "氏名ID" tbl.Indexes.Append idx MsgBox tbl.Name & "テーブルを作成しました。" Set cat = Nothing End Sub ********************************************************** 上記のコードでテーブルを作ると、RequiredをTrueにしてないのに、 実際にテーブルにデータを入れてる時に、NULLにしようとすると、 ********************************************************** フィールドに必要なプロパティが True に設定されているため、 このフィールド '<フィールド名>' には Null 値は挿入できません。値を入力してください。 ********************************************************** となります。 Requiredプロパティの規定値は、False になってますが、 なぜか値を要求されてしまいます。 ADOXで上記のコードに追加してRequiredをFalse にする方法を教えてください。、

  • ハイパーリンク型を指定することは可能ですか?

    VBAでテーブル(フィールド)を作る際にハイパーリンク型を指定することは可能ですか? Sub test() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection Set tbl = New ADOX.Table tbl.Name = "テーブル" tbl.Columns.Append "URL", adVarWChar cat.Tables.Append tbl Set cat = Nothing End Sub アクセスでこんな感じで作ってるのですが adVarWCharの部分をハイパーリンク型にしたいです。 しかし http://www.accessclub.jp/ado/adox/06.html を見てるとデータ型にハイパーリンク型が見当たらないのですが、不可能という事でしょうか?

  • ADOXでAccessのファイルを作る

    ADOXで下記のようにAccessファイルを作ろうと思うのですが Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table Dim col As New ADOX.Column Dim idx As New ADOX.Index cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & ここには作成先のパス & ";" _ & "Jet OLEDB:Engine Type=4;" tbl.Name = "T_連絡先" col.Name = "連絡場所" col.Type = adVarWChar col.DefinedSize = 20 col.ParentCatalog = cat col.Properties("Jet OLEDB:Allow Zero Length") = True tbl.Columns.Append col Set col = Nothing col.Name = "連絡番号" col.Type = adVarWChar col.DefinedSize = 13 col.ParentCatalog = cat col.Properties("Jet OLEDB:Allow Zero Length") = True tbl.Columns.Append col Set col = Nothing cat.Tables.Append tbl Set tbl = Nothing 4台ある中の2台のPCでは問題なくファイルが作成されましたが、残り2台に関してはファイルは作成されるもののテーブルは作成されませんでした。 コードを削除しながらテストしてみると、"連絡場所"フィールドに問題があるらしく、"連絡場所"フィードのコードを削除すると問題なくテーブルも作成されます。 しかも、不思議なことにコードを変えずにフィールド名"連絡場所"を"連絡場所1"とするとテーブルは問題なく作成されます。マシンはすべてWin2000ProにVB6SP5です。とんでもなく初歩的なところでミスをしているような感じもしますが、まったく原因がつかめませんので、どうかよろしくお願いいたします。

  • エクセルからMySQL

    すみません、エクセルからMySQLのテーブル作成をしたいのですが、うまくいきません。 --------------------------------------------------------- Sub aaa() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim cnn As New ADODB.Connection Set cat = New ADOX.Catalog cat.ActiveConnection = "provider = MSDASQL.1;data source=test;" cnn.Open "Provider=MSDASQL.1;Data Source=test;" Set tbl = New ADOX.Table tbl.Name = "aaa" Set tbl.ParentCatalog = cat With tbl .Columns.Append "ID", 4 .Columns.Append "名前", 4 End With End Sub ----------------------------------------------------------- エクセルからACCESSへの接続の参考ホームページを見ながらやっているので、MySQLの場合これであっているのか分からないです。実行してもエラーがでないのですが、確認してみるとテーブルが作成されていないです。どなたか分かる方教えてください。お願いします。 上のコードは、MySQLの【test】というデータベースに【aaa】というテーブルを作成するというつもりで書いているのですが、間違っていますでしょうか?

  • データ型をメモ型にして既存テーブルにフィールドを追加したい(ACCESS ADOX)

    Sub test() Dim cat As New ADOX.Catalog Dim tb As New ADOX.Table cat.ActiveConnection = CurrentProject.Connection 'テーブルを開く Set tb = cat.Tables("テーブル1") tb.Columns.Append "フィールド1", ad○○ Set cat = Nothing Set tb = Nothing End Sub これで既存のテーブルにフィールドを追加できることを知ったのですが データ型をメモ型にするにはどの「ad○○」にすればいいのでしょう? (文字数が多いためテキスト型では収まりません) オブジェクトブラウザで見ても、多すぎてどれなのかわかりません。 ご教授よろしくお願い致します。

専門家に質問してみよう