Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [delphi] start transaction

    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

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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...

  3. #3

    delphi] start transaction

    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

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Nella Guida in linea di Delphi c'è questo esempio:
    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;
    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.

    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.