• ベストアンサー

テーブル作成時のプロパティーの設定方法

vb からアクセスのテーブル作成時のプロパティーの設定方法を教えてください。 値要求 のプロパティーを Falseにしたいのですが、DAOでは「フィールドの Required プロパティにアクセスするには、DAO の Required プロパティを使います。」だそうですが ADO、ADOX での設定の仕方がわかりません。 知っている方がおられたら教えて下さい。

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

僕のPCのMSDNにあったのですが、ネット上のMSDNで同じページが見つからなかったので、コピペします。 ParentCatalog の例 次のコードで、テーブルをカタログに追加するより前にプロバイダに固有のプロパティにアクセスするための、ParentCatalog プロパティの使用法を示します。 Sub SetAllowZeroLength()   Dim cnn As New ADODB.Connection   Dim cat As New ADOX.Catalog   Dim tbl As New ADOX.Table   Dim col As New ADOX.Column   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _    "Data Source= c:\Program Files\" & _    "Microsoft Office\Office\Samples\Northwind.mdb;"   Set cat.ActiveConnection = cnn   tbl.Name = "MyTable"   tbl.Columns.Append "Column1", adInteger   Set col.ParentCatalog = cat   col.Name = "Column2"   col.Type = adVarWChar   col.Properties("Jet OLEDB:Allow Zero Length") = True   tbl.Columns.Append col   cat.Tables.Append tbl End Sub

masa__2002
質問者

お礼

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

関連するQ&A

  • 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 にする方法を教えてください。、

  • VBScriptでAccessMDBにテーブルを作成時、値要求はいのフィールドが作成できない。

    Access97で使用しているデータベースに、 スクリプトでテーブルを作成する必要が出てきたので、 作成してみたのですが、プロパティで値要求を「はい」に設定しているにも関わらず、 設定する事が出来ませんでした。 設定の仕方が悪いのでしょうか? 下記にサンプルソースを上げました。 教えて頂けると助かります。 よろしくお願い致します。 -------------------------------------- Option Explicit 'データベースパス Dim strDBPath Dim strDBName strDBName = "db1.mdb" Dim strDBFullPath 'ファイルが存在する場所 strDBFullPath = Replace(WScript.ScriptFullName,WScript.ScriptName, "") 'FileSystemObject Dim objFS 'SQL文 Dim strSQL 'テーブル名 Const strTBL = "テスト" 'ADOX用定義 Const adBoolean = 11 'ブール値型 Const adColFixed = 1 '値要求 はい Const adColNullable = 2 '値要求 いいえ Dim objCat Dim objTbl Dim objCol 'ADOオブジェクトを作成します Set objCat = WScript.CreateObject("ADOX.Catalog") Set objTbl = WScript.CreateObject("ADOX.Table") Dim strJoin strJoin = "" strJoin = strJoin & "Provider=Microsoft.Jet.OLEDB.4.0;" strJoin = strJoin & "Data Source=" & strDBFullPath & strDBName & ";" strJoin = strJoin & "Jet OLEDB:Engine Type=5;" objCat.ActiveConnection = strJoin 'テーブル名を定義します objTbl.Name = strTBL objCat.Tables.Append objTbl '■列の設定 'フラグ Yes/No型 はい - Set objCol = WScript.CreateObject("ADOX.Column") With objCol ' フィールド名 .Name = "フラグ" ' データ型 .Type = adBoolean ' 値要求 はい .Attributes = adColFixed End With objCat.Tables(strTBL).Columns.Append objCol Set objCol = Nothing Set objTbl = Nothing Set objCat = Nothing

  • ADO DAO ADOX 目的による使い分け

    ADOとADOXの利用目的は、 ADO→レコードの追加、編集、削除 ADOX→テーブル、フィールド、クエリの追加、編集、削除 と認識しています。 では DAOはなんでしょう?

  • Access2000、2002でのテーブル作成のプロパティで

    テーブルを作成し、たとえば“氏名を入力する際に空白にしてはいけない”という 設定にしたいのですが、  人に聞いたところ、2通りの返事が返って来ました。 プロパティで、値要求をはいとするというのと、入力規則のところにIs Not Nullとするという2つの返事が返って来ました。 この2つにはどういう違いがあるのでしょうか? また、どっちがいいのでしょうか?

  • Access 2000 の VB での テーブル作成について質問です。

    下記のようにAccess 2000のVBからDAOを使ってテーブルを作っておりますが、 作るフィールドに規定値の設定もVBからできないのでしょうか?DAOだと無理なのでしょぅか? 教えてください Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim flID As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("テーブル") Set flID = tbdef.CreateField("ID", dbInteger)   tbdef.Fields.Append flID   db.TableDefs.Append tbdef db.Close: Set db = Nothing

  • Accessのテーブル定義作成をVBAから行う

    こんばんは フィールド定義の方法はネットで検索してある程度分かりました。 しかし、次の指定が解りません。 値要求と空文字列の許可です。 指定しないとどちらもいいえになります。はいにするにはどうすればよいのでしょうか。 今は次のようにしています。 Dim Table As DAO.TableDef Dim Field As DAO.Field Set Field = Table.CreateField("フィールの名称", dbText, 文字列の長さ) Table.Fields.Append Field

  • MSアクセスのVBAでallowzerolengthを設定する方法

    MSアクセスのテーブルのプロパティにある 空文字文字列の許可-allowzerolengthというのがありますが VBAのDAOのなかでフィールドを追加した時にこのプロパティ を設定する記述がわかりますせん。教えてください。

  • DAOでテーブルを作成

    DAOでテーブルを作成したいのですが 主キーにしてオートナンバー型にするにはどうすればいいですか? Sub MyTableCreate() Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim Field1 As DAO.Field Dim Field2 As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("T_test") Set Field1 = tbdef.CreateField("ID", dbInteger) Set Field2 = tbdef.CreateField("氏名", dbText, 20) tbdef.Fields.Append Field1 tbdef.Fields.Append Field2 db.TableDefs.Append tbdef db.Close: Set db = Nothing End Sub これで、IDフィールドを主キーにしつつ、 dbIntegerではなくオートナンバー型にしつつ、 主キーを付与する方法を教えてください。 DAOのType プロパティのヘルプを見たのですがありませんでした。 今回は http://www.accessclub.jp/dao/20.html を参考にしました。

  • C#_ADOXでMDBファイル作成時、メモ型設定

    お疲れ様です。 質問をお願い致します。 Os:WindowsXp Access:Access2003 IDE:VidualStudio2008 C#_ADOXでMDBファイルの作成を行っております。 200桁以上の大きい桁数のデータを扱う列が欲しい為、列にメモ型の指定をして、TBLを作成したいと思っております。 メモ型を指定する為、データタイプを以下のように"ADOX.DataTypeEnum.adLongVarWChar"としておりますが、出力されたMDBファイルを確認すると、テキストになっております。 こちらのサイト様を参考にさせて頂いたのですが、設定方法が違うのでしょうか? http://www.accessclub.jp/ado/adox/06.html また、メモ型にした際に、400桁と指定することは可能でしょうか? //メイン処理 void main() { string DBSource = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\DB\\DB.MDB; Jet OLEDB:Engine Type=5"; // データソースの作成を行う ADOX.CatalogClass catalog = new ADOX.CatalogClass(); catalog.Create(DBSource); CreateTblClass createTblClass = new CreateTblClass(); createTblClass .CreateTbl(catalog); } //MDBファイル、テーブルの作成を行う public void CreateTbl(CatalogClass catalog) { // テーブルを作成する(TEST_TBL) ADOX.TableClass table = new ADOX.TableClass(); table.ParentCatalog = catalog; table.Name = "TEST_TBL"; /*TEST_CD列は、想定通り、テキスト型の8桁で列が作成できます*/ // テストコード列の作成(TEST_CD) ADOX.ColumnClass columnTestCd = new ADOX.ColumnClass(); columnTestCd.ParentCatalog = catalog; //列名を設定 columnTestCd.Name = "TEST_CD"; //桁数を設定 columnTestCd.DefinedSize = 8; //型を設定 table.Columns.Append(columnTestCd, ADOX.DataTypeEnum.adVarChar, columnTestCd.DefinedSize); /*問題のメモ型列*/ // 備考列の作成(BIKOU) ADOX.ColumnClass columnBikou = new ADOX.ColumnClass(); columnBikou.ParentCatalog = catalog; //列名を設定 columnBikou.Name = "BIKOU"; //桁数を設定 ※「フィールドサイズが長すぎます」とエラーになり400に設定できない為、200と暫定的に設定しております! columnBikou.DefinedSize = 200; //型を設定 table.Columns.Append(columnItemTypeDesc, ADOX.DataTypeEnum.adLongVarWChar, columnItemTypeDesc.DefinedSize); //プライマリーキーの設定 table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "TEST_CD", "", ""); catalog.Tables.Append(table); } 大変申し訳ないのですが、どうぞ、宜しくお願い致します。

  • Accessのテーブル作成クエリについて

    教えてください。 Accessで、Yes/No型のフィールドを含むテーブルをテーブル作成クエリで新しくテーブルを作成すると、そのYes/No型のフィールドの値がチェックボックスにならずにチェックされているところが-1に、ないところは0になってしまうのですが、チェックボックスのままで作成して欲しいのです。何か方法があるのでしょうか。

専門家に質問してみよう