- PR -

ACCESSに新規データが追加できない

1
投稿者投稿内容
ほこ
会議室デビュー日: 2003/12/17
投稿数: 10
投稿日時: 2003-12-17 02:36
はじめまして、ほこと申します。
現在、簡単な顧客登録システムをつくっています。

Accessのオートナンバーの初期値にデータが無いときは、登録できるのですが、初期値にデータがある二回目以降は下記のようなエラーが出て登録できません。オートナンバーが機能していないと思いますが、自分なりに色々試行錯誤しでも解決できません。
よろしくおねがいします。

[エラーメッセージ]
列 'Customer_ID' は一意であるように制約されています。値 '1' は既に存在します。

[開発環境]
ACCESS2000+VisualStudio.NET2000(VB.NET)でのASP.NETWebアプリケーション

[概要]
フォーム上のテキストボックスに名前を入れ、ボタンをクリックすればACCESS上にデータが追加されるという単純なものです。

[ACCESS]
テーブル名:Customer_T
フィールド名:Customer_ID(オートナンバー), Name(String)

[SQL]
SELECT Name, Customer_ID FROM Customer_T

[ソース]
Dim dr As DataRow = DataSet21.Tables("Customer_T").NewRow
OleDbConnection1.Open()
OleDbDataAdapter1.Fill(DataSet21)
OleDbConnection1.Close()
dr("Name") = TextBoxName.Text
DataSet21.Tables("Customer_T").Rows.Add(dr)
OleDbConnection1.Open()
OleDbDataAdapter1.Update(DataSet21)
OleDbDataAdapter1.Fill(DataSet21)
OleDbConnection1.Close()
DataBind()

エラーはDataSet21.Tables("Customer_T").Rows.Add(dr)の部分でおきています。
Customer_IDのAutoIncrementはTrueです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-17 06:01
Fillの直後にFillSchema(スペル不安)を入れてみてください。

Fillはデータを、FillSchemaは構成を取得します。Fillでは「この列はintegerである」ということはわかりますが、「AutoNumberである」ことまではわからないのです。


追加
Table.NewRowは、FillSchemaの後で。こっちが正解かも。。。

さらに追加
だ〜〜!!ちゃんと見ろ>Jitta
Fillの前にTable.NewRowしているので、「データが何もないからAutoNumberは1からだね」という状態です。だから、Fillの後にTable.NewRow

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-12-17 06:07 ]
ほこ
会議室デビュー日: 2003/12/17
投稿数: 10
投稿日時: 2003-12-17 14:56
返信ありがとうございます。

早速、Fillの後にTable.NewRowを追加してみたところアクセスにデータが無事、書き込まれていました。

これで、先に進めることができます。本当にありがとうございました。
1

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