Wyświetlanie wyników z MySQL-a w StringGrid

0

Mam taki kod:

procedure TForm1.Button1Click(Sender: TObject);
var i, x, y: Integer;
begin
  SQLDataSet1.Open;
  y := 0;
  for i := 1 to SQLDataSet1.RecordCount do
  begin
    x := 1;
    inc(y);
    StringGrid1.Cells[x, y] := SQLDataSet1.FieldValues['id'];
    inc(x);
    StringGrid1.Cells[x, y] := SQLDataSet1.FieldValues['imie'];
    inc(x);
    StringGrid1.Cells[x, y] := SQLDataSet1.FieldValues['nazwisko'];
    inc(x);
    StringGrid1.Cells[x, y] := SQLDataSet1.FieldValues['tel'];
    inc(x);
    SQLDataSet1.Next;
  end;
  SQLDataSet1.Close;
end;

Działa bez zarzutów, ale tylko dla zapytanie wyglądającego tak:

SELECT * FROM notes;

Moje pytanie brzmi: jak to uzależnić od indeksu z CommandText w SQLDataSet, bo kiedy zmienię zapytanie na:

SELECT imie FROM notes;

to otrzymuję komunikat z błędem (nie pamiętam co tam dokładnie pisze, w każdym razie coś o 'id', że chyba go nie znaleziono...)? Czy muszę zrobić kilka procedur, każda do innego zapytania i później z zapytania SQL za pomocą np. Copy wyciągnąć potrzebne pola czy jest na to jakiś inny, krótszy sposób?

0

Zamiast:

StringGrid1.Cells[x, y] := SQLDataSet1.FieldValues['id'];
  inc(x);

może być:

StringGrid1.Cells[1, y] := SQLDataSet1.FieldValues['id'];
StringGrid1.Cells[2, y] := SQLDataSet1.FieldValues['imie'];
StringGrid1.Cells[3, y] := SQLDataSet1.FieldValues['nazwisko'];
StringGrid1.Cells[4, y] := SQLDataSet1.FieldValues['tel'];

1 użytkowników online, w tym zalogowanych: 0, gości: 1