2016-05-05 6 views
1

私の学校プロジェクトは、Microsoft Visual StudioでASP.net & vb.netを使用しています。ASP.netを使用してMS Accessにデータを追加する

私の問題は、MS Accessデータベースファイルに挿入されたウェブサイトに埋め込まれたデータを追加する方法が実際には得られないということです。問題は、情報が2つのテーブルに分散されていることです。

私は2つの異なるSQLステートメントを使用しようとしましたが、各テーブルに1つのテーブルを使用しようとしましたが、これはうまくいきません。データベースのフォーマットを少し変更しました。問題は2つのテーブルの間の関係を入力することですが、どのようにすればよいか分かりません。

私は2番目ExecuteNonQueryでこのエラーで今

Protected Sub bntVerzenden_Click(sender As Object, e As EventArgs) Handles bntVerzenden.Click 



    Dim VerkopenConn As New OleDb.OleDbConnection 
    Dim VerkopenCommArtikel, VerkopenCommGebruiker As New OleDb.OleDbCommand 

    VerkopenConn.ConnectionString = My.Settings.SvShopConnection 
    VerkopenCommArtikel.Connection = VerkopenConn 
    VerkopenCommGebruiker.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) 

    'Artikel gegevens aan de database toevoegen 
    VerkopenCommArtikel.CommandText = "INSERT INTO tblArtikel (ArtikelBeschrijving, ArtikelPrijs, RubriekNaam, ArtikelAankoopdatum, ArtikelTekoopgezet, ArtikelBeschikbaar) VALUES (@ArtikelBeschrijving, @ArtikelPrijs, @RubriekNaam, @ArtikelAankoopdatum, @ArtikelTekoopgezet, @ArtikelBeschikbaar)" 

    VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelBeschrijving", txtArtikelBeschrijving.Text) 
    VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelPrijs", txtArtikelPrijs.Text) 
    VerkopenCommArtikel.Parameters.AddWithValue("@RubriekNaam", lstRubriek.SelectedItem.ToString) 
    VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelAankoopdatum", CalAankoop.SelectedDate) 
    VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelTekoopgezet", calVerkoop.SelectedDate) 
    VerkopenCommArtikel.Parameters.AddWithValue("@ArtikelBeschikbaar", True) 

    If VerkopenConn.State = ConnectionState.Closed Then VerkopenConn.Open() 
    VerkopenCommGebruiker.ExecuteNonQuery() 
    VerkopenCommArtikel.ExecuteNonQuery() 






End Sub 

エンドクラス

を実行し、このコードを持っている:

型「System.Data.OleDb.OleDbExceptionの例外を'はSystem.Data.dllで発生しましたが、ユーザーコードで処理されませんでした

追加情報ion:テーブル 'tblGebruiker'に関連するレコードが必要なため、レコードを追加または変更することはできません。

最初のクエリが機能し、そのデータがデータベースに追加されました。

以下のデータベース関係。

Relations

+0

実行時にエラーが発生しますか?また、あなたのアクセスデータベースに関する詳細を投稿できますか? – Amber

+1

2番目のクエリのカラムセクションに 'RubriekID'がありません。 –

+0

@amberコードを編集して質問を編集しました。 –

答えて

1

あなたのクエリで列を欠落していたので、あなたの最初の例外でした。この2番目の例外は、おそらく、1対1の関係がtblArtikeltblRubriekの間に定義されていることが原因です。この場合、重複を許すために、一対一の関係を変更する必要があります。 tblRubriekは "one"側になり、tblArtikelは "many"側になります。 tblArtikelの "多くの"行と関連する1つの主キーがtblRubriekにあるためです。

+0

'tblArtikel'では 'RubriekID'ではなく 'RubriekNaam'を使用し、 'tblRubriek'では 'RubriekNaam'との関係を作成する必要がありますか? –

+0

'RubriekID'は' tblArtikel'の主キーではないので、挿入するのに問題はありませんが、挿入する必要があることを言及する必要があります。 "INSERT INTO tblArtikel(** RubriekID、** ArtikelBeschrijving 、ArtikelPrijs、ArtikelAankoopdatum、ArtikelTekoopgezet)VALUES(@RubriekID、@ArtikelBeschrijving、@ArtikelPrijs、@ArtikelAankoopdatum、@ArtikelTekoopgezet) " – Amber

+0

@Amberはい、それ以前に誤読しました。私の答えを修正しました。 –

関連する問題