Newsgroup: it.comp.lang.visual-basic
Titolo: Passare una connessione ADO (2.7) tra DLL/ActiveX

Ciao a tutti, questo è il mio dubbio
Ho creato un Activex-EXE
dove all'avvio apro una connessione ad un DB dichiarata in un modulo
pubblico
e la chiudo alla fine del programma.
Ho anche creato una classe che restituisce semplicemente
il riferimento a quella connessione, in questo modo:
Public Function GetConnection(ByRef Conn As ADODB.Connection)
Set Conn = C
End Function
All'interno dello stesso eseguibile, tutto funziona: posso usare
la connessione restituita da GetConnection e utilizzarla
in un recordset.
Ho creato però anche un nuovo file (progetto .EXE)
impostando come riferimenti l'eseguibile appena creato,
con lo scopo di utilizzare il medoto GetConnection 
per ottenere una connessione al DB.
In effetti ottengo qualcosa che assomiglia ad un adodb.connection
con tutte le proprietà corretamente impostate, ma quando si tratta
di utilizzarla con un recordset, viene restituito sempre un
run time error 3001 (gli argomenti non sono validi...) come se non
riconoscesse la connessione come tale...
Cosa può essere ?
Grazie
Questo è il banale programma che utilizza l'active-x/exe
Dim Cp As New PjCnSrv.DB			<= exe di cui sopra
Dim Cn As ADODB.Connection
Private Sub Command1_Click()
Dim Rs As New ADODB.Recordset
Text1.Text = Cn.ConnectionString		<= qui i parametri sono giusti !
Rs.Open "Select * from anagrafica where [NomeSocietà] like 'S%'", Cn
<= qui dà errore
While Not Rs.EOF
    DoEvents
    Text1.Text = Rs.Fields(1)
    Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing
End Sub
Private Sub Form_Load()
 Cp.GetConnection Cn
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set Cp = Nothing
End Sub
---------------------------------------------------------------------
 MERCANTI Davide	(
d.mer...@sygest.it
)
 Sygest s.r.l. 	
http://www.sygest.it
 
---------------------------------------------------------------------

[cut]
potresti postare la sub GetConnection?
--
bye BlackMagic
ICQ: 85485468
Aiuta la ricerca sul cancro 
http://members.ud.com
Join
at:
http://members.ud.com/services/teams/team.htm?id=2E71C62A-8E67-48DB-B472-
BCA129B35412

 potresti postare la sub GetConnection?
Ho provato sia così
Public Function GetConnection(ByRef Conn As adodb.Connection)
Set Conn = c
End Function
Sia come funzione
Ma anChe così
Public Property Get adoConnection() As adodb.Connection
    Set adoConnection = c
End Property
Il risultato è sempre lo stesso:
Le proprietà sono OK, ma si rifiuta di andare con un RS (solito errore)

 Le proprietà sono OK, ma si rifiuta di andare con un RS (solito errore)
Sicuro?
Deve funzionare in entrambi i modi:
se nella dll usi:
Public Property Get adoConnection() As adodb.Connection
    Set adoConnection = c
End Property
nell'exe avrai:
Set Cn = Cp.adoConnection
se nella dll usi:
Public Function GetConnection() As ADODB.Connection
Set GetConnection = c
End Function
nell'exe avrai:
Set Cn = Cp.getconnection
se nella dll usi:
Public Function GetConnection(ByRef Conn As adodb.Connection)
Set Conn = c
End Function
nell'exe avrai:
Cp.GetConnection Cn
in tutti i casi deve funzionare.
...a meno che tu non abbia aperto la connection nella dll...
ciao
ugo