Autor Beitrag
Acorwyn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win 7 Ultimate 32/64 bit, Backtrack 4
C#
BeitragVerfasst: Do 24.03.11 09:29 
Hey,
Ich bin grade im Praktikum und habe eine Frage, und zwar..
Ich soll eine Grafische Oberfläche die ich mit Visual Studio in der Sprache C# erstellt habe mit einer Access Datenbank verbinden. Das habe ich auch geschafft, ich kann mir auch 2 der Tabellen in Labeln anzeigen lassen aber bei der 3. gibt es Probleme. Die erste Tabelle heißt "tbladress", die 2. "tblinvoiceheader" und die 3. "tblinvoicedetails". Bei der ersten und Zweiten Tabelle sind 2 gleiche Codes vorhanden. Bei tbladress ist es die fldid und bei tblinvoiceheader ist es die fldadressid. In der 2. Tabelle ist der Primärschlüssel die fldid und die fldid ist der selbe Code wie in der 3. Tabelle die fldmasterid.
Alles wollte ich per Knopfdruck abrufen und in verschiedenen Labels anzeigen lassen. Den Code den ich dafür benötige gebe ich in einer textBox ein.

Hier ist nocheinmal der Code von dem Button meiner Oberfläche.

ausblenden volle Höhe 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:
private void button1_Click(object sender, RoutedEventArgs e)
        {
            OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb");
            con.Open();
            string strSql = String.Format("SELECT fldid,fldname01,fldname02,fldname03,fldstrasse,fldplz,fldnort,fldland,fldtelefon,fldemail FROM tbladress WHERE fldid= '{0}'", textBox1.Text);
            OleDbCommand cmd = new OleDbCommand(strSql, con);
            OleDbDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                ID.Content = (dr[0].ToString());
                Vorname.Content = (dr[1].ToString());
                Zweitname.Content = (dr[2].ToString());
                Nachname.Content = (dr[3].ToString());
                Straße.Content = (dr[4].ToString());
                Plz.Content = (dr[5].ToString());
                Ort.Content = (dr[6].ToString());
                Land.Content = (dr[7].ToString());
                Telefon.Content = (dr[8].ToString());
                Email.Content = (dr[9].ToString());
            }
            dr.Close();
            con.Close();


            {
                OleDbConnection con1 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb");
                con1.Open();
                string streamsql = String.Format("SELECT fldanschreiben,fldnetto,fldmwst,fldbrutto,fldtextintern,fldid FROM tblinvoiceheader WHERE fldadressid= '{0}'", textBox1.Text);
                OleDbCommand cmd1 = new OleDbCommand(streamsql, con1);
                OleDbDataReader dr1 = cmd1.ExecuteReader();

                while (dr1.Read())
                {
                    Anschreiben.Content = (dr1[0].ToString());
                    Netto.Content = (dr1[1].ToString());
                    Mwst.Content = (dr1[2].ToString());
                    Brutto.Content = (dr1[3].ToString());
                    Text.Content = (dr1[4].ToString());
                    textBox2.Text += (dr1[5].ToString());
                    textBox2.Text += "}";
                    IDD.Content += (dr1[5].ToString());
                    IDD.Content += "}";
                }
                dr1.Close();
                con1.Close();
                }

                OleDbConnection con2 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\hmprak\Documents\prakdb1(backup).accdb");
                con2.Open();
                //string strSql1 = ("SELECT fldanzahl,fldtext,fldpreis,fldrabatt,fldgesamt FROM tblinvoicedetails WHERE fldid=") + IDD.Content;
                string strSql1 = String.Format("SELECT fldanzahl,fldtext,fldpreis,fldrabatt,fldgesamt FROM tblinvoicedetails WHERE fldid= '{0}'", textBox2.Text,IDD.Content);
                OleDbCommand cmd2 = new OleDbCommand(strSql1, con2);
                OleDbDataReader dr2 = cmd2.ExecuteReader();
                while (dr2.Read())
                {
                    Anzahl.Content = (dr2[0].ToString());
                    Preis.Content = (dr2[2].ToString());
                }
                dr2.Close();
                con2.Close();
                
            
        }


Meine Frage ist jetz wo der Fehler ist oder ob da ein Fehler ist ... Ich sitz seit gestern daran zu versuchen den Fehler zu finden und zu beheben aber ich kann einfach nix falsches finden.
Ich hoffe ihr könnt mir helfen, ich bin echt verzweifelt..
Danke :)
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 24.03.11 11:06 
1. Du solltest möglichst angeben welche Fehlermeldung kommt oder was der Unterschied zwischen dem erwarteten und dem erhaltenen Ergebnis ist.

ausblenden C#-Quelltext
1:
string strSql1 = String.Format("SELECT fldanzahl,fldtext,fldpreis,fldrabatt,fldgesamt FROM tblinvoicedetails WHERE fldid= '{0}'", textBox2.Text,IDD.Content);					

Wofür sind da die 2 Parameter hinten drann? (es wird doch nur 1 verwendet).
Setze einen Breakpoint an die Stelle und schau mal nach was in textBox2.Text steht.
Da wird der Fehler liegen.
Du baust ja oben den Text zusammen:
ausblenden C#-Quelltext
1:
2:
textBox2.Text += (dr1[5].ToString());
textBox2.Text += "}";

Wofür die geschweifte Klammer ?


Und wozu machst du eigentlich 3 Abfragen? Du kannst doch einfach die 3 Tabellen in einer Abfrage per Join verbinden.
Acorwyn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win 7 Ultimate 32/64 bit, Backtrack 4
C#
BeitragVerfasst: Do 24.03.11 11:10 
Danke für die schnelle Antwort :)
Nein da liegt der fehler leider nicht. Ich habe "IDD.Content" bereits entfernt. Eine Fehlermeldung gibt es nicht, er zeit einfach keine Daten aus der 3. Tabelle an.
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 24.03.11 11:13 
und der rest von dem was ich geschrieben habe?

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:

Setze einen Breakpoint an die Stelle und schau mal nach was in textBox2.Text steht.
Da wird der Fehler liegen.
Du baust ja oben den Text zusammen:
ausblenden C#-Quelltext
1:
2:
textBox2.Text += (dr1[5].ToString());
textBox2.Text += "}";

Wofür die geschweifte Klammer ?
Acorwyn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win 7 Ultimate 32/64 bit, Backtrack 4
C#
BeitragVerfasst: Do 24.03.11 11:16 
Wie soll ich den denn Setzen ?
Tut mir leid, ich bin wirklich sehr neu bezüglich C#.
Aber Danke für die schnellen Antworten :)
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 24.03.11 11:22 
geh in die zeile wo du den breakpoint haben willst und drück F9 wenn er an der stelle ankommt kannst du auch mit F11 Schritt für Schritt durchgehen. Kannst auch einfach mal mit der Maus über die entsprechende Variable um den Wert zu sehen uvm.
Allgemein solltest du dich mit dem Thema Debugging beschäftigen.
Acorwyn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win 7 Ultimate 32/64 bit, Backtrack 4
C#
BeitragVerfasst: Do 24.03.11 11:30 
Wenn ich hinter
ausblenden C#-Quelltext
1:
string strSql1 = String.Format("SELECT fldanzahl,fldtext,fldpreis,fldrabatt,fldgesamt FROM tblinvoicedetails WHERE fldid= '{0}'", textBox2.Text,IDD.Content);					

(",IDD.Content);" habe ich inzwischen entfernt.)
einen breakpunkt setzt und F11 drücke dann gibt er mir eine Fehlermeldung:

Fehler 1 "Binding.Window1" enthält keine Definition für "button2_Click_2", und es konnte keine Erweiterungsmethode "button2_Click_2" gefunden werden, die ein erstes Argument vom Typ "Binding.Window1" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\svn\prak1\Binding\Binding\Window1.xaml 52 78 Binding


Okay es hat sich erledigt ich mach das ganze jetzt doch über ein XamDataGrid, danke für eure hilfe :)
CityHunter
Hält's aus hier
Beiträge: 12

Win8
C# (VS 2010)
BeitragVerfasst: Di 15.01.13 19:40 
Hey, tut mir leid das ich das Forum wieder zu leben erwecke aber kurze Frage. Kennt hier einer ein Buch der Accees mit C# erklärt am besten ohne DataGridView oder Deutsche Online tuts?

Da ich mich gerne mit DB und WPF beschäftigen will.