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

    [Delphi] Utilizzo di ApplyUpdate e cancelUpdate

    Ciao a tutti , da poco ho convertito un grosso progetto con Db paradox , in Accuracer database - http://www.aidaim.com -

    la compilazione si e fermata su ApplyUpdate e cancelUpdate e Database.ApplyUpdates([table1,table2,ecc]);

    infatti sulle tabelle (Tacrtable), non sono previste queste procedure .

    Esiste un sistema per ovviare a questo problema o che database (indolore) mi consigliate .

    Grazie mille a tutti
    Simone..
    Simone Musiu

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da simonemusiu
    la compilazione si e fermata su ApplyUpdate e cancelUpdate e Database.ApplyUpdates([table1,table2,ecc]);
    Si è fermata con quale errore?

    Originariamente inviato da simonemusiu
    infatti sulle tabelle (Tacrtable), non sono previste queste procedure.
    Dove hai trovato scritto che dovresti richiamarle? Dubito che sia un'informazione fornita dal sito in cui hai trovato i componenti, visto che quei metodi a cui fai riferimento - come hai detto tu - non ci sono.

    Originariamente inviato da simonemusiu
    Esiste un sistema per ovviare a questo problema o che database (indolore) mi consigliate.
    Se una classe non possiede un determinato metodo, non c'è verso di richiamarlo; probabilmente stai adattando o applicando un esempio che riguarda un set di componenti diverso da quello che stai utilizzando. Ovviamente, non è una cosa che puoi fare spensieratamente.

    Non conosco il database che stai utilizzando, ad ogni modo ci sono senz'altro librerie e database largamente più impiegati, come dbExpress (la libreria di accesso ai dati client/server di Delphi) e FireBird, solo per citarne alcuni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    ciao marco ,

    praticamente quella procedura non esiste .
    E un problema perche trattandosi di fatturazione , quando faccio button2.cancel; ,
    i dati vengono scritti ugualmente , ed il magazzino si aggiorna anche se annullo tutto.
    Con paradox scrivevo sull aftercancel , table1.cancelUpdate ,e i dati annullavano sulla tabella .

    Se sapessi come convertire questo codice per firebird avrei gia fatto il passaggio

    if data.magazzino.FindKey([UpperCase(Data.ArticoliVenditaCodice.Value),DAta.V endita.Value,'Vendita']) THEN
    magazzino.edit else magazzino.append;

    Praticamente se trova il codice di vendita(fattura) , scive un record nel magazzino con data prezzo etc .
    Se non posso usare un vendita.cancelUpdate; sono incasinato perche i dati vengono scritti anche se annullo il documento .

    Non riesco ad usare un locate con questi parametri , e di conseguenza convertire tutto con firebird.
    Cosa mi consigli .
    Simone Musiu

  4. #4
    o usi un database che supporta le transazione o usi dbexpress, in questo caso questa "funzionalità" ti viene regalata in quanto la memorizzazione avviene prima tutta in memoria ram e la memorizzazione fisica solamente con update.

    ciao
    sergio

  5. #5
    ciao sergio
    per quanto riguarda la correlazione tra i documenti , che avevo postato tempo fa ,ci sono riuscito alla grande grazie al tuo aiuto.

    Per quanto riguarda il passaggio a firebird , no riesco a convertire questo codice

    if data.magazzino.FindKey([UpperCase(Data.ArticoliVenditaCodice.Value),DAta.V endita.Value,'Vendita']) THEN
    magazzino.edit else magazzino.append;

    infatti FindKey non e supportato , ho provato con locate ma sbaglio qualcosa .

    Grazie mille
    Ciao
    Simone Musiu

  6. #6
    spero di aver capito,

    prova così

    Codice PHP:
    with TQuery.Create(nil) do
    begin

      SQL
    .Add('select');
      
    SQL.Add('  campo_che_vuoi_verificare');
      
    SQL.Add('from magazzino');
      
    SQL.Add('where');
      
    SQL.Add('  campo_che_vuoi_verificare="' valore_del_campo '"');

      
    Open;

      if (
    Eof and Bof)    // allora non c'è
        
    magazzino.Append
      
    else
        
    magazzino.Edit;

      
    Free;

    end
    ciao
    sergio

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da simonemusiu
    Per quanto riguarda il passaggio a firebird , no riesco a convertire questo codice [...]
    Passare ad una libreria di componenti specifica e adottando un database non è questione di convertire un pezzo di codice che si tende a mantenere così come è stato trovato, adattandolo il meno possibile alla situazione.

    Occorre documentarsi, sulla libreria e sul database che si utilizza, sulle pratiche corrette da seguire per l'integrazione con il proprio progetto, sull'infrastruttura di accesso ai dati di Delphi.

    Non puoi prendere del codice, cambiare un database e segnalare come problema che una procedura non è supportata: potrebbe pure non avere alcun senso nel contesto in cui la stai utilizzando, ma non puoi saperlo se non approfondisci prima tutto ciò che sta dietro allo strumento che usi; in quel caso, è solo un raffazonamento di roba esistente, adattata male, senza la sicurezza di eludere tutti i classici problemi con cui si ha a che fare, insomma è un progetto a rischio sia per chi lo sviluppa sia per chi lo utilizza. :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Ciao sergio grazie , ci provo e ti faccio sapere .
    Simone Musiu

  9. #9
    dopo aver creato i TQuery ricordati di collegarlo al database

    DatabaseName := ....;
    ciao
    sergio

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.