Avatar billede websam Nybegynder
27. november 2003 - 15:15 Der er 39 kommentarer og
1 løsning

Fejl ved brug af AxtiveX ?

Jeg kalder en dll fil ved hjælp af dette :

If Session("Mode") = "addNews" Then
    Dim objNews
    Set objNews = Server.CreateObject("News.strNews")
    objNews.AddNewsToDb Request.Form("T1"), Request.Form("T2"), Application("ConnectionString")
End If

Men får en fejl der lyder på :

News error '800a000d'

Type mismatch

addNews.asp, line 30

Linie 30 er i denne linie :

objNews.AddNewsToDb Request.Form("T1"), Request.Form("T2"), Application("ConnectionString")

Og da jeg ikke kan bruge parentes om mine variabler er jeg lidt på herrens mark :o(

Nogen der kan give en forklaring på dette ?

/Websam
Avatar billede Spotgun Seniormester
27. november 2003 - 15:17 #1
If Session("Mode") = "addNews" Then
    Dim objNews
    T1 = Request.Form("T1")
    T2 = Request.Form("T2")
    Conn = Application("ConnectionString")
    Set objNews = Server.CreateObject("News.strNews")
    objNews.AddNewsToDb T1, T2, Conn
End If


Ved ikke om det virker, men det var da et forsøg værd...
Avatar billede chriscross Nybegynder
27. november 2003 - 15:19 #2
Det hvilke typer forventer du at få ind i AddNewsToDb ?
Du sender pt 3 strenge med ind Det kan være du skal have noget CInt() rundt om de 2 første ?
Avatar billede chriscross Nybegynder
27. november 2003 - 15:21 #3
Jeg kalder en homemade dll fra ASP på følgende vis:
   
bestyrFlet.UdskrivBrev Response, cstr(dok), cstr(scri),
cstr(session"egbolig_db")), cstr(session("egbolig_init"))

- og det fungerer godt nok på den måde...
Avatar billede websam Nybegynder
27. november 2003 - 15:24 #4
Spotgun >> Så får jeg følgende fejl "Type mismatch: 'AddNewsToDb' "

chriscross >> Jeg forventer at få af typen string
Avatar billede chriscross Nybegynder
27. november 2003 - 15:26 #5
OK, er du sikker på at du har hentet de tre variable rigtigt ud - prøv lige at gøre som spotgun har foreslået og se om fejlen rykker med op...
Avatar billede websam Nybegynder
27. november 2003 - 15:27 #6
chriscross >> Og med cstr om får jeg samme fejl "Type mismatch"
Avatar billede websam Nybegynder
27. november 2003 - 15:28 #7
Altså med dette :

If Session("Mode") = "addNews" Then
    Dim objNews
    T1 = Request.Form("T1")
    T2 = Request.Form("T2")
    Conn = Application("ConnectionString")
    Set objNews = Server.CreateObject("News.strNews")
    objNews.AddNewsToDb cstr(T1), cstr(T2), cstr(Conn)
End If
Avatar billede chriscross Nybegynder
27. november 2003 - 15:29 #8
Ja - så kan vi se hvilken linie fejlen kommer i...
Avatar billede websam Nybegynder
27. november 2003 - 15:29 #9
Og her en del af mit vbscript :

Option Explicit

Public Function AddNewsToDb(Headline As String, News As String, strConn As String) As Boolean
    On Error GoTo ErrorHandle
   
    Dim objConn As ADODB.Connection
    Dim Sql As String
   
    Set objConn = CreateObject("ADODB.Connection")
    objConn.Open strConn
   
    Sql = "Insert Into tblNews (Headline, News) Values ("
    Sql = Sql + "'" + Headline + "',"
    Sql = Sql + "'" + News + "')"
    objConn.Execute Sql
    objConn.Close
    Set objConn = Nothing
   
    AddNewsToDb = True
    'GetObjectContext.SetComplete
    Exit Function
   
ErrorHandle:

    'GetObjectContext.SetAbort
    AddNewsToDb = Err.Description
   
End Function
Avatar billede websam Nybegynder
27. november 2003 - 15:30 #10
Men fejlen kommer jo inden den sender variabler til dll ikke sandt ?!?
Avatar billede chriscross Nybegynder
27. november 2003 - 15:32 #11
Øh VBScript ?
- ikke VisualBasic ?

Er du sikker på at du kan få din funktion til at retunere en boolean ?
En god måde at debugge på er at sende Response med ind ind i funktionen, du modtager den: Response As Object
- så kan du skrive tilbage til din ASPside ,-)
Avatar billede chriscross Nybegynder
27. november 2003 - 15:33 #12
Måske - hvad sagde den da du forsøgte at dele det op ?
Avatar billede chriscross Nybegynder
27. november 2003 - 15:36 #13
Prøv lige at fjerne den der boolean fra funktionen, kommenter den ud inde i funktionen, kompiler (og alt det der besværlige ) og se om det kan være den den ikke kan lide - har du testet udenom asp at den fungerer ?
Jeg tror kun du kan skrive tilbage til asp via response....men er ikke sikker
Avatar billede chriscross Nybegynder
27. november 2003 - 15:37 #14
Hov Hov
Hvis funktionen fejler vil den udføre: AddNewsToDb = Err.Description

- og error description er ikke en boolean - det er en string
Avatar billede websam Nybegynder
27. november 2003 - 15:38 #15
Ok jeg prøver lige hæng på :o)
Avatar billede chriscross Nybegynder
27. november 2003 - 15:40 #16
Øh jo - jeg smutter klokken fire - men er tilbage imorgen tidlig, så kan du også nå at undersøge hvad jeg ellers har skrevet ;-)
Avatar billede websam Nybegynder
27. november 2003 - 15:40 #17
Ja og det er ikke fra komponenten jeg får fejlen men jeg prøver alligevel og ved spotguns eksempel fik jeg denne fejl "Type mismatch: 'AddNewsToDb' "
Avatar billede chriscross Nybegynder
27. november 2003 - 15:43 #18
Hvis du får den der ved spotguns eks. er vi ( tror jeg ) tilbage ved den boolean du forsøger at få funktionen til at returnere. Du skal da så også sige:

Dim res

res = objNews.AddNewsToDb Request.Form("T1"), Request.Form("T2"), Application("ConnectionString")

hvis du vil have fat i det returnerede....muligvis dit problem ?
Avatar billede websam Nybegynder
27. november 2003 - 15:49 #19
Med res =..... inde i koden får jeg denne :

Expected end of statement

Fjerner jeg derimod res i koden og plinger boolean ud vil componenten køre men ikke lagre noget i databasen
Avatar billede chriscross Nybegynder
27. november 2003 - 15:53 #20
Første lyder lidt underligt

Prøv at sende Response med derind som jeg skrev ovenfor og så udskrive hvor langt du er nået ect for, ja nærmest hver linie...jeg var aldrig kommet igennen uden den mulighed for debugging ;-)
- du skriver bare Response.Write "<br> db open" og
Response.Write "sql: " & sql
osv

Er tilbage i morgen :o)
Avatar billede websam Nybegynder
27. november 2003 - 16:00 #21
ok jeg kigger på det
Avatar billede websam Nybegynder
28. november 2003 - 09:00 #22
Nu fik jeg det til at virke i asp ved at lave min db forbindelse om, men stadig kan jeg ikke få det til at virke i componenten :o(
Avatar billede chriscross Nybegynder
28. november 2003 - 09:01 #23
Hvordan der koden ud i den lige nu ?
Avatar billede websam Nybegynder
28. november 2003 - 09:04 #24
Option Explicit

Public Function AddNewsToDb(Headline As String, News As String, strConn As String) ' As Boolean
    On Error GoTo ErrorHandle
   
    Dim objConn As ADODB.Connection
    Dim Sql As String
   
    Set objConn = CreateObject("ADODB.Connection")
    objConn.Open strConn
   
    Sql = "Insert Into tblNews (Headline, News) Values ("
    Sql = Sql + "'" + Headline + "',"
    Sql = Sql + "'" + News + "')"
    objConn.Execute Sql
    objConn.Close
    Set objConn = Nothing
   
    AddNewsToDb = True
    'GetObjectContext.SetComplete
    Exit Function
   
ErrorHandle:

    'GetObjectContext.SetAbort
    AddNewsToDb = Err.Description
   
End Function
Avatar billede websam Nybegynder
28. november 2003 - 09:05 #25
Men jeg får stadig denne fejl på asp siden :

Type mismatch: 'AddNewsToDb'
Avatar billede chriscross Nybegynder
28. november 2003 - 09:06 #26
Hvis det er VB(script) skal du bruge "&" i stedet for "+" når du sammensætter strings
Avatar billede websam Nybegynder
28. november 2003 - 09:07 #27
Og koden på asp siden er som følger :

If request.querystring("Mode") = "addNews" Then
    Dim objNews
    T1 = Request.Form("T1")
    T2 = Request.Form("T2")
    Set objNews = Server.CreateObject("News.strNews")
    objNews.AddNewsToDb T1, T2, Conn
    End If
Avatar billede websam Nybegynder
28. november 2003 - 09:09 #28
Det skulle jo ikke betyde noget når den ikke kommer ind i komponenten men jeg ændre det alligevel
Avatar billede chriscross Nybegynder
28. november 2003 - 09:10 #29
Hvorfor ikke - det kommer da an på hvilker sprog du benytter i komponenten...
Avatar billede chriscross Nybegynder
28. november 2003 - 09:10 #30
Og fejlen kommer stadig i den linie hvor du kalder dll'en ?
Fordi så *er* det i den du har problemer.

Har du prøvet at sende response med ind, og så udskrive derindefra  ?
Avatar billede websam Nybegynder
28. november 2003 - 09:11 #31
Nej og jeg kiggede på det igår men jeg er ikke helt sikekr på hvordan jeg skal gøre det :o)
Avatar billede websam Nybegynder
28. november 2003 - 09:13 #32
Og ja det er i den linie hvor jeg kalder komponenten
Avatar billede chriscross Nybegynder
28. november 2003 - 09:18 #33
OK:
objNews.AddNewsToDb T1, T2, Conn, Response

Og i din funktion:
Public Function AddNewsToDb(Headline As String, News As String, strConn As String, Response As Object) ' As Boolean
    On Error GoTo ErrorHandle
   
    Dim objConn As ADODB.Connection
    Dim Sql As String
   
    Set objConn = CreateObject("ADODB.Connection")
    objConn.Open strConn
    Response.write "<br> database åbnet"
   
    Sql = "Insert Into tblNews (Headline, News) Values ("
    Sql = Sql + "'" + Headline + "',"
    Sql = Sql + "'" + News + "')"
    Response.write "<br> sql: " & sql
    objConn.Execute Sql
    Response.write "<br>sql udført"

    objConn.Close
    Set objConn = Nothing
    Response.write "<br> databaselukket"

    AddNewsToDb = True
    'GetObjectContext.SetComplete
    Exit Function
   
ErrorHandle:
    Response.write "<br>Fejl: " & Err.Description

    'GetObjectContext.SetAbort
    AddNewsToDb = Err.Description
   
End Function
Avatar billede websam Nybegynder
28. november 2003 - 09:23 #34
Ok det prøver jeg lige
Avatar billede websam Nybegynder
28. november 2003 - 09:29 #35
Ok den kommer stadig med den samme fejl :

Type mismatch: 'AddNewsToDb'

I den linie hvor jeg kalder funktionen i komponenten :o(
Avatar billede websam Nybegynder
28. november 2003 - 09:31 #36
Lad der blive lys hvis jeg så sætter CStr omkring mine variabler ser det ud til at virke
Avatar billede chriscross Nybegynder
28. november 2003 - 09:31 #37
Og du får intet skrevet ud ?
Avatar billede chriscross Nybegynder
28. november 2003 - 09:32 #38
Aha - det er svært at debugge hvis man slet ikke kan kommer derind :-)
Avatar billede websam Nybegynder
28. november 2003 - 09:36 #39
Jeps men den gemmer i databasen nu og udskriver de ting jeg lige tilføjede med response så alt er som det skal være, kanon :o) Dette giver en masse fede muligheder når man udvikler software der ikke skal ligge på ens egen server :o)

Mange tak for hjælpen, der er point på vej til dig :o)
Avatar billede chriscross Nybegynder
28. november 2003 - 09:39 #40
Det er nemlig lige det det gør, og jeg synes at det er specielt smart at man kan sende response med ind da man så har rigtig gode muligheder for at skrive tilbage til brugeren - resultat af funktionen, udvidede fejlmeddelelser og den slags :o)

Og selv tak
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