Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 25 su 25
  1. #21
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    scusami,....innanzi tutto la proprieta DefaultAction dell'obj IBtransaction....come la devo settare TAcommit o altro?

    e poi come faccio a richiamare questo metodo????

    questo e' l'evento afterpost della tabella:

    procedure TForm1.IBTable1AfterPost(DataSet: TDataSet);
    begin
    ??????????????????????????????? cosa ci devo scrivere?
    end;

  2. #22
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Originariamente inviato da 123delphi321
    scusami,....innanzi tutto la proprieta DefaultAction dell'obj IBtransaction....come la devo settare TAcommit o altro?
    Lasciala così com'è, poichè le Commit vengono fatte via codice.

    Originariamente inviato da 123delphi321
    e poi come faccio a richiamare questo metodo????

    questo e' l'evento afterpost della tabella:

    procedure TForm1.IBTable1AfterPost(DataSet: TDataSet);
    begin
    ??????????????????????????????? cosa ci devo scrivere?
    end;
    Niente di più semplice:
    codice:
    procedure TForm1.IBTable1AfterPost(DataSet: TDataSet);
    begin
      IBTable1.Transaction.CommitRetaining;
    end;
    o in alternativa

    codice:
    procedure TForm1.IBTable1AfterPost(DataSet: TDataSet);
    begin
      IBTransaction1.Transaction.CommitRetaining;
    end;
    In definitiva, dato il componente IBTransaction, devi richiamarne il metodo CommitRetaining e tutte le operazioni di Append/Insert, Delete e Update effettuate verranno rese effettive sul database.

    Le transazioni sono molto utili nei casi in cui si debbano effettuare inserimenti, aggiornamenti e cancellazioni di dati su più tabelle con la possibilità di confermarli tutti o annullarli tutti in blocco se uno dei questi non va a buon fine.

    L'annullamento si traduce nel termine RollBack e si ottiene chiamando il metodo omonimo (oppure RollBackRetaining) sul componente IBTransaction.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #23
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    salve a tutti,

    non riesco a cancellare un record di un IBDataset!

    riesco solo a modificarne il contenuto....

    rispiego tutto:
    su una form ho inserito:

    ibdatabase
    ibtransaction
    ibdataset

    eseguo una query e ottengo un IBDataset con 1 record solo:
    codice:
    IBdataset1.SelectSQL.Text := 'SELECT * FROM Tabella where CODICE like '00000001';
    ovviamente il campo codice e' Univoco.

    ottenuto questo dataset....premo un Button (delete) con cui eseguo:
    codice:
    procedure TForm1.Button9Click(Sender: TObject);
    begin
    // delete
    IBDataSet1.DeleteSQL;
    end;
    il codice associato alla proprieta DeleteSql di IBdatabase e':
    codice:
    delete from TABELLA
    where
      CODICE = :OLD_CODICE
    nb. sull'evento afterpost di IBDataset ho inserito questo codice:
    codice:
    procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);
    begin
    IBTransaction1.CommitRetaining;
    end;
    Perfavore, qualcuno mi puo aiutare. grazie
    fulvio

  4. #24
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Devi richiamare il metodo Delete del componente IBDataSet, e non DeleteSQL che non è un metodo bensì la proprietà che contiene lo statement SQL da eseguire per cancellare il record.

    Inoltre, se vuoi eseguire la Commit della transazione quando il record viene cancellato, devi inserire la chiamata a CommitRetaining nell'evento AfterDelete.

    L'evento AfterPost viene generato solo quando esegui una Post, cioè il salvataggio dei dati relativi ad un nuovo record o ad un record preesistente che hai modificato.

    Lascia la chiamata a CommitRetaining nell'evento OnAfterPost se desideri che la transazione venga confermata anche in questo caso.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #25
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    perfetto adesso riesco ad eseguire 'delete'...dovevo richiamade il metodo delete e non deletesql!

    adesso xfavore, 'se puoi', mi spieghi che tecnica e' da usare nell'aggiunta di nuovi record....

    mi spiego meglio:

    partendo dalla mia tabella:

    codice
    nome

    dove il codice e' chiave univoca, devo aggiungere dei record in cui il codice dovra' rappresentare un progressivo (alfanumerico) es.: 2000A, 2000B, 2000C.. etc etc

    in vecchi programmi, io facevo in questa maniera:

    subito dopo la conferma di aggiunta nuovo record;

    lock della tabella.
    lettura ultimo valore + generazione del nuovo valore progressivo.
    append record con scrittura della chiave univoca e degli altri campi.
    commit.
    unlock della tabella.

    in questo modo oltre ad assegnare un valore progressivo (da me generato seguendo alcuni criteri) ero sicuro dell'unicita del valore del campo 'codice'.

    adesso, in delphi, con i dataset che strada devo seguire per poter creare questi codici??

    grazie
    fulvio

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 © 2026 vBulletin Solutions, Inc. All rights reserved.