Salve
Ho bisogno di annullare l'operazione di memorizzazione sul database, so che si usa transisolation, starttransaction e rollback,,,,,se avete
un esempio di utilizzo vi ringrazio...
ciao Monique
Salve
Ho bisogno di annullare l'operazione di memorizzazione sul database, so che si usa transisolation, starttransaction e rollback,,,,,se avete
un esempio di utilizzo vi ringrazio...
ciao Monique
Quando fai domande riguardanti i database, specifica sempre quali tipi di componenti usi per l'accesso (BDE, dbGo for ADO, dbExpress, IBExpress...)...sarà più facile indicarti la soluzione giusta al tuo problema.
Non ho esempi pronti e impacchettati, ma posso dirti che, almeno per quanto riguarda i componenti IBExpress per InterBase, ciascuno dei componenti per l'accesso ai dati viene collegato ad un componente Transaction. Quando esegui un'operazione sul DataSet, la transazione viene attivata (StartTransaction) e tutte le modifiche e gli aggiornamenti apportati vengono effettuati e memorizzati nella transazione. Per confermare le modifiche, puoi usare il metodo Commit, altrimenti puoi chiamare il metodo Rollback.
Nei componenti InterBase, i suddetti metodi provvedono anche alla chiusura di tutte le tabelle, per cui è meglio utilizzare i metodi CommitRetaining e RollbackRetaining.
Consulta anche la Guida in linea di Delphi...contiene sempre informazioni dettagliate e interessanti sui metodi dei componenti, anche se in lingua inglese (ma non deve essere un grosso problema, vero?)
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ciao Alka
Si ho visto ma non mi funziona..
Uso paradox e componenti DataAccess....
Io ho inserito start transaction all'inizio della procedura...
poi tramita un pulsante utilizzo rollback..ma purtroppo non funziona,
non va in errore ma memorizza le informazioni comunque...
tra l'altro anche se io non uso il metodo post...le informazioni vengono memorizzate comunque...
non so....
eventualmente potrei cancellare i record che mi servono..esempio
cancella tutti i record che nel campo (filtro c'è scritto cancella, però non uso una query ma un ttable....e tra l'altro la tabella la creo a runtime..
grazie ciao
Nella Guida in linea di Delphi c'è questo esempio:
Non ne sono certo, ma credo che le potenzialità sfruttabili in materia di transazioni dipendano anche dal formato di database utilizzato; ad esempio, la Guida in linea suggerisce di impostare la proprietà TransIsolation a tiDirtyRead quando si ha a che fare con Paradox, mentre altri formati di database possono essere utilizzati anche con gli altri metodi disponibili.codice:procedure TForm1.ApplyButtonClick(Sender: TObject); begin with CustomerQuery do begin Database1.StartTransaction; try ApplyUpdates; {try to write the updates to the database}; Database1.Commit; {on success, commit the changes}; except Database1.Rollback; {on failure, undo the changes}; raise; {raise the exception to prevent a call to CommitUpdates!} end; CommitUpdates; {on success, clear the cache} end; end;
Sinceramente, a meno che tu non abbia particolari imposizioni, ti suggerirei di passare ad un formato diverso da Paradox per applicazioni serie con supporto alle transazioni.
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...