Avatar billede jhammer Nybegynder
13. juni 2002 - 15:59 Der er 13 kommentarer og
1 løsning

Returnering VARIANT (med tabel indhold) fra VB til ASP.

Hvorledes retunerer jeg en VARIANT fra et VB program (DLL) til en ASP-side. Indholdet af VARIANT er en array! Se vedlagte.
*********************************************
ASP:
<%@ Language=VBScript %>
<%option explicit
Response.Buffer = true
dim objT, arrT, indx
on error resume next

set objT = server.createobject("TestTabel.Tabel")
if err.number > 0 then
    Response.Write("FEJL 1 = " & err.description & "<br>")
end if

arrT = objT.Hent()
if err.number > 0 then
    Response.Write("FEJL 2 = " & err.description & "<br>")
end if

Response.Write("TYPE VB = " & typename(objT.Hent()) & "<br>")
Response.Write("TYPE ASP = " & typename(arrT) & "<br>")
if err.number > 0 then
    Response.Write("FEJL 3 = " & err.description & "<br>")
end if

Response.Write ("arrT: " & arrT & "<br>")
if err.number > 0 then
    Response.Write("FEJL 4 = " & err.description & "<br>")
end if 

for indx = 0 to ubound(arrT) 
    Response.Write(arrT(indx))
    if err.number > 0 then
        Response.Write("FEJL 5 = " & err.description & "<br>")
    end if
next

set objT = nothing%>
***********************************************
VB (DLL-generet og reg. på server):
Option Explicit

Public Function Hent() As Variant
  Dim arrTest() As String
 
  ReDim Preserve arrTest(0)
  arrTest(0) = "Knud"
  ReDim Preserve arrTest(1)
  arrTest(1) = "Erik"
  ReDim Preserve arrTest(2)
  arrTest(2) = "Svend"
 
  Hent = arrTest
 
End Function

*************************************************

svar når asp afvikles:

TYPE VB = String() 
TYPE ASP = String()
FEJL 4 = Typerne passer ikke sammen
FEJL 5 = Typerne passer ikke sammen
FEJL 5 = Typerne passer ikke sammen
FEJL 5 = Typerne passer ikke sammen

Bemærk at typerne er Sting() ikke Sting!!
Avatar billede tmceu Praktikant
13. juni 2002 - 16:25 #1
Du tænker sikker på TypeName i stedet for Type ?
Avatar billede jhammer Nybegynder
13. juni 2002 - 16:37 #2
Ja i aspen skriver jeg bare TYPE, vi skal jo ikke skrive os ihjel.
Avatar billede tmceu Praktikant
13. juni 2002 - 17:01 #3
Sorry havde ikke lige set at du faktisk bruge Typename og ikke Type :-)
Avatar billede tmceu Praktikant
13. juni 2002 - 17:01 #4
Jeg vil mene at din funktionskal se sådan ud, for at returnere et array:

Public Function Hent() As Variant()
Avatar billede a1a1 Novice
13. juni 2002 - 17:16 #5
den første fejl kommer vist her
Response.Write ("arrT: " & arrT & "<br>")
?

det er jo klart :o)

arrT er en array, prøv med
Response.Write ("arrT: " & arrT(0) & "<br>")

:)
Avatar billede jhammer Nybegynder
13. juni 2002 - 17:24 #6
Til a1: Som det fremgår af svaret i ASP-koden typename af arrT en string().
Har prøvet det. Det giver bare type mismatch!

Til tmceu: Prøvede med Variant() men det giver: "compile errror: can't assign to array".
Avatar billede a1a1 Novice
13. juni 2002 - 17:28 #7
har du prøvet uden noget?

Public Function Hent()

:)
Avatar billede tmceu Praktikant
13. juni 2002 - 17:40 #8
jhammer >> du bruger VB 6 og ikke en eller anden ældgammel version, ikke også ?
Avatar billede jhammer Nybegynder
13. juni 2002 - 17:40 #9
Public Function Hent()      ' uden as Variant giver blot :

FEJL 2 = Typerne passer ikke sammen
TYPE VB = String()
TYPE ASP = Variant()
FEJL 3 = Typerne passer ikke sammen
FEJL 4 = Typerne passer ikke sammen
FEJL 5 = Indekset er uden for området
Avatar billede jhammer Nybegynder
13. juni 2002 - 17:42 #10
Jeg bliver desværre nødt til at stoppe for i dag. Hvis nogen har andre ideer ville det bare være skønt. Jeg kigger igen i morgen formiddag.
Avatar billede a1a1 Novice
13. juni 2002 - 17:47 #11
hmmm

en måde du kunne løse det på er, at "kalde" functionen med en array..
Dim arrT()
set objT = server.createobject("TestTabel.Tabel")
arrT = objT.Hent(arrT)

i din vb func.
Public Function Hent(ByRef arrT)

?? (muligvis)
Avatar billede tmceu Praktikant
13. juni 2002 - 17:51 #12
OK, her er den :-)

Public Function Hent() As Variant()
  Dim arrTest() As Variant
 
  ReDim Preserve arrTest(0)
  arrTest(0) = "Knud"
  ReDim Preserve arrTest(1)
  arrTest(1) = "Erik"
  ReDim Preserve arrTest(2)
  arrTest(2) = "Svend"
 
  Hent = arrTest
 
End Function
Avatar billede jhammer Nybegynder
14. juni 2002 - 09:39 #13
Hej tmceu.

Skide godt - det virkede, jeg var altså tæt på at miste modet!!!!
Avatar billede tmceu Praktikant
14. juni 2002 - 18:02 #14
Hvordan var det nu Thomas Mygind plejede at sige i Fangerne På Fortet; "Husk at intet er umuligt for den, der bærer viljen i hjertet" :-)
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