Problem z odczytem z bazy mysql

0

Witam!
Problem:
Po poprawnym odczycie z bazy danych sql do komponentu ListView po wybraniu odpowiedniego rekordu chcę aby po przez komponent SQLDataSet pobrano kilka wartości pól z bazy sql i następnie chcę je wyświetlić w komponentach Edit. kombinuję od kilku godzin ale efekt mizerny. Proszę o pomoc.

0

niewiem czy zrozumiałem
Odczytałeś dane do listView, zaznaczasz jakiś element w listView i chcesz zeby ci odczytało dane o tym rekordzie z bazy?

Po 1 zapisyj gdzieś Id rekordu np. w StateIndex listview, nastepnie podczas klikania wywołujesz zapytanie gdzie dodajesz warunek 'WHERE id='+IntToStr(ListView.selected.StateIndex); baza powinna zwrócić ci jego dane.

Jeśli to nie oto chodzi to napisz jakiś kod co robiłeś bo z opisu to niewiele wynika.

0
puchi napisał(a)

niewiem czy zrozumiałem
Odczytałeś dane do listView, zaznaczasz jakiś element w listView i chcesz zeby ci odczytało dane o tym rekordzie z bazy?

Po 1 zapisyj gdzieś Id rekordu np. w StateIndex listview, nastepnie podczas klikania wywołujesz zapytanie gdzie dodajesz warunek 'WHERE id='+IntToStr(ListView.selected.StateIndex); baza powinna zwrócić ci jego dane.

Jeśli to nie oto chodzi to napisz jakiś kod co robiłeś bo z opisu to niewiele wynika.

chodzi dokładnie o to ale chcę wynik z bazy w postaci pojedynczego rekordu zapisać w pojedyczym polu edit.

0

oki już sobie poradziłem - zrealizowałem wszystko na komponencie memo

var
  SQLQuery : String;
  i : integer;
begin
  SQLQuery := Format('select *  from `klienty` WHERE numer="%s"',[label4.Caption]);
  DM.SQLDatapo.CommandText := SQLQuery;
  Dm.SQLDatapo.Open;

  Memo1.Clear;



for I := 1 to Dm.SQLDatapo.RecordCount do
begin
  Memo1.Lines.Add(DM.SQLDatapo.FieldValues['imienaz']);
  Memo1.Lines.Add(DM.SQLDatapo.FieldValues['adres']);
  Memo1.Lines.Add(DM.SQLDatapo.FieldValues['kodmiast']);
  Dm.SQLDatapo.Next;

end;


 Dm.SQLDatapo.Close;
end;
0

pozwole sobie dodac cos co było wiele razy poruszane przy pobieraniu danych z bazy

Lepiej jest nie uzywac FieldValues Używaj FieldByName

var
  SQLQuery : String;
  i : integer;
begin
  SQLQuery := Format('select *  from `klienty` WHERE numer="%s"',[label4.Caption]);
  DM.SQLDatapo.CommandText := SQLQuery;
  Dm.SQLDatapo.Open;

  Memo1.Clear;



for I := 1 to Dm.SQLDatapo.RecordCount do
begin
  Memo1.Lines.Add(DM.SQLDatapo.FieldByName['imienaz'].AsSting);
  Memo1.Lines.Add(DM.SQLDatapo.FieldByName['adres'].AsSting);
  Memo1.Lines.Add(DM.SQLDatapo.FieldByName['kodmiast'].AsSting);
  Dm.SQLDatapo.Next;

end;


 Dm.SQLDatapo.Close;
end;

a i skoro wiesz ze bobierasz jeden rekord nie musisz robić tego w pętli

0

A dlaczego nie użyjesz DBListBox ?

0

puchi - w przypadku gdyby znalazł więcej niż jeden rekord chcę to zobaczyć bo to błąd bazy danych który będzie wyłapany przez osobną funkcję sprawdzającą.

toyman - Nie korzystałem jeszcze z tego komponentu w użytkowaniu bazy danych. Mógł byś opisać jak konkretnie widział byś jego wykorzystanie?

0
hs2 napisał(a)

toyman - Nie korzystałem jeszcze z tego komponentu w użytkowaniu bazy danych. Mógł byś opisać jak konkretnie widział byś jego wykorzystanie?
Na którą wersję postu mam odpowiadać. To powyżej, czy tą z powiadomienia emailowego:

hs2 napisał(a)

toyman - tekst który znajdzie się w memo ma podlegać swobodnej edycji czego listwiev nie daje.

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