2011-12-23 2 views
0

私持っている私は、属性セットの行に「COM例外が未処理だった」例外スロー次のコード:私が間違っているのは何自動番号フィールドを設定しますか?

var tbdefinition = dbase.TableDefs["MyDB"]; 
var field_auid = tbdefinition.Fields["myColumn"]; 
field_auid.Attributes = 4; 

を?

+0

これを実行したり、例外をキャッチしようとしましたか?たぶんそれはあなたに詳細を与えるでしょう。 – Xaisoft

+0

デバッガを使用して、その例外に詳細情報を与えるInnerExceptionがあるかどうかを確認します。 '4'はここで有効な値ですか?そして、これがオートナンバーフィールドとどう関係しているのかを説明してください(質問を編集してください)。 –

+0

申し訳ありませんが、4はautoNumber属性をtrueに設定するenum VBA値の数値です。 – Pantelis

答えて

1

Jetデータベースでは、テーブルに既にレコードが含まれている場合、既存のフィールドのタイプを自動番号に変更することはできません。 ただし、自動番号フィールドである新しいフィールドを追加できます。

+0

遅い回答をおかけして申し訳ありませんが、自宅で新しいシステムをセットアップするのに数時間かかりました。 その@Olivierをクリアしてくれてありがとう。 私がDAOになったのは、OledbCommand ALTERコマンドを実行したときにフィールドがオートナンバーネーションに変更されていないことが分かったからです。それは私が作成した別のテーブルのトリックをしたので変です。私のデータベースには2つのテーブルがあり、そこにはもう一方の主キーに対する外部キーがあります。私のコードの以下の説明を簡単にするために、ParentとChildと呼ぶことができます。 – Pantelis

+0

1)Parent1を作成し、PKを設定する。次に、DAOを使用してBITフィールドをチェックボックスに設定し、異なるデータを持つ同じデータベースの別のコピーのParent +レコードのレコードを保持するDataSetからテーブルを埋めます。 2)同様の方法でChild2を作成する。 3)テーブルを変更するオートナンバーとして設定したいフィールド。 4)テーブルの親と子を削除し、Parent1をParentとChild1にChildの名前を変更します。 5)最後に、FKを子テーブルに追加します。 – Pantelis

+0

奇妙なもののカップル。私の親のフィールドは正常にオートナンバーに変わりますが、私の子供はそうしません。まあ、実際にはそうです!しかし、Child1からChildへのテーブルの名前を変更すると、属性が失われるようです。 – Pantelis