Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [Delphi 2005] Compressione DB Access

    Ciao a tutti,
    sto sviluppando, in delphi 2005, un gestionale che utilizza un db access, adesso desidero inserire un comando che, richiamandolo tramite pulsante dal menu principale, mi permette di comprimere il database.
    Sul sito Delphi & Dintorni ho trovato il seguente articolo: Manutenzione DB Access - Compressione di Giuseppe Madaffari, quindi ho creato la
    codice:
    procedure CompactAccessDB...
    ma quando la richiamo dal pulsante Comprimi non intende funzionare, qualcuno può darmi un aiutino?
    Grazie a tutti per la collaborazione.
    RS95

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    ...e "non intende funzionare" sta per...?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Nel senso che richiamo la procedure nell'evento onClick del pulsante Comprimi, ma viene sollevata la seguente eccezzione:
    codice:
    Project xxyy.exe raised exception class EOleSysError with message 'La classe non dispone della licenza per l'utilizzo'
    in:
    codice:
    DBEngine:=CreateOleObject('DAO.DBEngine.35');

    RS95

  4. #4
    Utente di HTML.it L'avatar di danz67
    Registrato dal
    May 2005
    Messaggi
    213
    Io avevo lo stesso problema e ho risolto installando la libreria JRO. Puoi dare uno sguardo a questo articolo http://delphi.about.com/od/sqlserver.../aa091801a.htm

  5. #5
    Grazie, do un occhiata e vi farò sapere.
    Ciao
    RS95

  6. #6
    Ciao a tutti,
    ho provato ad installare la libreria consigliata da danz67 ma nella palette non trovo le due classi Replica e JetEngine, qualcuno può aiutarmi? Inoltre è necessario utilizzare gli ADOX? Al momento uso solo ADO.

    RS95

  7. #7
    Utente di HTML.it L'avatar di danz67
    Registrato dal
    May 2005
    Messaggi
    213
    Originariamente inviato da RadioStudio95
    Ciao a tutti,
    ho provato ad installare la libreria consigliata da danz67 ma nella palette non trovo le due classi Replica e JetEngine, qualcuno può aiutarmi? Inoltre è necessario utilizzare gli ADOX? Al momento uso solo ADO.

    RS95
    Se fai una ricerca su google troverai un componente JRO da installare, è a pagamento pero' funziona davvero bene e ti permette di fare quello che ti serve, c'è anche una demo di un progetto che ti spiega perfettamente come fare il backup e altro.
    Fammi sapere, ciao.

  8. #8
    Ciao ragazzi,
    ritorno nuovamente su questo argomento in quanto ho scoperto il perchè dell'errore Project xxyy.exe raised exception class EOleSysError with message 'La classe non dispone della licenza per l'utilizzo', il problema stava nel richiamare la versione 3.5 anzichè la 4.0 (che utilizzo) di DAO.DBEngine.

    Adesso, ho il seguente problema, definita la procedura:
    codice:
    procedure CompactAccessDb(DBName, TempDBName:String; NewFile:Boolean=False; Pwd:String='';NewPwd:String=#0);
    nella form principale del programma, vado a richiamarla dal menu principale con:
    codice:
    procedure TForm1.ComprimiDB1Click(Sender: TObject);
    begin
    CompactAccessDb;
    end;
    ottengo l'errore: Not enough actual parameters.
    Se invece inserisco due variabili di tipo string:
    codice:
    procedure TForm1.ComprimiDB1Click(Sender: TObject);
    var n, m:string;
    begin
    CompactAccessDb(n, m);
    end;
    ottengo il seguente errore:
    Project Project.exe raised exception class EOleSysError with message 'Stringa dell'interfaccia non valida, ProgID: "DAO.DBEngine.40"'
    Inoltre, prima di implementation, ho dichiarato DBName e TempDBName variabili di tipo string ed il relativo percorso.
    e grazie per l'aiuto.
    RS95
    @danz67: ormai desidero capire come funziona la procedura riportata nell'articolo di G. Madafferi, quindi ho scelto di non arrendermi, comunque grazie.

  9. #9
    Utente di HTML.it L'avatar di danz67
    Registrato dal
    May 2005
    Messaggi
    213
    Originariamente inviato da RadioStudio95
    @danz67: ormai desidero capire come funziona la procedura riportata nell'articolo di G. Madafferi, quindi ho scelto di non arrendermi, comunque grazie.
    E' giusto che non ti arrendi, io pero' ho preferito scegliere la soluzione che ti ho detto per problemi di tempo in quanto sto ultimando un gestionale.

  10. #10
    Ciao a tutti,
    visto che non riesco a trovare la soluzione al problema, per il momento ho utilizzato la libreria JRO (come mi aveva consigliato danz67) seguendo questa via:
    - ho dichiarato una costante di tipo string per la directory nella quale si trova il database, che ho chiamato dir;
    - ho dichiarato due variabili, sempre di tipo string per quanto riguarda il db (DBName) ed il relativo file temporaneo (TempDBName);
    - ho importato nel mio progetto le due tabelle (ADODB_TLB.pas e JRO_TBL.pas) della libreria JRO;
    - ho dichiarato la unit JRO_TLB fra le uses (dopo la dichiarazione implementation) utilizzate dalla form;
    - ho associato il seguente codice all'evento onClick del pulsante Comprimi:
    codice:
    procedure TForm1.Comprimi.Click(Sender:TObject);
    Var JetEngine:IJetEngine;
    begin
    ADOConnection1.Connected:=false; //chiudo la connessione
    ADOTable1.Close;  //chiudo la tabella
    JetEngine:=CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dir+DBName, 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dir+TempDBName);
    DeleteFile(dir+DBName);  //elimino il database principale
    RenameFile(dir+TempDBName, dir+DBName);  //rinomino il file temporaneo con il nome del DBName
    JetEngine:=nil;
    ADConnection1.Connected:=true;  //riattivo la connessione al db
    ADOTable1.Open; //riattivo la tabella
    end;

    RS95
    @danz67 grazie per l'aiuto

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.