Passing Connection Objects between DLLS

Passing Connection Objects between DLLS

am 27.09.2002 14:41:23 von mfuhrman

Hello All,

When passing a connection object between DLL's it appears that myODBC
driver is not able to create Editable RecordSets objects from it. However,
I
can create Static RecordSet objects. A work around that I have found is to
have the 2nd DLL open a new connection object.

Code samples follow:

Any suggestions?

ENetArch


Code samples:

===========================================================
EXE - 1

Dim objStore As Store_mySQL
Const szODBC = "UID=sa;PWD=sa;DSN=mySQL;"

Sub Main()
Set objStore = New Store_mySQL

Dim cn As Object
Set cn = CreateObject("adodb.connection")
cn.open (szODBC)

Set objStore.init = cn

objStore.Test

End Sub

===========================================================
Table Defination

CREATE TABLE test
(
ID INTEGER AUTO_INCREMENT,
PRIMARY KEY (ID),
szName VARCHAR (30)
)

===========================================================
DLL - Store_mySQL

Private cn As Connection

Private Sub Class_Initialize()
Set cn = Nothing
End Sub

Public Property Set init(ByVal objCn As Connection)
Set cn = objCn

' Work Around
' Set cn = CreateObject("adodb.connection")
' cn.Open objCn

End Property

Public Function test()

Const cSQLTable = "test"
Dim szSQL As String
Dim rs As Object

szSQL = _
" SELECT * " & _
" FROM " & cSQLTable & _
" ORDER BY ID "

' rs = cn.execute (szSQL)
' returns a static record set OK, without workaround.

Set rs = CreateObject("ADODB.RecordSet")

rs.CursorLocation = 3 ' adUseClient
rs.CursorType = 1 ' adOpenKeyset
rs.LockType = 3 ' adLockOptimistic

rs.Source = szSQL

Set rs.ActiveConnection = cn
' Fails here: error 3709, or 3001

rs.Open

rs.AddNew
rs("szName") = "NavisStar International, Inc."

rs.Update

Debug.Print rs("ID")

End Function

===========================================================

' Keywords:
' myODBC, Visual Basic, VB, ADODB.RECORDSET
' ADODB.CONNECTION, ADO

' ERROR 3001 : INVALID CONNECTION
' The application is using arguments that are of the wrong type,
' are out of acceptable range, or are in conflict with one another.

' ERROR 3709 : INVALID ARGUMENT
' The application requested an operation on an object with a
' reference to a closed or invalid Connection object.

' Environment:
' WkStn - Windows 2000 WkStn, 256 meg, AMD K6-2 500 mhz, build 2195, SP1
' MDAC 2.7
' myODBC 3.51 - WinX


------------------------------------------------------------ ---------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)

To request this thread, e-mail
To unsubscribe, e-mail
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php