Entwickler-Ecke
Datenbanken - Daten aus Select sortieren und gleich in Datenbank schreiben
tptom - Mo 29.04.13 09:33
Titel: Daten aus Select sortieren und gleich in Datenbank schreiben
Hallo,
ich bin kompletter Neuling im Thema Delphi und auch SQL.
Ich habe eine kleine Anwendung geschrieben, mit der ich in einer MDB Läufer bei einem Wettkampf verwalte.
Meine Tabelle enthält folgende werte:
l_nr, l_name, l_klasse, l_zeit,l_platz
Nun möchte ich wenn die Zeiten eingetragen sind, für die jeweilige Wettkampfklasse die Platzierung (sortiert nach Zeit) in die Spalte l_platz schreiben.
Könnt ihr mir einen kleinen Denkanstoß geben, bis jetzt habe ich die Tabelle nur mit ADOTable bearbeitet, da ich mit ADOQuery Probleme hatte, die Parameter richtig zu übergeben.
Ich wäre euch sehr dankbar für antworten.
Viele Grüße
Tom
Xion - Mo 29.04.13 17:35
Mal angenommen l_nr ist eindeutig. Dann würde ich so vorgehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| for cl := 0 to High(Klassen) do begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add( 'SELECT l_nr FROM Läufer WHERE l_klasse LIKE "'+Klasse[cl]+'" ORDER BY l_Zeit' ASC); ADOQuery1.First; Platz:=0; while not ADOQuery1.EoF do begin Platz := Platz+1; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('UPDATE Läufer SET Platz = '+inttostr(Platz)+' WHERE l_Nr='+inttostr(ADOQuery1.FieldByName('l_Nr').AsInteger ); ADOQuery2.ExecSQL; ADOQuery1.Next; end; end; |
Das ganze könnte etwas langsam sein, aber ich denke, du hast nicht tausende von Klassen :) Die Parameterübergabe sollte so keine Probleme geben.
Delete - Mo 29.04.13 20:22
Delphi-Quelltext
1: 2: 3: 4: 5:
| ... while not ADOQuery1.EoF do begin Platz := ADOQuery1.RecNo; ... |
Da fällt dann die Zuweisung an Platz vor Beginn der Schleife weg.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!