Avatar billede qualjyn Nybegynder
24. maj 2002 - 10:32 Der er 8 kommentarer og
1 løsning

Overførsel af ADODB.Recordset fra COM AddIn til VBScript

Jeg har en form i Outlook, der skal hente en mængde oplysninger fra en Exchange Server. For at undgå at skrive en masse kode, en milliard gange, har jeg lavet et COM AddIn, som jeg så kalder fra denne form.

Set com = Application.COMAddIns.Item("myComaddin.Connect").Object

Dette fungerer vældig fint, og jeg har en række funktioner der behandler strenge og returnerer dem, og det går gnidningsfrit.

Problemet kommer når jeg skal søge i Exchange 2000's web storage system.

Den kode der bliver brugt i mit COM addin er den samme som virker alene i formen, men når der skal overføres et resultat fra COM delen til VBScript går det galt.

"Typer stemmer ikke overens: 'com.mhitpAdoSearch'"

Set rec = CreateObject("ADODB.RecordSet")
Set rec = com.mhitpAdoSearch(url,sql,"myuser","mypass")

Problemet er bare at det som com.mhitpAdoSearch burde returnere netop er et ADODB.Recordset, og hvis man ser efter i object browseren, er det også de egenskaber den er sat til at have. Jeg har prøvet at sætte msgbox'e og lignende ind, og det ser ud til at der ikke engang bliver håndteret noget kode i mit COM AddIn, før det spytter fejlmeddelelsen ud. Jeg er temmeligt lost her.

Public Function mhitpAdoSearch(strUrl As String, strSql As String, strUser As String, strPass As String) As ADODB.Recordset

er headeren i mit COM AddIn...

Det store spørgsmål er, kan man slet ikke overføre ADODB.Recordset's, eller skal jeg lade det ligge i COM AddIn'et og så hente posterne en efter en.
Avatar billede ocp Nybegynder
24. maj 2002 - 10:55 #1
Prøv at sætte ActiveConnection = Nothing på recordset'et når det er blevet "fyldt".
Avatar billede ocp Nybegynder
24. maj 2002 - 10:55 #2
I COM-komponenten, altså...
Avatar billede qualjyn Nybegynder
24. maj 2002 - 12:14 #3
Det virker ikke. Og det rammer heller ikke problemet. Problemet går på en uoverensstemmelse mellem typer. Endvidere bliver den msgbox, der er det første der burde blive kaldt i funktionen, ikke vist, og min mistanke går på at der er noget der slet ikke matcher mellem de to typer sprog... Derfor, ved i om det er muligt at overføre objekter mellem COM og VBScript (det burde jo kunne lade sig gøre)
Avatar billede jennemaan Nybegynder
24. maj 2002 - 13:53 #4
øhm...

prøv...

Set Com = CreateObject("myComaddin.Connect")
Set Rec = Com.mhitpAdoSearch(url,sql,"myuser","mypass")


/Jennemaan
Avatar billede qualjyn Nybegynder
24. maj 2002 - 13:57 #5
Det hjælper ikke. Det er ikke et problem i at com som object ikke bliver instantieret. Det er fint fint connected og det hele. Jeg kan også få den til at udføre det jeg vil have den til, bare ikke til at returnere et ADODB.Recordset. Derfor undrer jeg mig over hvordan der kan komme en type fejl, når objektet der modtager er af samme type som funktionen der returnerer.

Jeg har, som det står i beskrivelsen, com objektet til at levere data tilbage fra andre funktioner.
Avatar billede jennemaan Nybegynder
24. maj 2002 - 14:10 #6
ahaaa...


du skriver
Set Rec = Com.mhitpAdoSearch(url,sql,"myuser","mypass

url og sql variablene er af typen variant (gælder alle variable i vbscript). Funktionen venter en string...

Prøv

Set Rec = Com.mhitpAdoSearch(cstr(url),cstr(sql),"myuser","mypass

eller lav parametrene i dit comobjekt om til variant...

/Jennemaan
Avatar billede qualjyn Nybegynder
24. maj 2002 - 14:12 #7
du lyder som om du lige er blevet min helt!!! two secs
Avatar billede qualjyn Nybegynder
24. maj 2002 - 14:14 #8
Der kom jeg videre... havde så lavet nogle debugkode der gav en fejl, men jeg kom videre... du skal have mange tak... den der spottede jeg slet ikke...

Mange tak!
Avatar billede jennemaan Nybegynder
24. maj 2002 - 14:15 #9
np :-)
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