私は学校プロジェクトを持っており、互いに関係のある3つのテーブルにデータを追加する必要があります。私の問題は、プライマリキーが他のキーと関連しており、エラーが発生していることです。追加情報: 'tblRubriek'テーブルに関連するレコードが必要なため、レコードを追加または変更できません
これは私が、私はこのエラー
型 'System.Data.OleDb.OleDbException' の例外が発生したSystem.Dataに受け取るか
VerkopenCommArtikel.ExecuteNonQuery()
でProtected Sub bntVerzenden_Click(sender As Object, e As EventArgs) Handles bntVerzenden.Click Dim intGebruikersID, intRubriekID As Integer Dim VerkopenConn As New OleDb.OleDbConnection Dim VerkopenCommArtikel, VerkopenCommGebruiker, GebruikersIDComm, RubriekIDComm As New OleDb.OleDbCommand VerkopenConn.ConnectionString = My.Settings.SvShopConnection VerkopenCommArtikel.Connection = VerkopenConn VerkopenCommGebruiker.Connection = VerkopenConn GebruikersIDComm.Connection = VerkopenConn RubriekIDComm.Connection = VerkopenConn 'Gebruiker gegevens aan de database toevoegen VerkopenCommGebruiker.CommandText = "INSERT INTO tblGebruiker (GebruikersNaam, GebruikersVoornaam, GebruikersEmail, GebruikersGSM) VALUES (@GebruikersNaam, @GebruikersVoornaam, @GebruikersEmail, @GebruikersGSM)" VerkopenCommGebruiker.Parameters.AddWithValue("@GebruikersNaam", txtNaam.Text) VerkopenCommGebruiker.Parameters.AddWithValue("@GebruikersVoornaam", txtVNaam.Text) VerkopenCommGebruiker.Parameters.AddWithValue("@GebruikersEmail", txtEmail.Text) VerkopenCommGebruiker.Parameters.AddWithValue("@GebruikersGSM", txtGsm.Text) 'GebruikersID uit de database halen GebruikersIDComm.CommandText = "SELECT tblGebruiker.GebruikersID FROM tblGebruiker WHERE tblGebruiker.GebruikersNaam = @Naam AND tblGebruiker.GebruikersVoornaam = @VNaam;" GebruikersIDComm.Parameters.AddWithValue("@Naam", txtNaam.Text) GebruikersIDComm.Parameters.AddWithValue("@VNaam", txtVNaam.Text) 'RubriekID uit de database halen RubriekIDComm.CommandText = "SELECT tblRubriek.RubriekID FROM tblRubriek WHERE tblRubriek.RubriekNaam = @RubriekNaam" RubriekIDComm.Parameters.AddWithValue("@RubriekNaam", lstRubriek.SelectedItem.ToString) 'Artikel gegevens aan de database toevoegen VerkopenCommArtikel.CommandText = "INSERT INTO tblArtikel (ArtikelBeschrijving, ArtikelPrijs, RubriekID, ArtikelAankoopdatum, ArtikelTekoopgezet, ArtikelBeschikbaar, GebruikersID) VALUES (@ArtikelBeschrijving, @ArtikelPrijs, @RubriekID, @ArtikelAankoopdatum, @ArtikelTekoopgezet, @ArtikelBeschikbaar, @GebruikersID)" VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelBeschrijving", txtArtikelBeschrijving.Text) VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelPrijs", txtArtikelPrijs.Text) VerkopenCommArtikel.Parameters.AddWithValue("@RubriekID", intRubriekID) VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelAankoopdatum", CalAankoop.SelectedDate) VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelTekoopgezet", calVerkoop.SelectedDate) VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelBeschikbaar", True) VerkopenCommArtikel.Parameters.AddWithValue("@GebruikersID", intGebruikersID) If VerkopenConn.State = ConnectionState.Closed Then VerkopenConn.Open() VerkopenCommGebruiker.ExecuteNonQuery() intGebruikersID = Integer.Parse(GebruikersIDComm.ExecuteScalar) intRubriekID = Integer.Parse(RubriekIDComm.ExecuteScalar) VerkopenCommArtikel.ExecuteNonQuery() End Sub
を実行している私のコードです.dllはユーザーコードで処理されませんでした。
追加情報: 'tblRubriek'テーブルに関連するレコードが必要なため、レコードを追加または変更することはできません。すでに設定されている後にあなたが
intRubriekID
値を取得するパラメータ値VerkopenCommArtikel.Parameters.AddWithValue("@RubriekID", intRubriekID)
を
intRubriekID = Integer.Parse(RubriekIDComm.ExecuteScalar)
を使用している
データベースで親テーブルにPKが生成されている場合は、そのテーブルを保存する前に子テーブルに格納するために取得する必要があります。ここの私のガイドを参照してください:http://www.vbforums.com/showthread.php?659052-Retrieve-Access-AutoNumber-Value-After-Insert&highlight= – jmcilhinney
@jmcilhinneyありがとう!私はすでにその問題を解決することができたと思うが、今私はこの問題に遭遇した。 –
'Integer'に変換する前に、' ExecuteScalar'が 'DBNull'を返したかどうかを確認する必要があります。 –