Mi è stato sottoposto un problema che vi rigiro essendo di certo fuori
dalla mia portata.
Devo realizzare un programmino: exe, batch, vbs, vb o chissà cosa
altro che mi permetta di modificare il path delle tabelle collegate di
un database access.
Per ragioni a me oscure sulla macchina non è possibile installare il
runtime e risolvere il problema con una normale procedura di relink.
Occorre necessariamente agire con un programmino esterno.
Una applicazione sviluppata in dot.net accede, tra le altre cose, ad
un database mdb. Tale database (db A) contiene a sua volta delle
tabelle collegate che puntano solo ad alcune (forse 3) tabelle di un
secondo mdb (db B).
Ciò che deve essere modificabile da questo programmino che devo creare
è il percorso di queste 3 tabelle a cui punta il Database A. perchè il
database B può essere posizionato in diverse cartelle a seconda delle
esigenze e dei dati che conterrà.
Non avendo alcuna esperienza di Visual Basic puro e nella speranza di
essermi spiegato correttamente, chiedo a voi tutti indicazioni o
suggerimenti.
Un caro saluto.
matteo
>Mi � stato sottoposto un problema che vi rigiro essendo di certo fuori
>dalla mia portata.
>Devo realizzare un programmino: exe, batch, vbs, vb o chiss� cosa
>altro che mi permetta di modificare il path delle tabelle collegate di
>un database access.
>Per ragioni a me oscure sulla macchina non � possibile installare il
>runtime e risolvere il problema con una normale procedura di relink.
>Occorre necessariamente agire con un programmino esterno.
>Una applicazione sviluppata in dot.net accede, tra le altre cose, ad
>un database mdb. Tale database (db A) contiene a sua volta delle
>tabelle collegate che puntano solo ad alcune (forse 3) tabelle di un
>secondo mdb (db B).
>Ci� che deve essere modificabile da questo programmino che devo creare
>� il percorso di queste 3 tabelle a cui punta il Database A. perch� il
>database B pu� essere posizionato in diverse cartelle a seconda delle
>esigenze e dei dati che conterr�.
>Non avendo alcuna esperienza di Visual Basic puro e nella speranza di
>essermi spiegato correttamente, chiedo a voi tutti indicazioni o
>suggerimenti.
>Un caro saluto.
>matteo
Con una cosa del genere in uno script .Vbs io ci sono riuscito.
'---------------------------------------------------------------------------
Set Catalogo = CreateObject("ADOX.Catalog")
Set Tabella = CreateObject("ADOX.Table")
Catalogo.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;User
ID=tuouser;password=tuapassword;Data Source=tuopath\tuofile.mde;Mode=Share
Deny None;Extended Properties='';Jet OLEDB:System
database=tuopath\tuodb.MDW;Jet OLEDB:Registry
Path=SOFTWARE\Microsoft\Office\10.0\Access\Jet\4.0;Jet OLEDB:Database
Password='';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet
OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet
OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet
OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on
Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet
OLEDB:SFP=False"
Set Tabella = Catalogo.Tables("TuaTabella")
Set Prop = Tabella.Properties("Jet OLEDB:Link Datasource")
Prop.value = "nuovopath\nomefile.mdb"
Set Mioset = Nothing
Set Catalogo = Nothing
'--------------------------------------------------------
ora la cosa piu complicata � inserire la giusta connessione.
Devi avere l'accortezza di cambiare ed inserire i dati giusti nei campi:
Source -> ci metti il nome del db da trattare (pu� essere sia .mdb che .mde)
Jet OLEDB:System database -> ci metti l'eventuale tuo database di sistema
per le password
User ID -> nome utente (se usi un .mdw diverso dallo standard access)
password -> la password (se usi un .mdw diverso dallo standard access)
Good Work
Bye :o)
Mi � stato sottoposto un problema che vi rigiro essendo di certo fuori
dalla mia portata.
Devo realizzare un programmino: exe, batch, vbs, vb o chiss� cosa
altro che mi permetta di modificare il path delle tabelle collegate di
un database access.
Per ragioni a me oscure sulla macchina non � possibile installare il
runtime e risolvere il problema con una normale procedura di relink.
Occorre necessariamente agire con un programmino esterno.
Una applicazione sviluppata in dot.net accede, tra le altre cose, ad
un database mdb. Tale database (db A) contiene a sua volta delle
tabelle collegate che puntano solo ad alcune (forse 3) tabelle di un
secondo mdb (db B).
Ci� che deve essere modificabile da questo programmino che devo creare
� il percorso di queste 3 tabelle a cui punta il Database A. perch� il
database B pu� essere posizionato in diverse cartelle a seconda delle
esigenze e dei dati che conterr�.
Non avendo alcuna esperienza di Visual Basic puro e nella speranza di
essermi spiegato correttamente, chiedo a voi tutti indicazioni o
suggerimenti.
Un caro saluto.
matteo
---------- RISPOSTA --------------
Ma il programma scritto in dot.net pu� essere modificato ?
Se la risposta � s�, perch� non prevedere che il percorso delle tabelle B
sia sempre definito in un file di tipo txt, modificabile a piacimento ?
Ciao
Antonio
Ragazzi intanto grazie mille per la risposta.
Ora proverò a vedere come implementare questa soluzione e vi faccio
sapere.
buone vacanze a chi parte.
M
Ciao antonio, rileggo ora la tua domanda, non lo so se si può
modificare.
Purtroppo non lo sviluppo io, io ho solo fornito l'estrazione dati da
un gestionale in un mdb e la struttura delle tabelle in esso
contenute.
Nulla di più!
sorry ...
Ecco la soluzione semplificata al massimo.
Studierò se del caso i vbscript e gli oggetti adox.
Grazie a tutti.
matteo
'--------------------------------------------------------------------------
-
Set Catalogo = CreateObject("ADOX.Catalog")
Set Tabella = CreateObject("ADOX.Table")
Catalogo.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;User
ID=Admin;password=;Data Source=c:\documenti\flavio\DBFE.mdb;"
Set Tabella = Catalogo.Tables("Tabella1")
Set Prop = Tabella.Properties("Jet OLEDB:Link Datasource")
Prop.value = "c:\documenti\flavio\db1.mdb"