Avatar billede raos Nybegynder
19. februar 2002 - 19:41 Der er 1 kommentar og
1 løsning

Problemer med adodb connection mellem flere DLL'er

Her kommer lidt af en smøre. Jeg har en aspfil der først kalder én ActiveX DLL (oObject) for at få en ADODB connection. Som så skal bruges i en transaktion i en anden ActiveX DLL (oObject2).

Men i oObject2 når :

.ActiveConnection = conDB

får jeg: Error 3001 is: "Arguments of the wrong type, out of acceptable range, or are
in conflict with one another."

Man kan jo så bare bruge

.ActiveConnection = conDB.ConnectionString

men så virker transaktionen jo ikke efterhensigten.

HJÆLP !!!


/rasmus

-------------------------
ASP FIL


Set oObject2 = Server.CreateObject("project5.class2")

Set oObject = Server.CreateObject("project1.class1")

bReturn = oObject2.GetConn(varConnection)
bReturn = oObject.Go(varConnection)

------------------------------

oObject

Public Function Go(ByRef varConnection As Variant) As Variant
       
    Dim sSql As String
    Dim rs1 As ADODB.Recordset
    Dim rs2 As ADODB.Recordset
   
    Dim conDB As ADODB.Connection
   
    Set conDB = varConnection
   
    conDB.BeginTrans
   
    sSql = "set nocount on; insert into table1 (name) values ('john 1');SELECT @@IDENTITY AS NewID "   
    Set rs1 = New ADODB.Recordset
   
    With rs1
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .Source = sSql
        .LockType = adLockReadOnly
        .ActiveConnection = conDB
        .Open
        .ActiveConnection = Nothing
    End With
   
    sSql = "set nocount on; insert into table1 (name) values ('john nummer 2');SELECT @@IDENTITY AS NewID "

    Set rs2 = New ADODB.Recordset
    With rs2
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .Source = sSql
        .LockType = adLockReadOnly
        .ActiveConnection = conDB
        .Open
        .ActiveConnection = Nothing
    End With
   
    conDB.RollbackTrans
   
    'conDB.CommitTrans
End Function

-----------------

oObject2


Public Function GetConn(ByRef varConnection As Variant) As Variant
Dim oConn As ADODB.Connection
    Set oConn = New ADODB.Connection
   
    Dim sConnString As String
    sConnString = "Provider=SQLOLEDB.1;Extended Properties=""server=;uid=sa;pwd=;database=test;trusted_Connection=no"";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ROSW1;Use Encryption for Data=False;Tag with column collation when possible=False"
    oConn.Open sConnString
   
    Set varConnection = oConn
End Function

-----------------------------------------
Avatar billede nolle_k Nybegynder
20. februar 2002 - 09:51 #1
Prøv Med

Set .ActiveConnection = conDB
Avatar billede raos Nybegynder
01. april 2002 - 22:22 #2
øv no dice,
ADODB understøtter ikke marchaling af connections mellem forskellige processer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester