PDA

View Full Version : VB6, database e OS


Furla
25-11-2006, 21:51
salve a tutti, ho un grosso problema. il computer che usavo per programmare era vecchiotto, e tempo fa ho deciso di cambiarlo; montava win2k sp4. il nuovo computer invece monta win2k3 sp1.

il problema è che uno dei programmi che ho realizzato in vb6 (con visual studio), che interagisce con un database .dbf, sul pc vecchio funziona e sul nuovo no!

mi spiego meglio: io mi connetto al database con le seguenti istruzioni:

On Error GoTo Erroredb
Dim ConnDB As New ADODB.Connection
Dim rst As New ADODB.Recordset

ConnDB.CursorLocation = adUseServer
ConnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & ";Extended Properties=DBASE III"
rst.Open "Select * From " & numerodb & "_" & mese & anno & ".DBF", ConnDB, 3, adLockReadOnly, adCmdText


sul pc vecchio tutto funziona tranquillamente, mentre su quello nuovo il programma non riesce a connettersi al database, sia nel caso in cui io tenti di eseuire il vecchio exe, sia nel caso in cui compili il programma dal pc nuovo.


a questo punto vedo due alternative:

- riusciamo a capire cosa c'è che non va (mi insospettisce, ad esempio, la parte della stringa della open "Provider=Microsoft.Jet.OLEDB.4.0", magari con il cambio di OS va cambiato anche questo, o qualcos'altro?)

- mi consigliate un modo di accedere a questo file .dbf con il c++, rifaccio il programma da zero in questo linguaggio che non conoscevo quando lo ho scritto la prima volta (essendo un programma relativamente breve me lo posso permettere), anche se mi servirà qualche dritta in più (ad esempio su come far aspettare al programma x secondi).

grazie a chi mi aiuta!

Furla
27-11-2006, 08:57
up

giannola
27-11-2006, 09:30
scusa ma che db usi ?
in ogni caso non ti dovrebbe ritornare un errore ?
poi resta da capire una cosa, il db è montato sul pc vecchio, ma su quello nuovo hai settato la variabile di percorso in modo da andarlo a cercare non dentro il pc stesso ma sull'altro ?

Furla
27-11-2006, 10:46
il db è un .dbf, ovviamente sul pc nuovo ho copiato anche il database -.-

non ritorna errori perché prima delle istruzioni di connessione, come vedi, ho messo un "On Error Go To..." in modo che il programma riporti semplicemente un suo messaggio senza che si arresti. ora provo a commentare quell'istruzione per vedere che errore genera il programma quando tenta di accedere.

[EDIT]
il debug di visual studio 6 si ferma all'istruzione che apre la connessione con il seguente errore:

21474818113 (8000ffff)
Errore Irreparabile.


invece compilando ed eseguendo il codice, una volta rimossa l'istruzione di gestione degli errori, windows dà questo errore:

Run-time Error -2147221164 (80040154)
Interfaccia non registrata.

Furla
27-11-2006, 11:48
a questo URL ho trovato delle indicazioni che penso siano interessanti:

http://www.microsoft.com/italy/msdn/library/default.asp?url=/italy/msdn/library/net/adonet/data_mdacroadmap.asp?frame=true


Componenti obsoleti di MDAC

Si tratta di componenti ancora supportati nella versione corrente di MDAC, ma che verranno esclusi dalle versioni future. Microsoft consiglia di evitare di utilizzarli quando si sviluppano nuove applicazioni e di eliminare le dipendenze da questi componenti quando si aggiornano o modificano applicazioni esistenti.
elenco di componenti, tra i quali:
* Jet: a partire dalla versione 2.6, MDAC non contiene più componenti Jet. Vale a dire che MDAC 2.6, 2.7, 2.8 e tutte le versioni future di MDAC non conterranno Microsoft Jet, il provider OLE DB per Microsoft Jet e i driver di database desktop ODBC.


io ho la versione 2.8 di mdac, sul nuovo PC...

quindi dovrei usare un altro provider per aprire la connessione. provo a spippolare un po' da me sul codice, come pensavo dovrò smanettare su quella stringa della .open per fargliela prendere...

se qualcuno sa di preciso cosa devo fare ben venga :D

Furla
28-11-2006, 18:42
niente, qualcuno sa cosa devo fare per cambiare il driver con cui accedo al database?

in alternativa ho trovato questa, ma non conosco molto bene il vb6 e non ho la minima idea di come si usino le dll... qualcuno mi sa insegnare?

http://www.topshareware.com/CDBFAPI.DLL-download-47456.htm

Furla
30-11-2006, 17:17
up

Furla
01-12-2006, 16:26
up