Newsgroup: it.comp.lang.delphi
Titolo: [FireBird - Newbie] Componenti IB e transazioni

	Un saluto a tutti. Sto facendo le mie prove con FireBird e i componenti
Interbase, perň evidentemente c'č qualcosa che mi sfugge... i dati vengono scritti
fisicamente sul database solo quando chiudo la connessione (ovvero, chiudo la
transazione). Qualche dettaglio in piů: uso un componente IBDatabase con associato
un IBTransaction; accedo attraverso una IBTable alla tabella che mi interessa.
Funziona tutto, tranne che... se accedo alla tabella da IBExpress, ad es., non
vedo i cambiamenti effettuati dal mio programma fino a quando non chiudo la
connessione al database. Mi sono perso qualcosa?
	Ho provato anche con i componenti Zeos, e non risulta esserci questo
inconveniente; perň in quel caso ho dei problemi con i campi contatore...
preferirei, se possibile, restare sui IB standard.
	Grazie...
		Giovanni
-- 
=========================================================
http://www.zangrossi.137.it
Hattrick: Dinamo Ducks (50212), Italia, Lombardia, IV.32
Dinamo Ducks website: 
http://dinamoducks.altervista.org/
=========================================================

 connessione al database. Mi sono perso qualcosa?
Allora i dati vengono fisicamente scritti nel db quando fai un Commit della
transazione. Solitamente (almeno io) lo faccio insieme al post dei dati, in
modo da star sicuro che vengano scritti. Se non lo vuoi fare a manina ci
dovrebbe essere un parametro che si chiama autocommit, cioč ogni volta che
fai il post ti viene fatto automaticamente anche il commit (questo perň nei
FIB non saprei dirti se negli IBX anche).
Non usare l'IBTable, usa IBDataset che č meglio, non ti fa il fetch di tutti
i dati. 
Per vedere i cambiamenti effettuati devi impostare nella transazione il
parametro read_committed, in questa maniera ti se fai un refresh ti legge i
dati che un utente ha postato tramite il commit della transazione.
Ciao
-- 
Fabrizio Mancini - <f[.]mancini[@]tin[.]it> 04/12/2003 11.09.06
Open Delphi Manual (
http://groups.yahoo.com/group/delphi_open_manual/
)

 chiudo la connessione (ovvero, chiudo la transazione). Qualche
[...]
Usa una IBTransaction +/- per ciascuno dei componenti di accesso ai
dati.
Es: se vuoi popolare una griglia abbi il tuo IBDataSet con la sua
IBTransaction. Se inserisci nuovi record dalla griglia questi saranno
mandati al database con ApplyUpdates. Per fare in modo che anche nuove
query (anch'esse sotto transazione) li possano vedere dovrai committare
la transazione sotto la quale sono stati inseriti.
Ovviamente se la nuova transazione e' di tipo read committed (come
normalmente e').
Personalmente userei una transazione per ciascuna operazione che
desiderassi rendere atomica. Es: inserimento di un ordine:
start transaction;
try
 inserimento delle N righe
 inserimento testata
 commit
except
 rollback;
 log errore o notifica a utente
end;
Saluti
Paolo Arosio
-- 
"La dimostrazione dell'esistenza di specie intelligenti nell'universo
 e' che non ci vengono a trovare"

 dati che un utente ha postato tramite il commit della transazione.
	Questo l'ho impostato.
	Rimane il problema dell'autoCommit...
	Grazie dell'aiuto!


 sottomano! ;-)
no prob, è solo per questioni di performance e prima che ti abitui ad usare
sempre ibtable che a volte torna scomodo.
Ciao e buon divertimento
-- 
Fabrizio Mancini - <f[.]mancini[@]tin[.]it> 04/12/2003 17.18.28


 Ciao e buon divertimento
	Grazie mille!!
	Giovanni
-- 


 al massimo provo a ottimizzare i dataset..
basta che gli metti nomi del tipo ds01, ds02 ecc, cosi per le transazioni
trans01, trans02, ecc..  poi dovresti riuscire a risalire al nome del
dataset originario, estrapoli lo 01, 02 e ci metti davanti il prefisso che
hai scelto per la transazione e fai il commit. Tieni conto però che ti
complichi la vita; se hai solo una decina di dataset ti conviene scrivere il
codice per ogni transazione. Poi se lo vuoi fare per esperimento, beh questo
è un altro discorso... ;-))
Ciao vado a casa a domani.
-- 
Fabrizio Mancini - <f[.]mancini[@]tin[.]it> 04/12/2003 18.15.32
