2010-12-15 9 views
1

これまで同様の質問があったことは知っていますが、私の具体的な状況についてはっきりとした答えが見つかりませんでした。私はASP.NET(Visual Web Developerで)を使用しているので、あるフォームから2つのテーブルにデータを挿入する必要があります。これは私のデータソースです:ASP.NETとSQL - 複数のテーブルにデータを挿入していますか?

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/courseinfo.mdb" 
    SelectCommand="SELECT * FROM [tableCourse], [tableFaculty]" 
    InsertCommand="INSERT INTO [tableCourse] 
    ([department], [name_first], [name_last], [prefix], 
    [course_number], [credits], [title], [description]) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?); INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email]) 
    VALUES (?, ?, ?, ?)"> 

は、だから、私は2つのINSERT文を使用して試してみた見て、それだけで余分な文字は、SQL文の後があるというエラーで戻ってきます。私はセミコロンを取り除こうとしましたが、それから私はセミコロンがないと言います。このコントロールを使用して一度に2つのテーブルに挿入することは可能ですか?そうでなければ、どうすればこの問題を回避できますか?

UPDATE:

さて、分離コードでそれを試してみましたが、私は右のそれをやったとは思わない、今では私は、このエラーを与えています:「/ CCC」アプリケーションで

サーバーエラー。 インデックスまたは主キーにNull値を含めることはできません。 説明:現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.Data.OleDb.OleDbException:インデックスまたは主キーにNull値を含めることはできません。

ソースエラー:

Line 87: 
Line 88:   AccessDataSource1.InsertCommand = "INSERT INTO [tableCourse] ([department], [name_first], [name_last], [prefix], [course_number], [credits], [title], [description]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" 
Line 89:   AccessDataSource1.Insert() 
Line 90: 
Line 91:   AccessDataSource1.InsertCommand = "INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email]) VALUES (?, ?, ?, ?)" 

ライン89はハイライト表示されています一つです。だから私はそれが挿入しようとしていると思っているが、何らかの理由で値がnullである、それはテキストボックスから値を取っていないです。 私はおそらく何かを明らかに残した、私は知らない、私はこれで本当に新しいです。

+0

あなたのコードの背後には、約16個ではなく約8個のパラメータしか認識されていません。 –

+0

私はncakmakに同意しています。おそらくこのようにするのではなく、ボードバックでこれを試みるべきでしょう。これは非常に不器用でエラーが発生しやすい方法です。さらに、コードによって知られていないパラメータの問題もあります。 –

+0

コードが正しいようです。プライマリキーフィールドの名前は何ですか?オートインクリメントに設定されていますか? –

答えて

1

なぜコードビハインドで試してみませんか?

AccessDataSource1.InsertCommand = "First INSERT Statement"; 
AccessDataSource1.Insert(); 

AccessDataSource1.InsertCommand = "Second INSERT Statement"; 
AccessDataSource1.Insert(); 
関連する問題