Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage Prob (https://www.delphipraxis.net/50504-abfrage-prob.html)

the7 26. Jul 2005 22:07

Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeosdbo

Abfrage Prob
 
Hallo, ich benutze Delphi 4 und die Zeoslibs um auf meine MySQL DB zuzugreifen.
Folgendes Prob.: dazu der CODE:


Delphi-Quellcode:
Form4.qrMain.Sql.Text:='SELECT * FROM kunden WHERE Nachname LIKE "'+k+'%" OR Nachname LIKE "'+l+'%"';
 showmessage(Form4.qrMain.Sql.Text);
 Form4.qrMain.Open;
 
 i:=1;
      while not Form4.qrMain.Eof do
       begin
       StringGrid1.RowCount:=i;
       StringGrid1.Cells[1,i]:=qrMain.FieldByName('ID').AsString;
       StringGrid1.Cells[2,i]:=qrMain.FieldByName('Vorname').AsString;
       StringGrid1.Cells[3,i]:=qrMain.FieldByName('Nachname').AsString;

       i:=i+1;
        Form4.qrMain.Next;
       end;
Ich frage die komplette Tabelle "kunden" aus, und möchte diese in mein StrinGrid schreiben. KLappt soweit auch, jedoch fehlt immer der letzte Eintrag, habe ich z.B. 4 Einträge die mit "h" beginnen, werden nur 3 angezeigt. Jemand ne Idee wieso???

Die Variable "k" und "l" sind jeweils der Anfangsbuchstabe des Nachnamens einmal in groß, einmal in klein.

Danke im Vorraus.

[edit=r_kerber]Delphi-Tags eingefügt. Beim nächsten Mal bitte selbsr daran denken. Mfg, r_kerber[/edit]

marabu 27. Jul 2005 04:46

Re: Abfrage Prob
 
Hallo,

vielleicht hast du die Spaltenüberschriften vom Grid nicht berücksichtigt?

Delphi-Quellcode:
with Form4.qrMain do begin
  Sql.Text := Format('SELECT * FROM kunden WHERE UPPER(Nachname) LIKE ''%s%''', [Uppercase(k)]);
  ShowMessage(Sql.Text);
  Open;

  sg.RowCount := RecordCount + sg.FixedRows;
  iRow := 0;
  while not Eof do begin
    sg.Cells[1, iRow] := FieldByName('ID').AsString;
    sg.Cells[2, iRow] := FieldByName('Vorname').AsString;
    sg.Cells[3, iRow] := FieldByName('Nachname').AsString;
    Inc(iRow);
    Next;
  end;
  Close;
end;
Grüße vom marabu

Jelly 27. Jul 2005 09:58

Re: Abfrage Prob
 
Zitat:

Zitat von marabu
vielleicht hast du die Spaltenüberschriften vom Grid nicht berücksichtigt?

Ich denke eher, daß wenn er RowCount := i setzt, er dann mittels
Delphi-Quellcode:
StringGrid1.Cells[1,i-1]:=qrMain.FieldByName('ID').AsString;
sein Grid füllen muss, da ja die Zeilennummerierung üblicherweise bei null anfängt.

marabu 27. Jul 2005 10:19

Re: Abfrage Prob
 
Hi Jelly,

jetzt hast du die Spaltenüberschriften auch übersehen. Bei einer Initialisierung von i mit 1 und deinem Ansatz werden die sauber ausradiert. Immer noch besser als beim thread owner, der die Titel zwar stehen lässt, aber dafür den RowCount immer um 1 zu klein wählt - da fehlt dann schon mal was am Ende...

Freundliche Grüße vom marabu

Jelly 27. Jul 2005 10:26

Re: Abfrage Prob
 
Zitat:

Zitat von marabu
jetzt hast du die Spaltenüberschriften auch übersehen. Bei einer Initialisierung von i mit 1 und deinem Ansatz werden die sauber ausradiert.

Echt, dem war mir nicht bekannt. Ich dacht Zeile 0 sei immer die oberste, ob Spaltenüberschriften oder nicht. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz