DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】ADOXを使ったMDBファイル、フィールドサイズ指定について

環境/言語:[C# VisualStudio2008 NET Framework3.5]
分類:[.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);

}

大変申し訳ないのですが、アドバイスをお願い致します。
■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を設定する。

ということではないでしょうか。
■No28581に返信(もりおさんの記事)
> ■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を設定する。
>
> ということではないでしょうか。

もりおさん、お疲れ様です。
いつも、ご回答ありがとうございます。

もりおさんのご回答の考えで納得し、作業を進めたいと思います。
お忙しいところ、ご回答ありがとう御座いました。

以上、宜しくお願い致します。
■No28582に返信(talmanさんの記事)
> ■No28581に返信(もりおさんの記事)
>>■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を設定する。
>>
>>ということではないでしょうか。
>
> もりおさん、お疲れ様です。
> いつも、ご回答ありがとうございます。
>
> もりおさんのご回答の考えで納得し、作業を進めたいと思います。
> お忙しいところ、ご回答ありがとう御座いました。
>
> 以上、宜しくお願い致します。
>
申し訳御座いません。
解決のチェックを付け忘れていました。


解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板