AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi StringGrid mit Daten aus einer Paradoxtabelle füllen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid mit Daten aus einer Paradoxtabelle füllen

Ein Thema von rincewind · begonnen am 6. Mär 2004 · letzter Beitrag vom 12. Mär 2004
 
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: StringGrid mit Daten aus einer Paradoxtabelle füllen

  Alt 7. Mär 2004, 23:58
Das ist jetzt ohne Delphi geschrieben worden (es werden sich also ein paar Denk-& Tippfehler eingeschlichen haben )

Im Endeffekt wird eine Abfrage auf die Spielertabelle gemacht. Für jeden Spieler wird eine Abfrage auf die Rundentabelle gemacht.

Benötigt werden:
  • Delphi:
    • Grid -> dein StringGrid
    • SpielerQuery, RundenQuery -> TQuery
  • DB:
    • SpielerTabelle, RundenTabelle müssen umbenannt werden, um deinen Tabellennamen zu entsprechen
    • Ich nahm an, dass:
      - SpielerName ein Stringfeld ist
      - Runde numerisch ist
      - SpielerTabelle & Rundentablle über den Spielernamen verknüpft sind

Delphi-Quellcode:
Var
  i, MaxRounds :Integer;
Begin
  //...
  MaxRounds := 0;
  With SpielerQuery Do
  Begin
    SQL.Text :=
      'SELECT SpielerName' + #10 +
      'FROM SpielerTabelle' + #10 +
      'ORDER BY SpielerName';
    // Ausführen der SpielerQuery...
    Open;
    // Laufe durch die Ergebnisse der SpielerQuery bis zum letzten Eintrag (Eof)...
    While not Eof Do
    Begin
      // Den Spielername in der ersten Zelle neben die FixedCols eintragen...
      Grid.Cells[Grid.FixedCols,pred(Grid.FixedRows+RecNo)] := FieldByName('SpielerName').AsString;
      With RundenQuery Do
      Begin
        SQL.Text :=
          'SELECT Runde' + #10 +
          ' ,Punkte' + #10 +
          'FROM PunkteTabelle' + #10 +
          'WHERE SpielerName = :i_SpielerName' + #10 +
          'ORDER BY Runde';
        // Parsen des Statements um Query Parameter zu finden...
        Prepared := True;
        // Spielernamen an Query Parameter übergeben...
        // Dadurch wird die Rundenquery nach dem Spieler gefiltert
        Params.ParamByName('i_SpielerName').AsString := SpielerQuery.FieldByName('SpielerName').AsString;
        // Ausführen der RundenQuery...
        Open;
        // Laufe durch die Ergebnisse der RundenQuery bis zum letzten Eintrag (Eof)...
        While not Eof Do
        Begin
          // Das die Punkte der Runden des Spielers rechts neben den Spielernamen schreiben...
          // Voraussetzung: Das Feld "Runde" ist numerisch und beginnt bei 1
          Grid.Cells[Grid.FixedCols+FieldByName('Runde').AsInteger),
                     pred(Grid.FixedRows+SpielerQuery.RecNo) ] := FieldByName('Punkte').AsString;
          // In MaxRounds soll die größte Rundenanzahl stehen. Warum siehst du weiter unten
          If FieldByName('Runde').AsInteger > MaxRounds Then
            MaxRounds := FieldByName('Runde').AsInteger;
          // nächster Eintrag der RundenTabelle...
          Next;
        End;
      End;
      // nächster Eintrag der Spielertabelle...
      Next;
    End;
  End;
  
  With Grid Do
  Begin
    Cells[FixedCols, 0] := 'Spieler';
    -- trage die Spaltennamen für die RUnden nur dann ins Grid, wenn es auch Spieler mit gespielten Runden gibt
    If MaxRounds > 0 Then
      For i := 0 to pred(MaxRounds) Do
        Cells[FixedCols+i, 0] := 'Runde ' + IntToStr(succ(i));
  End;
  //...
End;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz