[ darko_sudarov @ 01.10.2007. 13:24 ] @
| bcb6 tsqldataset-bug?
Ima li neko resenje za predpostavljam bug u BCB6.
Konekcija na Firebird 2.0 je naprevljena preko 4 komponente-TSLDataSet,TDataSetProvider,TClientDataSet,TDataSource
Ako polje u bazi sadrzi date-time sa field pri pokusaju cds->Edit(); BCB izbaci gresku Can't find record or Record is Changed By Another User...sto nije slucaj
Ovo se ponavljana Firebird 2.0 i Interbase 6 serverima dok na Firebird 1.53 sve radi savrseno.
BCB6 je update-ovan za sva 4 packa a navedene komponente su dosle sa BCB-om.
Uslucaju kada izbacim date-time field iz baze sve radi kako treba.
|
[ savkic @ 01.10.2007. 18:50 ] @
To mi liči na grešku koja se javlja kada ne prođe refresh izmenjenog sloga, komponenta pošalje upit za novu verziju sloga sa datim primarnim ključem i ako upit ne vrati rezultat dobija se greška. Proveri da li je komponenta pronašla koje polje je primarni ključ. Pošto kažeš da se ne dešava u FB 1.5x, može biti da je u FB 2x zabranjeno čitanje metadata o strukturi tabela.
[ darko_sudarov @ 02.10.2007. 09:28 ] @
U slucaju kada obrisem date-time field iz baze-sve funkcionise normalno,cak i kada ostavim field date-time bez default 'NOW' ali ga punim preko programa(sto je slozices se losa varijanta zbog neusaglasenosti datuma racunara u mrezi ) onda radi ali cim mu vratim date-time sa default 'NOW' pobrljavi.
Kao da se javi neko kasnjenje u milisekundama i ne prepoznaje rekord koji se trazi radi izmene....predpostavljam.
Ovo je inace glavna prepreka za prelazak sa Firebird 1.5x na 2.0,koliko vidim to mi se desava na svim masinama na kojima sam probao program.
Sto duze analiziram ovu gresku vise mi se cini da joj nema pomoci...i da ce biti tesko preci sa BCB6-ticom na Firebird 2.0 ukoliko ne nastanu izmene na komponentama za konekciju.
Inace nisam razumeo kako da proverim dali komponenta prepoznaje primarni kljuc,nisam to nikada ni radio,pa ako moze malo pomoci oko toga.
[ kiklop74 @ 02.10.2007. 11:02 ] @
Komponente koje dolaze uz BCB6 su matore.
Noviju verziju tih komponenti (IBX) ces naci na ovoj strani:
http://codecentral.borland.com/Author.aspx?ID=102
Mozes da pogledas i listu alternativnih komponenti na ovim stranama. Verovatno ces naci nesto sto ti odgovara:
http://www.ibphoenix.com/main....phoenix&page=ibp_dev_comps
http://codecentral.borland.com/ProdCat.aspx?prodid=5&catid=2
A neka pojasnjenja su i ovde:
http://support.codegear.com/es/article/34750
[ savkic @ 02.10.2007. 23:57 ] @
> U slucaju kada obrisem date-time field iz baze-sve funkcionise normalno,cak i kada ostavim field date-time bez default 'NOW' ali ga punim preko
> programa(sto je slozices se losa varijanta zbog neusaglasenosti datuma racunara u mrezi ) onda radi ali cim mu vratim date-time sa default 'NOW' pobrljavi.
Deluje mi da komponente to datetime polje vide kao primarni ključ (možda je prvo polje u tabeli ili doista primarni ključ).
> Sto duze analiziram ovu gresku vise mi se cini da joj nema pomoci...i da ce biti tesko preci sa BCB6-ticom na Firebird 2.0 ukoliko ne nastanu
> izmene na komponentama za konekciju.
Šta ti koristiš IBX ili dbExpress? Svakako prvo skini poslednje verzije tih komponenti sa datih linkova.
> Inace nisam razumeo kako da proverim dali komponenta prepoznaje primarni kljuc,nisam to nikada ni radio,pa ako moze malo pomoci oko toga.
Zavisi od komponenti koje koristiš. Najlakše da ako imaš source tih komponeti uključih use debug dcu i odeš do mesta gde se generiše refresh upit i vidiš kako on izgleda.
[ darko_sudarov @ 03.10.2007. 08:32 ] @
TSLDataSet je dbExpress komponenta a TDataSetProvider,TClientDataSet,TDataSource su iz Data Access.
Tabela poseduje primary key koji nije date-time vec autoincrement integer sa trigerom i generatorom.
Inace mislim da nije do toga jer se taj problem uvek desi kod date-time field-a,tj tabela koje imaju date time.
Pokucasu sa novim komponentama da vidim dali ce se problem ponoviti.
[ savkic @ 03.10.2007. 10:21 ] @
> Inace mislim da nije do toga jer se taj problem uvek desi kod date-time field-a,tj tabela koje imaju date time.
Onda je možda u ProviderFlags tog datetime polja uključen pwInWhere a UpdateMode providera je upWhereAll ili upWhereChanged, pokušaj da to promeniš, isključiš pwInWhere flag ili postaviš UpdateMode na upWhereKeyOnly. BTW dbExpress koji dolazi uz Delphi mislim da je pravljen za IB pa i to moguće je pravi problem, postoji poseban FB DBX drajver i možeš pokušati sa njim.
[ kiklop74 @ 03.10.2007. 11:05 ] @
Bolje koristi IBX komponente. One generalno dobro rade sa FB.
[ darko_sudarov @ 03.10.2007. 11:08 ] @
U pravu si -kada sam za kolonu date-time iskljucio sve iz ProviderFlags-a i uradio ApplyUpdates(0); prodje bez problema.
Pokusacu jos sa promenom drajvera.
Inace one komponente sa linka koji je poslao kiklop74 nisu pomogle.Ja sam download-ovao dbExpress.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.