Delphi MySQL ZeosLib + Jak przeszukiwać tabelę w MySQL

0

Witam.
Czy ktoś może rzucić okiem co robię nie tak, w jednym programiku obsługuję tabelę w komponencie ZeosLib i wszystko jest ok, a w drugim jest podobne zapytanie - ale inna tabela i nie wyszukuje mi rezultatów.

Używam Delphi 2007 ZEOSDBO-6.6.6-stable z http://zeos.firmos.at/

   Query.Active := False;
   Query.SQL.Clear;

   Query.SQL.Add('SELECT nick=:nick2 FROM rejestrosob WHERE login=:login2 and haslo=:haslo2');
   Query.ParamByName('login2').AsString:= _OsAdm.FDane.Login;
   Query.ParamByName('haslo2').AsString:= _OsAdm.FDane.Haslo;

   try Query.Active := true; except end;
   if Query.RecordCount=0 then Exit;

   Memo1.Lines.Add('Query.RecordCount='+IntToStr(Query.RecordCount));
   Memo1.Lines.Add('nick2 >' +Query.ParamByName('nick2').AsString+'<');

I mimo, że:

  • w DBGrid mi wyświetla pozycję,
  • jest pełne pole np. nick2='ktosiek',
  • wyświetla Query.RecordCount=1
    to w Memo1 nie wpisuje mi zawartości nick2;

proszę o jakąś sugestię, dodam że baza jest na hostingu.

0

co to jest???
SELECT nick=:nick2 FROM

0

ogólnie chciałem żeby mi potem zwracało wartości w

 Query.ParamByName('nick2').AsString

próbowałem też

SELECT nick FROM  // gdzie nick jest nazwą kolumny,
Memo.Lines.Add('nick >'+Query.ParamByName('nick').AsString+'<');

wyrzucało błąd, że czegoś nie mogło zrobić

SELECT * FROM  
Memo.Lines.Add('nick >'+Query.ParamByName('nick').AsString+'<'); 

nie mogło znaleźć kolumny "nick" mimo że taka istnieje

   Query.Active := False;
   Query.SQL.Clear;

   Query.SQL.Add('UPDATE rejestrosob SET haslo=:haslo2, email=:email2 WHERE login=:login2');

   Query.ParamByName('login2').AsString := _OsAdm.FDane.Login;
   Query.ParamByName('haslo2').AsString := _OsAdmNew.FDane.Haslo;
   Query.ParamByName('email2').AsString := _OsAdmNew.FDane.Emial;

   try
      Query.Active := true;
   except
   end;

   MessageDlg('Edycja danych przebiegła pomyślnie.', mtInformation, [mbOK], 0);

  • to działa na razie bez zarzutu
0

parametry to są parametry. Pola odczytuje się całkiem inaczej. Masz podstawowe braki w wiedzy.

  1. Zapytania typu SELECT uruchamia się przez Query.Open albo Query.Active := True
  2. Zapytania typu UPDATE, INSERT, DELETE uruchamia się przez Query.ExecSQL
  3. do pól dostajesz się przez Field cos := Query.FieldByName('nazwa_pola').AsTypPola
0

Że tak się niefachowo wyrażę "ślepy w karty nie gra", poprawiłem co było do poprawienia, ale nadal nie ma oczekiwanego efektu w funkcji SELECT, ale ...
nie wiem jak to się dzieje, że jak SELECTa mam w jednej procedurze a w drugiej wyświetlanie danych do StringGirda to jest OK,
natomiast pobieranie tych danych w tej samej procedurze bezpośrednio po sobie nie działa - komunikat że nie ma kolumn które wiem że są i działają...
czy może jakąś pętle opóźniającą żeby dane z serwera dotarły?? . bo może tu jest problem?

0

daj poprawiony kod

0

Tzn on jest poprawiony ale ten konkretny fragment i tak nie działa więc, muszę urabiać glinę od nowa,
myślałem ze to nie ma znaczenia ale może też mieć, bo już tak precyzyjnie to chodzi o to że:

  • zrobiłem klasę abstrakcyjną,
  • po której dziedziczyła klasa do połączenia się z bazą danych,
  • a po tej klasa do obsługi tabeli

i teraz jak wywołuję to nie bezpośrednio komponenty na formie czy DM ale

         iZC: TZConnection;
         iDS: TDataSource;
         iZQ: TZQuery;

tworzone dynamicznie w zwykłym module( bez formy i bez DM),
i wychodzi na to, że po drodze gdzieś są błędy, które wyskakują akurat w takich najmniej oczekiwanych miejscach.
Jak testowałem na pojedynczej tabeli to niby jest ok al jak rozbudowałem i wymagam nowych funkcji to wszystko się sypie.

Cały najważniejszy kod ma kilka ekranów no i nie bardzo mogę go udostępniać publiczności, spróbuję jeszcze zrobić te klasę pod DM, może tworzenie dynamiczne mi nie wyszło, chociaż tabelki tworzenie i inne sprawy działają super.

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