Newsgroup: it.comp.lang.visual-basic
Titolo: Connessione ADO...si apre ma poi muore...aiuto!!

Salve,
nel post precedente a questo, chiedevo se era possibile creare un
database utilizzando DAO e poi accederci tramite ADO. Sembra che si possa
fare, infatti una volta creato il database, riesco ad aprire una
connessione verso di questo; il fatto che si inchioda se cerco di fare
qualcosa su questo database, può dipendere da una ipotetica incompatibilità
tra quello che crea DAO (il database) e il modo in cui vado a metterci mano
con ADO?? Mi spiego meglio...ho un form principale che mi richiama una
finestrella in cui si può scegliere un database da aprire, facendo click su
ok chiamo una sub che ho dentro un modulo...fin qui tutto bene, quando
cerco di aprire un recordset su quel database muore!! Posto il coice:
Qui ho fatto click sulla finestra dove scegliere il database e mi prendo il
path completo del file...
 
Private Sub CmdOk_Click()
    Dim strPath As
String
 
    strPath = Dir1.Path
 
    If Len(strPath) > 3 Then strPath =
strPath & "\"
 
    db.PathCompleto = strPath & File1.FileName
'prendo dal nome del file il nome della tabella
    db.NomeTabella =
Mid(File1.FileName, 1, (InStrRev(File1.FileName, ".", -1, vbTextCompare) -
1))
 
    'chiama la funzione ApriDb dal modulo
    Call
ApriDb(db.PathCompleto, db.Connessione)
 
    Unload frm_Apri
End Sub
Nel modulo...
 
Qui mi apro la connessione al db che ho scelto e sembra
andare, non ho nessun tipo di errore
 
Public Sub ApriDb(ByVal
strPathCompleto As String, _
                  ByRef Connessione As
ADODB.Connection)
 
    Set Connessione = New
ADODB.Connection
 
    Connessione.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" & _
"Data Source=" & strPathCompleto & ";" & _
"Persist Security Info=True"
 
    Connessione.Open
End Sub
 
Quando poi
dal form principale chiamo questa sub qua sotto, che si trova sempre nel
modulo, mi si blocca e non capisco che vuole!!
 
Public Sub
IstruzioneSql(ByRef strSql As String, _
                         ByRef
mioArray() As dtDatabase, _
                         ByVal Connessione As
ADODB.Connection)
 
    Dim Recset As ADODB.Recordset
Recset.ActiveConnection = Connessione
    Recset.Source = strSql
Recset.CursorType = adOpenForwardOnly
    Recset.Open
    ....
    ...
..
    .
 
Innanzitutto perchè se gli passo la stringa sql byval non mi
passa una mazza e byref si? E poi anche la conncetionstring quando mi
arriva qui mi è diventata:
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data
Source=C:\Temp\prova.gdb;Mode=Share Deny None;Extended Properties="";Jet
OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database
Password="";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;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
 
?!?!?! Ma io mica ho scritto tutte queste cose!!
 
Di
preciso mi muore qui:
 
    Recset.ActiveConnection = Connessione
 
Non
riesce ad aprirmi un recordset su quella connessione. L' unica cosa che a
me veniva in mente era una connectionstring sbagliata...però se fosse
sbagliata non dovrebbe inchiodarsi quando apro il database? L' errore che
ho è:
 
    Variabile oggetto o variabile del blocco with non impostata
Ma che vuole?
 
Saluti...
---------------------------------------------------
Inviato da: 212.29.130.175, via 
http://usenet.iol.it

 path completo del file...
Quando si fa qualche cosa di nuovo,  si deve scrivere meno codice possibile.
Prova così:
Public DB As ADODB.Connection,RS As ADODB.Recordset
Private Sub CmdOk_Click()
Call ApriDb
Unload frm_Apri
End Sub
Public Sub ApriDb()
 Set DB = New ADODB.Connection
DB.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" & _
 "Data Source=" & strPathCompleto & ";" & _
 "Persist Security Info=True"
DB.Open
 End Sub
Ciao
Sirjo

 End Sub
 
A parte che alla sub ApriDb devo in ogni modo passargli il path completo del db, quindi un
parametro devo per forza passarglielo...e poi...si, in effetti...ho istanzio la connessione dentro
la sub, o fuori...credo che sia la stessa cosa anche se...spetta che rivedo il sorgente perchè ci
stava un motivo mi sembra per cui ho fatto così...


 Ma che vuole?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------