Newsgroup: it.comp.lang.visual-basic
Titolo: VB6: ADO: l'eseguibile non trova il database

Ciao ragazzi,
ho un problema con ADO. Premetto che utilizzo Vb6 e Xp Professional
Sp2.
Creando il pacchetto autoinstallante con Inno Setup, creo ovviamente
una cartella in C:\Programmi\Mioprog\.
Tutti i file vengono installati lì, compreso il database (in Access
2003).
Poi, a scelta dell'utente, l'autoinstallante crea un collegamento sul
desktop, oltre alla cartella Mioprog con un altro collegamento
rintracciabile in START --> Programmi --> Mioprog.
Arrivo al problema. Se lancio il programma da collegamento sul desktop
o dal menu di Windows va in errore e si interrompe, perchè cerca il
database sul desktop!
Se invece da Risorse del Computer lo lancio dalla cartella in cui è
stato installato lo legge nella medesima cartella.
Come mai succede ciò? Il collegamento non è solo un richiamo
all'eseguibile?
Per farvi capire meglio vi posto anche la stringa della connessione...
CONN.ConnectionString = "Data Source= database.mdb;User ID=Admin;"
Forse devo passargli anche App.path?
Illuminatemi vi prego...
Grazie a tutti, Adriano.


Gli devi dire in che cartella si trova il database...
il database potrebbe anche non risiedere nella cartella in cui si trova  
l'applicazione
pensa se installassi l'applicazione sui client e il db sul server...in  
quel caso dovresti dargli l'indirizzo della
cartella del server in cui si trova il db...lo stesso ragionamento va  
fatto per il database in locale...
Ciao
IAK
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

> Gli devi dire in che cartella si trova il database...
Intanto grazie per la risposta rapidissima!
Per come faccio ad assegnare una cartella prestabilita, se poi
l'utente in fase di installazione cambia la cartella di destinazione?
Gli passo la stringa così?
 CONN.ConnectionString = "Data Source = " & App.path &
"database.mdb;User ID=Admin;"
Scusate la probabile stupidità della domanda, ma è tutta colpa della
poca esperienza e dell'influenza! :)

 "database.mdb;User ID=Admin;"
In windows devi sempre distinguere il percorso di avvio dal percorso ove un 
programma risiede.
Quando lavori con percorsi devi *SEMPRE* specificare il percorso completo, 
altrimenti il file o la cartella verrà cercata nel percorso di avvio.
Nel tuo caso devi specificare App.Path, con un'accortezza:
strPath = App.Path
if (Right$(strPath , 1) <> "\") strPath = strPath & "\"
Questo dovrebbe essere necessario se ad es. il programma si trova sulla root 
del disco.
Ciao 



Si, gli devi passare la stringa in quel modo anche se IMHO non è il modo  
migliore.
Potresti crearti un file percorso.txt in cui scrivere la stringa di  
connessione
poi all'apertura del programma potresti leggere dal file txt la stringa e  
associarla ad una variabile stringa pubblica. In quel modo diventerebbe  
più semplice gestire il percorso del database senza dovere ricompilare  
ogni volta il programma. Infatti mettendo il solo fle txt nella cartella  
dell'applicazione e il database dove ti pare, potresti fare una cosa del  
genere in un modulo:
Public stringadiconnessione As String
e poi utilizzare un comando del tipo
Open App.Path + "\percorso.txt" For Input As #1
da qui ti leggi la sctingra e la associ alla variabile pubblica...


 ha scritto nel messaggionews:1171374492.4...@s48g2000cws.googlegroups.com...

Grazie... provo immediatamente e vi faccio sapere...

Perfetto... risolto... Grazie mille ragazzi...
Neanche immaginate quanto possa aver imparato da voi in questi ultimi
mesi...
Grazie ancora. Adriano.