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



BeitragVerfasst: Mo 29.04.13 09:33 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 29.04.13 17:35 
Mal angenommen l_nr ist eindeutig. Dann würde ich so vorgehen:

ausblenden 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.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.04.13 20:22 
ausblenden 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.