[ dramiljas1 @ 20.09.2008. 13:59 ] @
Početnik sam i sa Delphi 6 pristupam firebirdu. Koristim IBExpert a od komponenti za pristup IBDatabase , IBQuery, IBTable...treba mi odgovor na tri pitanja
1. U Ibexpertu sam stavio
select top 10 * from delatnosti
to ne radi javlja neku grešku. Kako da uzmem prvih 10 redova neke tabele. To radi na MSSQL Serveru
2. Problemi sa osvežavanjima
Ako startujem dvaput istu aplikaciju , ne vidim promenu koju sam izvršio prvom aplikacijom u drugoj aplikaciji. Čak šta više kada odem u IBExpert u toj tabeli taj zapis ne postoji. Tek se kasnije pojavi. Kako da nateram aplikaciju da kada izmenim nešto prvom aplikacijom da mi se odmah vidi u bazi i posle zatvaranja IBQuery - ja i otvaranja u drugoj aplikaciji odmah vidi i u drugoj aplikaciji.
3. Kada sa dve aplikacije pristupim istom slogu u tabeli javi mi se greška gde se javlja neki deadlock kao greška
[ dramiljas1 @ 20.09.2008. 17:03 ] @
Okej rešio sam problem 2 i 3. Molim za odgovor kako da kažem

select top 10 , polje1, polje2 from tabela. U MSSQLServeru je top kako ide u kombinaciji firebird - ibexpert
[ schild @ 22.09.2008. 06:30 ] @
select first 10 polje1, polje2 from tabela
a u FB2.1 moze i
select polje1, polje2 from tabela rows 10

Nemoj zaboraviti ORDER BY, nije svejedno po kojem redosledu uzimas prvih 10 slogova.
[ dramiljas1 @ 22.09.2008. 09:23 ] @
Hvala schild
[ dramiljas1 @ 22.09.2008. 09:27 ] @
Može još jedno pitanje. Zašto kada kažem ibTransaction.commit on mi zatvori ibDataSet za koji je ta transakcija vezana odnosno stavi ga u stanje InActive. Glupo mi je da posle svakog Komitovanja ponovo otvaram IbDataSet i lociram ga na taj slog. Da li ima neka opcija da kada kažem commit on lepo komituje i ostane na tom slogu sa otvorenim IBDataSetom.
[ schild @ 23.09.2008. 05:56 ] @
Citat:
dramiljas1: ...Zašto kada kažem ibTransaction.commit on mi zatvori ibDataSet za koji je ta transakcija vezana odnosno stavi ga u stanje InActive. Glupo mi je da posle svakog Komitovanja ponovo otvaram IbDataSet i lociram ga na taj slog. Da li ima neka opcija da kada kažem commit on lepo komituje i ostane na tom slogu sa otvorenim IBDataSetom.

Tako je napravljeno. Commit označava kraj transakcije, ali ne i kreiranje nove. Probaj ibTransaction.CommitRetaining, tom komandom radiš commit ali se ne zatvara transakcija, pa ti i datasetovi ostaju otvoreni.
[ savkic @ 23.09.2008. 11:57 ] @
> Može još jedno pitanje. Zašto kada kažem ibTransaction.commit on mi zatvori ibDataSet za koji je ta transakcija vezana odnosno stavi
> ga u stanje InActive. Glupo mi je da posle svakog Komitovanja ponovo otvaram IbDataSet i lociram ga na taj slog. Da li ima neka opcija da
> kada kažem commit on lepo komituje i ostane na tom slogu sa otvorenim IBDataSetom.

Postoji CommitRetaining ali to treba izbegavati, inače je to dodato u Interbase zbog Delphi programera koji su navikli da rade sa BDEom (ukratko to je zastarelo). Ako ipak planiraš da koristiš CommitRetaining obavezno se postaraj da ne držiš transakciju previše otvorenu već da redovno pozivaš Commit.
Inače, nema razloga da koristiš istu transakciju za pregled podataka i izmene nad podacima (update, insert, delete), možeš imati jednu transakciju za izmene i jednu ReadOnlyReadCommited transakciju za pregled podataka koju nećeš morati da restartuješ a neće ni negativno uticati na bazu.