24. maj 2002 - 10:32Der 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.
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)
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.
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...
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.