Dlaczego TFDMemTable.POST robi NEXT

0

Witajcie

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

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ć?

1

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

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.

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 ?

2

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

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.

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