Autor Beitrag
Lestat78
Hält's aus hier
Beiträge: 1

WinXP, Win Vista

BeitragVerfasst: Sa 24.02.07 17:23 
Hi,
ich hab ein Problem mit meinem RowFilter meines DataViews. Irgendwie interessiert es das DataView überhaupt nicht, das ich da einen Filter gesetzt habe.
Ich versuche eine Rezept-Datenbank-Anwendung zu erstellen und das DataView soll halt nur noch die Zutaten aus der Zutatenliste zeigen, die zu dem zugehörigen Rezept gehören. Es zeigt aber alle Zutaten an :(
Ich hab das Gefühl irgendwas übersehn zu haben, aber ich komm nicht drauf.
Hat jemand ne Idee was ich falsch mache und kann mich wieder in die richtige Richtung schubsen?

Hier mal ein Auszug aus meinem Code:
ausblenden 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:
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Nightmahr-Kochbuch.mdb");
cmd = new OleDbCommand("SELECT Hauptgericht.Hauptgericht_ID, Hauptgericht.Gericht_Name, Zutat.Zutat_Name, Rezepte.Menge, Gericht_Art.Gericht_Art_Name, Hauptgericht.Rezept_Text FROM Zutat INNER JOIN ((Gericht_Art INNER JOIN Hauptgericht ON Gericht_Art.Gericht_Art_Id = Hauptgericht.Gericht_Art) INNER JOIN Rezepte ON Hauptgericht.Hauptgericht_ID = Rezepte.Hauptgericht_ID) ON Zutat.Zutat_ID = Rezepte.Zutat_ID", cnn);
da = new OleDbDataAdapter(cmd);
ds = new DataSet();
try
{
     da.Fill(ds, "Rezept");
}
catch (OleDbException ex)
{
      MessageBox.Show(ex.Message);
}

DataView dvZutaten = new DataView(ds.Tables["Rezept"]);
dvZutaten.RowFilter = "Gericht_Name='Rührei'";//"+txtGerichtName.Text+"'";
lbZutat.Text = "";
lbMenge.Text = "";

foreach(DataRow dr in dvZutaten.Table.Rows)
{
  lbZutat.Text+=dr["Zutat_Name"].ToString()+"\n";
  lbMenge.Text+=dr["Menge"].ToString()+"\n";
}


Danke schonmal

PS: Falsch den falschen Bereich erwischt haben sollte, bitte verschieben :)

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
MHaeweling
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 05.02.08 17:03 
Hi,

mit dvZutaten.Table bekommst Du die ungefilterte Quelltabelle zurück!
Steht auch in Syntaxhighliting vom VS!

ausblenden C#-Quelltext
1:
DataTable bla_DataTable = dvZutaten.Table; // wozu die View? ^^					


Mach es so:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
int Row_Count = m_V_dvZutaten_DEF.Count;

for (int i = 0; i < Row_Count; i++)
{
   DataRow dr = m_V_GROUPS_DEF[i].Row;  // Wirkliche gefilterte Row aus DataView

  lbZutat.Text+=dr["Zutat_Name"].ToString()+"\n";  
  lbMenge.Text+=dr["Menge"].ToString()+"\n";  
}


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
MHaeweling
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 05.02.08 17:04 
sry, paar Copy % Paste Fehler, meine immer Die View!