Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    quindi supponendo che il mio eseguibile si trovi in una cartella "Assicurazione" e il db nella cartella "Assicurazione\db\"

    il percorso relativo sarà semplicemente "db\assicurazione.mdb", giusto???

    ciao!

  2. #12
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Esattamente.
    La soluzione più sicura in assoluto è quella di utilizzare sempre un percorso - appunto - assoluto, nel caso in cui la directory a cui devi accedere sia una sottodirectory della cartella in cui si trova l'applicazione.
    Prendendo il tuo caso come esempio, puoi ottenere il percorso del file eseguibile attraverso l'istruzione
    codice:
    ExtractFilePath(Application.ExeName)
    Questo ti restituisce il percorso in cui si trova il file eseguibile della tua applicazione (quindi è insensibile a quella che è la cartella corrente, che potrebbe variare durante l'esecuzione del programma stesso). Unendo questo percorso a "db\assicurazione.mdb", otterrai un percorso assoluto in grado di condurti con sicurezza al database in ogni occasione (ammesso che il percorso e il file siano sempre in quella posizione!).

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

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

  3. #13
    si ma posso inserire questo codice nella connection string???

    quindi diventa:
    codice:
    ExtractFilePath(Application.ExeName)\db\assicurazione.mdb
    giusto???

  4. #14
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Calma, ExtractFilePath è una funzione API. Devi costruire la tua stringa di connessione unendo tra di loro le stringhe fisse dei parametri di connessione con il valore restituito dalla funzione attraverso il simbolo +.

    Un esempio:
    codice:
    'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='
     + ExtractFilePath(Application.ExeName)
     + 'db\assicurazione.mdb;Mode=Share Deny None;Extended Properties=...';
    Si tratta di un semplice concatenamento di stringhe in cui la parte relativa al percorso del database non viene esplicitata, ma ottenuta dall'unione del valore restituito da ExtractFilePath(Application.ExeName), che è la parte variabile, dinamica.

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

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

  5. #15
    si ma, poichè ho utilizzato la Adoconnection la connection string è stata definita tramite l'object inspector, come faccio a modificarla come mi hai detto??? Nella unit non compare...

    ciao!!

  6. #16
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    La proprietà ConnectionString del componente ADOConnection non è altro che una stringa. Il package di componenti ADO contiene un editor di proprietà che ti permette, attraverso un wizard, di costruire "visualmente" il contenuto della proprietà ConnectionString, ma il risultato che si ottiene è sempre e solo una stringa risultante che contiene tutti i parametri di connessione; il wizard aiuta solo il programmatore a definire velocemente i parametri senza dover scrivere manualmente l'intera stringa, col rischio di commettere errori, vista la sua complessità.
    Tu dovrai specificarla a runtime, copiandola dall'Object Inspector e incollandola nel codice, sostituendo successivamente la parte che specifica il percorso del database come indicato nella risposta precedente e impostando tale valore per la proprietà ConnectionString prima di aprire la connessione alla base dati.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #17
    capito. Ma dove devo "incollarla" esattamente???

  8. #18
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Te l'ho detto, forse ti è sfuggito.
    Devi aprire la connessione a runtime. Prima di aprirla, modifica la proprietà ConnectionString:
    codice:
    ADOConnection1.ConnectionString := 'parametri di connessione modificati';
    ADOConnection1.Open;
    Esegui questo codice prima di utilizzare in qualsiasi modo la base dati, ad esempio scrivendolo nell'evento OnCreate() del Form o del DataModule nel quale è contenuto il componente.

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

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

  9. #19
    grazie mille!!! un'altra domanda: quali sono i file necessari per l'esecuzione del mio programma dopo la compilazione del file .exe???
    Le unit credo siano superflue...

    ciao!

  10. #20
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Le unit sono inutili poichè confinate solamente alla compilazione del file eseguibile. Nativamente, il programma non necessità di alcuna libreria da installare diversa da quelle di sistema presenti in Windows. Nel tuo caso, ti serve sicuramente che nella macchina di destinazione sia installato ADO. Apparentemente, non dovrebbe essere necessario altro, a meno che tu non abbia fatto uso di librerie di terze parti, o di componenti che fanno riferimento a librerie di terze parti.

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