ADO, bazy danych i Modyfikacja recordow

0

mam problem z modyfikacją istniejacych rekordow, nie chce nic zmienic, nie wyrzuca błedu ani nic, ale zmienic nie chce, jak dodaje nowy jest wszystko ok zmiana SetFields na insertRecord
co moze byc tego przyczyną?

nizej podaje kod

With DataModule1 do
    begin
      qOsoby.Open;
      if qOsoby.Locate('ID_Osoby',idosoby,[]) then
      begin
        qOsoby.Edit;
        qOsoby.SetFields([Unassigned,eImie.Text,eNazwisko.Text,dbKodpocztowy.Text,
        eAdres.Text,unassigned,NULL,idm,idw,idp,eTelefon.Text,null,null,0,'F', 'F',idg]);

        if zdjecie.Picture.Graphic is TBitmap then
          qosobyzdjecie.Assign(zdjecie.Picture.Graphic)
        else
          qOsobyZdjecie.Clear;
        qOsobyNotatka.assign(Notatka.Lines);
        qOsoby.Close;
      end;
    end;
0

Problemem jest wadliwa metoda Locate !!!!

Trzy zasr#$%ne dni siedziałem nad znalezieniem błędu. Przy używaniu tej metody prawidłowo lokalizowane były tylko: pierwszy i ostatni rekord w tabeli. Każdy inny był znajdowany jako następny, czyli jak dane wskazywały na rekord nr 3 to zwracany był nr 4. Dla różnych tabel!

Rozwiązaniem było olanie tej funkcji i zastąpienie je starym poczciwym selectem. Po tym zabiegu wszystko działało wyśmienicie.

(ja robiłem to w BCB6, ale i tak wszystkie klasy/metody są kompilowane z Delphi)

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