- 題名: 【C#】ADOXを使ったMDBファイル、フィールドサイズ指定について
- 日時: 2011/05/17 17:12:58
- ID: 28580
- この記事の返信元:
- (なし)
- この記事への返信:
- [28581] Re[1]: 【C#】ADOXを使ったMDBファイル、フィールドサイズ指定について2011/05/18 9:03:00
- ツリーを表示
■No28580に返信(talmanさんの記事) Columns.Appendメソッドの第1引数にはColumnオブジェクト、またはStringオブジェ クトを指定することができる。 Column.DefinedSizeプロパティの既定値は0である。 Append メソッド (Columns) http://msdn.microsoft.com/ja-jp/library/cc389634.aspx DefinedSize プロパティ http://msdn.microsoft.com/ja-jp/library/cc389686.aspx 以上の仕様から思いっきり推測ですが。 Columns.Appendメソッドの第1引数にColumnオブジェクトを指定する場合、Column.A ppendメソッドは、第1引数のColumn.DefinedSizeプロパティを第3引数のDefinedSizeよりも優先する。 Columns.AppendメソッドはColumn.TypeプロパティがadVarCharであり、かつColumn.D efinedSizeが0であればColumn.DefinedSizeプロパティに255を設定する。 ということではないでしょうか。
分類:[.NET]
お疲れ様です。
質問をお願い致します。
以下のようなメソッドを作成し、MDBファイル、TBLの作成を行っております。
@のメソッドですと、正常にMDBファイルは出力できるのですが、
フィールドサイズが強制的に255桁になってしまいます。
Aのメソッドですと、8桁に設定できるのですが、なぜなのでしょうか?
@メソッド
public void CreateTbl(CatalogClass catalog)
{
// テーブルを作成する(T_HD_M_ITEM_TYPE)
ADOX.TableClass table = new ADOX.TableClass();
table.ParentCatalog = catalog;
table.Name = "TEST_TABLE";
// カラムの作成(TEST_CD)
ADOX.ColumnClass columnItemTypeCd = new ADOX.ColumnClass();
columnItemTypeCd.ParentCatalog = catalog;
//列名を設定
columnItemTypeCd.Name = "TEST_CD";
//型、桁数を設定
table.Columns.Append(columnItemTypeCd, ADOX.DataTypeEnum.adVarChar, 8);
//プライマリーキーの設定
table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "TEST_CD", "", "");
catalog.Tables.Append(table);
}
Aメソッド
public void CreateTbl(CatalogClass catalog)
{
// テーブルを作成する(T_HD_M_ITEM_TYPE)
ADOX.TableClass table = new ADOX.TableClass();
table.ParentCatalog = catalog;
table.Name = "TEST_TABLE";
// カラムの作成(TEST_CD)
ADOX.ColumnClass columnItemTypeCd = new ADOX.ColumnClass();
columnItemTypeCd.ParentCatalog = catalog;
//列名を設定
columnItemTypeCd.Name = "TEST_CD";
//桁数を設定
columnItemTypeCd.DefinedSize = 8;
//型を設定
table.Columns.Append(columnItemTypeCd, ADOX.DataTypeEnum.adVarChar, columnItemTypeCd.DefinedSize);
//プライマリーキーの設定
table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "TEST_CD", "", "");
catalog.Tables.Append(table);
}
大変申し訳ないのですが、アドバイスをお願い致します。