Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

"0 record(s) updated. Only one record should have been update" ZeosDB

118 views
Skip to first unread message

J-23

unread,
Mar 18, 2018, 8:22:20 PM3/18/18
to
Witam
Buduję komponent bazodanowy gdzie będzie można podłączyć dowolną bazę za
pomocą TDataSource

W komponencie będzie się podawać DataField tak jak w standardowej
kontrolce DB

za pomocą tego komponentu będzie można dodać też dane do tabeli
podłączonej za pomocą TDataSource

i robię zwyczajne operacje wyglądającą tak

DataSource.Dataset.Append
...
..
..
DataSource.Dataset.Post



Do TDatasource są podpięte Zeosy z AutoCommit
więc dane lądują w bazie odrazu

gdy wykonam:
Append
Post
(jednorazowo) dane są bez problemu dodawane do bazy

ale gdy klikne przycisk 2 krotnie dostaje: "0 record(s) updated. Only
one record should have been update"

próbowałem po post dołożyć Refresh ale nic to nie zmienia

Próbowałem miabu tego co radziłeś tutaj
https://forum.lazarus.freepascal.org/index.php?topic=32170.0 ale bez efektu

Rano spróbuje podłączyć coś innego niż Zeos i zobaczyć jaki będzie efekt

Baza to Firebird ale zależy mi na 2 bazach na Firebird i MSSQL bo tam
będzie to docelowo działać

Pozdrawiam
J-23

J-23

unread,
Mar 18, 2018, 8:29:49 PM3/18/18
to
W dniu 19.03.2018 o 01:22, J-23 pisze:
Dla uzupełnienia: jeśli odwołam się bezpośrednio np do ZTable czyli np

ZTable.Append
ZTable.Post

Problem nie występuje. Jednak zależało by mi na pozostawieniu tego na
poziomie DataSource

Pozdrawiam
J-23

Krzysztof Szyszka

unread,
Mar 19, 2018, 10:48:42 AM3/19/18
to
> Dla uzupełnienia: jeśli odwołam się bezpośrednio np do ZTable czyli np
>
> ZTable.Append
> ZTable.Post
>
> Problem nie występuje. Jednak zależało by mi na pozostawieniu tego na poziomie DataSource

Co prawda nie używam ZEOSów, ale DataSource raczej nie powinno mieć na to wpływu.
Zrób do testów jeszcze takie porównanie:

var
DataSet: TDataSet;
begin
DataSet := ZTable;
DataSet.Append;
DataSet.Post;
end;

--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/

J-23

unread,
Mar 20, 2018, 11:32:54 PM3/20/18
to
W dniu 19.03.2018 o 01:22, J-23 pisze:
> Witam
[...]
> Rano spróbuje podłączyć coś innego niż Zeos i zobaczyć jaki będzie efekt

Jest błąd w Zeosach postaram się przygotować mały przykładowy projekt by
pokazać w czym jest rzecz.

Pozdrawiam

J-23

unread,
Mar 23, 2018, 10:03:43 PM3/23/18
to
W dniu 21.03.2018 o 04:32, J-23 pisze:
Zgodnie z tym co zapowiedziałem przygotowałem demo pokazujący problem
(moim zdaniem) z Zeos.

By przybliżyć jak najbliżej problem okroiłem swój komponent do minimum
jest to zwykłe drzewo opartę o ZedTreeDB teraz dodaje element drzewa
i tak jak mowilem jesli dodam jeden element wszystko dziala poprawnie
jeśli natomiast dodam kolejny pojawi się wspomniany prze mnie w temacie
blad.

Realizuje taki scenariusz:
Mam root drzewa o nazwie "All" klikam na niego zaznaczając przyciskam
dodaj i wpisuje nazwe nowego elementu - zatwierdzam OK
potem powtarzam operacje lecz po naciśnieciu dodaj mam jeden element już
pusty. Wydaje mi się że ten element pusty jest właśnie przyczyną tych
wszystkich moich kłopotów.

Teraz skąd zakładam że to jest wina Zeosa? z 2 powodów:
1. Ponieważ moje procedury dodawania i zatwierdzania są bajecznie proste
nie ma w nich nic skomplikowanego
2. Po podpieciu się do bazy (tej samej bazy) za pomocą komponentow SQLDB
problem nie występuje

Powiem szczerze już zastanawiałem się czy ich nie wykorzystać a tematu z
zeosami odłożyć na wolniejszy termin. ale zauważyłem ze te komponenty
też mają pewne mankamenty ja np miałem problem z ponownym połączeniem
się do bazy po rozłączeniu. Stad zależy mi na usunięciu tego problemu

Sposób instalacji jest bardzo prosty
1. Instalujemy pakiet Zedlib.lpk
2 Instalujemy pakiet CompositionDialogPackage.lpk

Miabu prośba do Ciebie także jeśli faktycznie to wina błędu w Zeosach to
zależało by mi na jak najszybszym pchnięcu tematu lub znalezienia
obejscia na to

Wszystko co jest potrzebne do odpalenia tego przykładu jest pod linkiem
https://drive.google.com/open?id=1Ypjs40FGg3Lr5Ysj9GtfMuzTlLdW0KDp

Pozdrawiam

miab

unread,
Mar 24, 2018, 6:43:58 AM3/24/18
to
W dniu 24-03-2018 o 03:03, J-23 pisze:

> Wszystko co jest potrzebne do odpalenia tego przykładu jest pod linkiem
> https://drive.google.com/open?id=1Ypjs40FGg3Lr5Ysj9GtfMuzTlLdW0KDp

Tak na szybko.
Po dodaniu do twojego project1 Batona z:

procedure TForm1.Button2Click(Sender: TObject);
begin
DataSourceTree.DataSet.Append;
DataSourceTree.DataSet.Post;
end;

Można klikać na niego do woli i generuje kolejne puste(autonumerowane)
rekordy bez zgłaszania błędu(na co narzekałeś).
Używałem FB2.5-Win32, Lazarus 1.8.2-Win32 i ZEOS 7.3 svn 4422:
https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/testing-7.3/
http://zeoslib.sourceforge.net/viewtopic.php?f=40&t=3795&p=93254#p93254
Przypuszczam że bieżąca wersja svn-owa ZEOS 7.2 też tak się zachowa(jako
że sa praktycznie identyczne za wyjątkiem dodania OleDB i ODBC).
Lada dzień(a być może godzinę) ukaże się finalna wersja 7.2 na:
https://sourceforge.net/projects/zeoslib/
proponuję z nią spróbować.

miab

J-23

unread,
Mar 24, 2018, 6:13:24 PM3/24/18
to
W dniu 24.03.2018 o 11:43, miab pisze:
Coś się musiało więcej zmienić bo działa :)

Skompilowałem z tą wersją co ty czyli r4422 i problem rozwiązany :)

100-krotne dzięki :)

Pozdrawiam
J-23
0 new messages