Query - Wybieranie wielu wierszy

0

Witam.
Przy pobieraniu wartości komórki i przypisywaniu jej do zmiennej:

temp:=DBGrid1.SelectedField.AsString;

lub inaczej,

ZQuery1.ParamByName('name').AsString:=DBGrid1.SelectedField.AsString;;

wyświetla mi błąd: Project Baza.exe raised exception class EAcces Violation with message 'Acces Violation at address....'

Jednak dla

ShowMessage(DBGrid1.SelectedField.AsString);

wartość komórki się wypisuje w messagu.

W czym tkwi błąd? Inny jest dostęp do komórki przez message a inne przez zmienne?

0
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if IBQuery1.RecordCount>0 then 
   begin
    Edit1.Text:=IBQuery1.Fields[0].AsString;
    Edit2.Text:=IBQuery1.FieldValues['Pole2'];
    Edit3.Text:=IBQuery1.FieldValues['Pole3'];
    Edit4.Text:=IBQuery1.FieldValues['Pole4'];
    Edit5.Text:=IBQuery1.FieldValues['Pole5'];
    Edit6.Text:=IBQuery1.FieldValues['Pole6'];
   end 
    else
     if IBQuery1.RecordCount=0 then
     Application.MessageBox('Musisz dodać nowy rekord do bazy.','Brak danych w bazie',
     MB_IconInformation or MB_OK);
end;
0

gdy masz zaznaczone pole na dbgridzie to tak naprawde masz zaznaczone query ktore jest do niego podpiete wiec mozesz sprobowac tak:

Na OnCellClick dbgrida

var
tmp: string;
begin
tmp := TZQuery.FieldByName('nazwapola').asString;
end;

Zamiast nazwa pola mozesz sprobowac takie cos choc tego nie testowalem

Column.Title.DefaultCaption
0

Zmieniłem nazwę tematu - mam teraz taki problem:

Za pomocą:

ZQuery1.SQL.Add('SELECT pole1,pole2 FROM baza WHERE id=1');
nazwa1:=ZQuery1.Fields[0].AsString;
nazwa2:=ZQuery1.Fields[1].AsString;

Zaznaczam 2 pola z wiersza 1 i je przypisuje nazwom.
A jak zaznaczę:

ZQuery1.SQL.Add('SELECT pole1,pole2 FROM baza');

To jak teraz pobrać wartości z wierszy np. 1 i 2?
Takie cuda jak:

nazwa1:=ZQuery1.Fields[0][0].AsString;

Nie działają, zna ktoś rozwiązanie?

0

Klauzula BETWEEN.

0

RedbaK, sorki za błędne wprowadzenie Cię w temat, chodziło o coś takiego:

 ZQuery1.SQL.Add('SELECT pole1,pole2 FROM baza WHERE id BETWEEN 1 and 2');
  ShowMessage(ZQuery1.Fields[0].AsString);
  ShowMessage(ZQuery1.Fields[1].AsString);
  ShowMessage(ZQuery1.Fields[2].AsString);
  ShowMessage(ZQuery1.Fields[3].AsString);

Pokazuje Message o polu1 i polu2 przy id=1. Jednak przy polach Fieldach o indeksach 2 i 3 wypisuje błąd o przekroczeniu zakresów. Czy pola o id=2 są zaznaczone, a jeśli tak to jak się w takim razie do nich dostać?

Czy może po ZQuery1.DataSource. próbować, tylko jak?

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