|
| Hjææælp: Type Mismatch Fra : Jeppe Dige Jespersen |
Dato : 13-02-01 09:09 |
|
Jeg får en tåbelig og vanvittigt irriterende fejl på en .asp side. Måske er
det
mig, der er tåben.
Siden kaldes med tre parametre i querystring'en:
y, som repræsenterer et årstal (0-99999999)
m, som repræsenterer en måned (1-12)
d, som repræsenterer en dag (1-31)
De tre parametre bruges så i et kald til en COM-komponent funktion, som
blot returnerer en String. Funktionen i komponenten tager tre integers som
argumenter.
<% set mitObjekt = new MinDLL.Klasse %>
<%
=mitObjekt.minFunktion(request.querystring("y"),request.querystring("m"),req
uest.querystring("d")) %>
Problemet er at jeg får en Type Mismatch på selve funktionskaldet. Jeg har
prøvet eksplicit at konvertere de tre querystring-parametre til integers,
men
det hjælper ikke. Jeg har også tjekket at querystring-parametrene faktisk
indeholder noget, hvilket de gør, men jeg får stadig en Type Mismatch.
Det sjove er, at hvis jeg kalder funktionen med hardcodede værdier feks
(2001,2,9) så får jeg ingen fejl.
Kan nogen hjælpe???
Jeppe
| |
Peter Lykkegaard (13-02-2001)
| Kommentar Fra : Peter Lykkegaard |
Dato : 13-02-01 10:50 |
|
"Jeppe Dige Jespersen" <jdj@jdj.dk> wrote in message
news:96apua$11d$1@news.inet.tele.dk...
> Jeg får en tåbelig og vanvittigt irriterende fejl på en .asp side. Måske
er
> det mig, der er tåben.
Depends - jeg går ud fra at det ikke er dig der har lavet komponentet?
> Siden kaldes med tre parametre i querystring'en:
> De tre parametre bruges så i et kald til en COM-komponent funktion, som
> blot returnerer en String. Funktionen i komponenten tager tre integers som
> argumenter.
> Det sjove er, at hvis jeg kalder funktionen med hardcodede værdier feks
> (2001,2,9) så får jeg ingen fejl.
>
Jeps - det er en lidt "sjov" fejl - det skyldes at *alle* variabler i
VBScript lever som datatypen variant (undtagen Objekter - her sker der en
konvertering)
Jeg har oplevet fejlen hvor parameter listen til en metode er opbygget med
"ByRef" parameter overførsler, fx komponenter lavet i VB har denne lidt
uheldige egenskab
Laver man en funktion ala
Function strGetAValue(MyValue As String) As String
strGetAValue = MyValue
End Function
Så vil man kunne opleve problemet
Response.Write strGetAValue(strMyString)
Vil give en type mismatch
Der er to løsninger - brug denne hvis det ikke er noget du selv har lavet
Response.Write strGetAValue(CStr(strMyString))
Eller lav funktionen i komponentet således
Function strGetAValue(ByVal MyValue As String) As String
strGetAValue = MyValue
End Function
I dit tilfælde så skal du finde ud af hvilke datatyper
funktionen/komponentet forventer og så lave en eksplicit konvertering -fx
Reponse.Write MinFunction(CInt(MyYear))
mvh/Peter Lykkegaard
| |
|
|