Dlaczego TFDMemTable.POST robi NEXT

Dlaczego TFDMemTable.POST robi NEXT
woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

Witajcie

Mam dziwne zachowanie TFDMemTable. Ten sam kod (poniżej) inaczej zachowuje się u mnie, inaczej u pozostałych developerów

Kopiuj
procedure TKBSSRUIFramePatternsAttributes.OnEditPattern(
  const pPatternName: string);
begin
    FDSMemTable.DisableControls;
    try
        FDSMemTable.First;
        while not FDSMemTable.Eof do
        begin
            FDSMemTable.Edit;
            FDSMemTable.FieldByName('pPatternName').AsString := pPatternName;
            FDSMemTable.Post;
//            FDSMemTable.Next;  //tu jest problem
        end;
    finally
        FDSMemTable.EnableControls;
    end;
end;

Chodzi o ten fragment FDSMemTable.Next. Na moim komputerze FDSMemTable.Post; powoduje automatycznie NEXT dlatego FDSMemTable.Next jest zakomentowane. W efekcie dla np 4 rekordów w FDSMemTable mam 4 iteracje pętli. Niestety u innych developerów ten sam kod powoduje niekończącą się pętlę. Dodam, że wcześniej next był ale dla 4 rekordów w FDMemTable iteracje miałem tylko 2 dlatego NEXT został zakomentowany. Czy możecie coś podpowiedzieć?

PD
  • Rejestracja: dni
  • Ostatnio: dni
1

wg info na necie Unidirectional dla tabeli musi być ustawion na False: http://docwiki.appmethod.com/appmethod/1.13/topics/en/TFDMemTable_Questions

robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
2

także uważam że to kwestia ustawień kontrolki w Object Inspektorze chociaż nie rozumiem dlaczego miałyby być inne ustawienia u różnych developerów. No chyba że to nie jest ten sam projekt a tylko skopiowany kawałek kodu.

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

Dzięki za podpowiedź ale to chyba nie to. Może też wpływ ma na to fakt, że FDSMemTable ma ustawione filtered = true i filter := 'patternname = ' + pPatternName ?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

a nie jest tak, że jak zmienisz wartość pola to się nie łapie do wyfiltrowanych rekordów i automatycznie przechodzi do następnego?

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0
abrakadaber napisał(a):

a nie jest tak, że jak zmienisz wartość pola to się nie łapie do wyfiltrowanych rekordów i automatycznie przechodzi do następnego?

Tak i nie. Faktycznie przy ustawionym filter i zmianie tej wartości automatycznie zmniejsza się count i faktycznie przechodzi do następnego rekordu ale tylko u mnie. U innego developera efekt jest taki, że pętla while jest nieskończona i nie wiem dlaczego. Ogólnie problem już rozwiązałem robiąc trochę obejście na około dlatego nie będę się nim chwalił ale jakby główny problem dalej pozostał i nie wiem z czego on wynika.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.