🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
7 messages
7 total messages Started by J-23 Mon, 19 Mar 2018 01:22
"0 record(s) updated. Only one record should have been update" ZeosDB
#81193
Author: J-23
Date: Mon, 19 Mar 2018 01:22
42 lines
1068 bytes
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?topic2170.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
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81194
Author: J-23
Date: Mon, 19 Mar 2018 01:29
53 lines
1391 bytes
W dniu 19.03.2018 o 01:22, J-23 pisze:
> 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?topic2170.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ć
>

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
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81195
Author: "Krzysztof Szysz
Date: Mon, 19 Mar 2018 15:48
24 lines
571 bytes
> 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/
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81197
Author: J-23
Date: Wed, 21 Mar 2018 04:32
8 lines
257 bytes
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
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81198
Author: J-23
Date: Sat, 24 Mar 2018 03:03
48 lines
2052 bytes
W dniu 21.03.2018 o 04:32, J-23 pisze:
> 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.
>

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
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81199
Author: miab
Date: Sat, 24 Mar 2018 11:43
25 lines
1000 bytes
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@&t795&p“254#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
Re: "0 record(s) updated. Only one record should have been update" ZeosDB
#81200
Author: J-23
Date: Sat, 24 Mar 2018 23:13
12 lines
419 bytes
W dniu 24.03.2018 o 11:43, miab pisze:
> 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@&t795&p“254#p93254

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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads