そのため、以前にも同様の質問があったことは知っていますが、特定の状況に対する明確な答えを見つけることができませんでした. ASP.NET (Visual Web Developer) を使用しており、1 つのフォームから 2 つの別々のテーブルにデータを挿入する必要があります。これは私のデータソースです:
<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 つの挿入ステートメントを使用してみましたが、SQL ステートメントの後に余分な文字があるというエラーが表示されます。セミコロンを取り出してみましたが、セミコロンがありませんと表示されます。このコントロールを使用して、一度に 2 つのテーブルに挿入することはできますか? そうでない場合、どうすればこれを回避できますか?
アップデート:
さて、コードビハインドで試してみましたが、正しくやったとは思いません。今、このエラーが発生しています:
「/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で、テキストボックスから値を取得していません。私はおそらく何か明白なことを忘れてしまったのでしょう。