- PR -

プロパティ 'Item' は 'ReadOnly' です。

投稿者投稿内容
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-01-19 16:23
るぱんです。

1.該当する行(★)をコメントアウトの上、実行
2.出来上がったMDBのスキーマがNullを許す

以上の場合でコメントアウトのみで実行可能。

上記の方法でNullを許さない設定だったの場合、
→カラムを追加する方法を整理して書き直す。

のが良いでしょう。
個人的には後に書いたやり方を最初からするようにします。
時間と成果物の精度を考慮して作ってみてください。

以上
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-19 16:28
With cat.Tables(strTable).Columns
 Dim col As DataColumn = .Item("DataStorage_Id")
 col.AutoIncrement = True
End With

だと、どうです?
#っつうか、DataColumn.Propertiesというプロパティって、ある?

 コレクションを直接いじるのは、別のスレッドでもありましたが、あまり良くないみたい。

↓おお!なるほど。MSDN確認

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-19 16:46 ]
架空兎
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 78
お住まい・勤務地: さいたま氏
投稿日時: 2004-01-19 16:39
# ADOX は詳しくないのですが。。。

参考にしたコードは恐らく VB6.0 以前のコードだと思われますので、
以前の VB では"既定メンバ"というものが使え、ADOX.Property#Value プロパティは
それになっているため、".Value"を省略することができたのですが、
.NET では既定メンバを使用することはできない(多分^^;)ので、

.Item("DataStorage_Id").Properties("Nullable").Value = True

と記述する必要があるのだと思われます。


[ メッセージ編集済み 編集者: 架空兎 編集日時 2004-01-19 16:47 ]

[ メッセージ編集済み 編集者: 架空兎 編集日時 2004-01-19 17:03 ]
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-01-19 16:53
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200209_02090023.html
こんな物を発見!
かつや
ベテラン
会議室デビュー日: 2004/01/19
投稿数: 70
投稿日時: 2004-01-19 17:16
>こんな物を発見!

ありがとうございます。
下記のようにコードを修正して、解決いたしました。

' 【DataStorage】テーブル作成
tbl = New ADOX.Table
strTable = "DataStorage"
tbl.Name = strTable
cat.Tables.Append(tbl)
Dim col As New ADOX.Column
col.Name = "DataStorage_Id"
col.Type = ADOX.DataTypeEnum.adInteger
col.ParentCatalog = cat
col.Properties("Autoincrement").Value = True
tbl.Columns.Append(col)
col = Nothing
With cat.Tables(strTable).Columns
'col = .Item("DataStorage_Id")
'col.AutoIncrement = True
'.Item("DataStorage_Id").Properties("AutoIncrement").Value = True
'.Append("DataStorage_Id", ADOX.DataTypeEnum.adInteger)
.Append("Filename", ADOX.DataTypeEnum.adWChar, 255)
.Append("DefaultOrder_Id", ADOX.DataTypeEnum.adInteger)
.Append("Category_Id", ADOX.DataTypeEnum.adSmallInt)
.Append("SubCategory_Id", ADOX.DataTypeEnum.adSmallInt)
'.Append("Search_Keys", ADOX.DataTypeEnum.adLongVarWChar)
End With
col = New ADOX.Column
col.Name = "Search_Keys"
col.Type = ADOX.DataTypeEnum.adLongVarWChar
col.ParentCatalog = cat
col.Attributes = ADOX.ColumnAttributesEnum.adColNullable
tbl.Columns.Append(col)
col = Nothing
tbl = Nothing

Value が省略できなくなってたってことと、Atributesで設定すべき項目もあったということが原因だったかと。。。

皆様のご協力、大変感謝いたします。

スキルアップ/キャリアアップ(JOB@IT)