Laden...

Höchster Wert einer Tabelle übergeben

Erstellt von tomson456 vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.765 Views
T
tomson456 Themenstarter:in
23 Beiträge seit 2005
vor 18 Jahren
Höchster Wert einer Tabelle übergeben

Hallo,

ich hab da mal wieder ein Problem.
Ich muss aus einer Tabelle den höchsten Wert (Screen_Height) suchen und in eine andere Tabelle eintragen. Meine Idee dazu sah so aus:



                                int t2 = 0;
				string w2;
				int w3;
				foreach (DataRow row in dataSet21.TB_Screen.Rows)
				{
					string a2 = row["Screen_Height"].ToString();
					int b2= Convert.ToInt32(a2);
					if (b2 > t2) 
					{
						t2=b2;
						w2 = row["Screen_Id"].ToString();
						
					}
						
				}
				
				cmd = new OleDbCommand ("INSERT INTO TB_Video (Video_Name,Video_Description,Video_Category,Video_ProviderName,Video_KBit,Video_ScreenWidth,Video_TargetPath) VALUES ('"+v1+"','"+v2+"','"+v3+"','"+v4+"','"+t+"','"+w2+"','"+Videopfad+"')" );

Mein Problem ist das ich eine Fehlermeldung bekomme das die Variable w2 nicht zugewiesen wurde. Aber meiner Meinung nach sollte da doch der Wert Screen_Id der aktuellen Zeile stehen. Also nach dem die Schleife alle Zeilen durchlaufen hat müsste doch eigentlich der höchste Wert von Screen_Heights ermittelt und in w2 die dazugehörige Id stehen (diese soll dann mit der Insert anweisung übergeben werden). Oder hab ich da einen Denkfehler, warum funktioniert nicht.

P.S. Wenn ich statt w2 den Wert von t2 in der Insert-Anweisung übergebe, dann wird auch dieser Wert in der Tabelle eingetragen. aber ich brauch ja nicht diesen Wert sondern die entsprechende Id.
Hoffe ich habs einigermassen erklären können.
Viele Grüße
Thomas

F
529 Beiträge seit 2003
vor 18 Jahren

Guck mal bitte, ob der nachfolgende Code richtig funktioniert:


int height = 0;
int screen_id = -1;
foreach (DataRow row in dataSet21.TB_Screen.Rows)
{
    if((int) row["Screen_Height"] > height)
    {
        height = (int) row["Screen_Height"];
        screen_id = (int) row["Screen_Id"];
    }
}
Console.WriteLine("Maximalhöhe: {0}", height);
Console.WriteLine("Datensatznummer: {0}", screen_id);

Nachträglich angefügt:
Der Fehler mit Variable nicht zugewiesen kommt, weil die Variable in einer Schleife steht, du sie aber ,,globaler`` deklariert(?) hast. Du kannst mal testen, was passiert, wenn du w2 = "" anstatt nur string w2 schreibst.

Besuchen sie das VisualC++ - Forum

T
tomson456 Themenstarter:in
23 Beiträge seit 2005
vor 18 Jahren

Hallo Franknstein,

vielen Dank für deine Antwort. Hat mir weitergeholfen. Mit deinem Beispiel gehts.
Viele Grüße
Thomas

F
10.010 Beiträge seit 2004
vor 18 Jahren

Wie wäre es mit einem :


DataRow[] dr = dataSet21.TB_Screen.Select("Screen_Height=Max(Screen_Height)");
int height = dr[0]["Screen_Height"];
int screen_id = dr[0]["Screen_Id"];