Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Datensätze in eine Tabelle einfügen


Acorwyn - Fr 01.04.11 13:33
Titel: Datensätze in eine Tabelle einfügen
Also, Folgenedes Problem.
Ich habe ein Programm erstellt das Tabellen auslesen und bearbeiten kann. Löschen inzwischen auch. Jetz wollte ich es so machen das ich selbst neue Datensätze erstellen kann aber das geht nur bei der ersten Tabelle.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
private void button1_Click(object sender, RoutedEventArgs e)
        {
            using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb; Mode=12"))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(@"INSERT INTO tbladress(fldname01, fldname02, fldname03, 
                            fldstrasse, fldplz, fldnort, fldland, fldtelefon, fldemail) VALUES (@Name01, @Name02, @Name03, 
                            @Straße, @Plz, @Ort, @Land, @Telefon, @Email)"
, conn))
                {
                    cmd.Parameters.AddWithValue("@Name01", textBox2.Text);
                    cmd.Parameters.AddWithValue("@Name02", textBox3.Text);
                    cmd.Parameters.AddWithValue("@Name03", textBox4.Text);
                    cmd.Parameters.AddWithValue("@Strasse", textBox5.Text);
                    cmd.Parameters.AddWithValue("@Plz", textBox6.Text);
                    cmd.Parameters.AddWithValue("@Ort", textBox7.Text);
                    cmd.Parameters.AddWithValue("@Land", textBox8.Text);
                    cmd.Parameters.AddWithValue("@Telefon", textBox9.Text);
                    cmd.Parameters.AddWithValue("@Email", textBox10.Text);
                    cmd.ExecuteNonQuery();
                }
                conn.Close();
            }
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb; Mode=12"))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(@"INSERT INTO tblinvoiceheader(fldnummer, fldadressid, fldname01,
                fldname02, fldname03, fldstrasse, fldplz, fldnort, fldland, fldtelefon, fldemail, fldanschreiben, fldnetto,
                fldmwst, fldbrutto, fldtextintern) VALUES (@Nummer, @AdressID, @Name01, @Name02, @Name03, @Straße, @Plz,
                @Ort, @Land, @Telefon, @Email, @Anschreiben, @Netto, @Mwst, @Brutto, @TextI)"
, conn))
                {
                    cmd.Parameters.AddWithValue("@Nummer", textBox12.Text);
                    cmd.Parameters.AddWithValue("@AdressID", textBox13.Text);
                    cmd.Parameters.AddWithValue("@Name01", textBox14.Text);
                    cmd.Parameters.AddWithValue("@Name02", textBox15.Text);
                    cmd.Parameters.AddWithValue("@Name03", textBox16.Text);
                    cmd.Parameters.AddWithValue("@Straße", textBox17.Text);
                    cmd.Parameters.AddWithValue("@Plz", textBox18.Text);
                    cmd.Parameters.AddWithValue("@Ort", textBox19.Text);
                    cmd.Parameters.AddWithValue("@Land", textBox20.Text);
                    cmd.Parameters.AddWithValue("@Telefon", textBox21.Text);
                    cmd.Parameters.AddWithValue("@Email", textBox22.Text);
                    cmd.Parameters.AddWithValue("@Anschreiben", textBox23.Text);
                    cmd.Parameters.AddWithValue("@Netto", textBox24.Text);
                    cmd.Parameters.AddWithValue("@Mwst", textBox25.Text);
                    cmd.Parameters.AddWithValue("@Brutto", textBox26.Text);
                    cmd.Parameters.AddWithValue("@TextI", textBox27.Text);
                    cmd.ExecuteNonQuery();
                }
                conn.Close();
            }
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
            using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb; Mode=12"))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(@"INSERT INTO tblinvoicedetails(fldmasterid, fldpos, fldanzahl, 
                fldtext, fldpreis, fldrabatt, fldgesamt, fldtextintern) VALUES (@MasterID, @Pos, @Anzahl, @Text, @Preis, 
                @Rabatt, @Gesamt, @TextI)"
, conn))
                {
                    cmd.Parameters.AddWithValue("@MasterID", textBox29.Text);
                    cmd.Parameters.AddWithValue("@Pos", textBox30.Text);
                    cmd.Parameters.AddWithValue("@Anzahl", textBox31.Text);
                    cmd.Parameters.AddWithValue("@Text", textBox32.Text);
                    cmd.Parameters.AddWithValue("@Preis", textBox33.Text);
                    cmd.Parameters.AddWithValue("@Rabatt", textBox34.Text);
                    cmd.Parameters.AddWithValue("@Gesamt", textBox35.Text);
                    cmd.Parameters.AddWithValue("@TextI", textBox36.Text);
                    cmd.ExecuteNonQuery();
                }
                conn.Close();
            }
        }

Könnt ihr hier einen Fehler finden ? Wenn ich die Daten in die textBoxen eingebe und den jeweiligen Button drücke kommt bei Button 3 und 4 eine Fehler Meldung und zwar:
System.Data.OleDb.OleDbException wurde nicht behandelt.
Message="Datentypenkonflikt in Kriterienausdruck."
Source="Microsoft Access Database Engine"
ErrorCode=-2147217913

Ich versteh nicht warum es einen Fehler gibt und warum es bei button 1 klappt und den anderen nicht. Könnt ihr mir ein letzes mal helfen ? :)
danke :)


Acorwyn - Fr 01.04.11 14:38

okay hab den fehler gefunden :)
lag daran das ich z.B. für das Feld Preis, buchstaben eingegeben habe ^^