|
-
May 17th, 2002, 04:12 AM
#1
activex dll type mismatch (recordset)
hi there (my first post )
to quote TomRizzo in this thread:
Hi All, I know this problem has come up dozens of times, but I'm still stuck after days of mind-numbing surfing... drool.
i used the search function and found a lot of information, but i think i got a different TYPE MISMATCH error than all the previous posters, or i didn't found the right thread for my needs.
solutions were always about data type variant in vbscript and parameters, but my problem seems to be something different.
anyway, let me post some code:
Code:
Public objResponse As ASPTypeLibrary.Response
Public objApplication As ASPTypeLibrary.Application
Public objSession As ASPTypeLibrary.Session
Public rs As New ADODB.Recordset
Public strConnectionString As String
Public cn As New ADODB.Connection
Public Sub OnStartPage(sc As ScriptingContext)
Set objResponse = sc.Response
Set objApplication = sc.Application
Set objSession = sc.Session
End Sub
Public Sub ConnectToDB()
strConnectionString = objApplication("CONNSTRING")
cn.ConnectionString = strConnectionString
cn.Open
End Sub
Public Sub DisconnectFromDB()
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Public Sub WriteField(fname As String)
objResponse.Write rs.Fields(fname)
End Sub
Public Sub CloseRS()
rs.Close
End Sub
Public Sub ExecuteQuery(ByVal strSQLString As String)
Dim cmd As New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = strSQLString
cmd.CommandType = adCmdText
Set rs = cmd.Execute
Do While Not rs.EOF
For Each Field In rs.Fields
objResponse.Write rs(Field.Name)
Next
rs.MoveNext
Loop
CloseRS
End Sub
Public Sub testing()
objResponse.Write "hell-O"
rsIsOpen = False
objResponse.Write "<br>rsisopen = " & rsIsOpen & "<br><br>"
objResponse.Write "<br>" & objApplication("CONNSTRING") & "<br><br>"
End Sub
the asp type libary and the microsoft active data object library 2.5 have been included properly.
here's the sample asp file:
Code:
dim mycontent
set myCONTENT = Server.CreateObject("PPMDDDAK.CONTENT")
mycontent.testing
myCONTENT.ConnectToDB
myCONTENT.ExecuteQuery "select * from myusers"
Do While Not myCONTENT.EOF
myContent.WriteField("UserName") & "<br>"
myCONTENT.Movenext
Loop
myCONTENT.CloseRS
myCONTENT.DisconnectFromDB
set mycontent=nothing
now i'm getting this error:
PPMDDDAK-Fehler '800a000d'
Type mismatch
/ppmTest.asp, Zeile 6
(type mismatch error in line 6 as you see)
line 6: myCONTENT.ExecuteQuery "select * from myusers"
so i made some output-testing in de executequery sub:
(looks weird but works)
Code:
Public Sub ExecuteQuery(ByVal strSQLString As String)
objResponse.write "1<br>"
Dim cmd As New ADODB.Command
objResponse.write "2<br>"
cmd.ActiveConnection = cn
objResponse.write "3<br>"
cmd.CommandText = strSQLString
objResponse.write "4<br>"
cmd.CommandType = adCmdText
objResponse.write "5<br>"
Set rs = cmd.Execute
objResponse.write "6<br>"
Do While Not rs.EOF
objResponse.write "7<br>"
For Each Field In rs.Fields
objResponse.write "8<br>"
objResponse.Write rs(Field.Name)
objResponse.write "9<br>"
Next
objResponse.write "10<br>"
rs.MoveNext
objResponse.write "11<br>"
Loop
objResponse.write "12<br>"
CloseRS
objResponse.write "13<br>"
End Sub
output works until 5, then the type mismatch error occurs in this line: "set rs = cmd.execute"
now the real problem is: tested as an exe project, everything worked fine. compiled to an activexdll it crashed with this error, but only on my nt 4 server (which i have to use), on the localhost with windows xp everything just worked fine, but not on the nt4 server (with option pack installed)
but why is this so? i'm totally stuck...
i've also tried it without parameters like this one:
Code:
Public Sub ExecuteQuery(ByVal strSQLString As String)
Dim cmd As New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "select * from sysobjects"
cmd.CommandType = adCmdText
Set rs = cmd.Execute
Do While Not rs.EOF
For Each Field In rs.Fields
objResponse.Write rs(Field.Name)
Next
rs.MoveNext
Loop
CloseRS
End Sub
but i also got the same type mismatch error.
where's the problem with the line "set rs = cmd.execute" ? i did it nearly a thousand times in an asp file and it worked on the nt4 server, but as soon as i do this with this dll i'm getting a type mismatch?
could you please check my whole source for errors? maybe it's just a declaration problem?
one more thing: i have to use this recordset global, cause as soon as i can fix this problem i have to build a whole lot of other stuff around this dll
edit: i also tried to install the microsoft visual basic 6 runtime files on the nt4 server, but the error is still there...
maybe you've got a clue for me? something? anything? i'm really stuck and this whole project should have been finished some time ago
a 1024 thanks in advance!
-
May 18th, 2002, 11:55 AM
#2
sorry for double-post but..
... i usually don't do thread-pushing, but at least i'm really stressed..
.. and i thought about getting an answer like "hey why did you make this and this instead of just using this and that" and my whole problem would be solved
so i beg (..) you to have a close look on my problem if you'll find the time to do so...
thank you
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|