VB类型不匹配问题 - inArray()

时间:2009-02-13 01:23:22

标签: arrays asp-classic vbscript function

我不是一个VB程序员,但这样的事情应该很简单......我真的很难过。

我有一个网络应用程序,可以完成大量的电子邮件和PDF工作。我正在为它添加一些新函数,并遇到两个非常基本的“类型不匹配”错误,但无法解决它们。

当我在简单的查找/替换脚本中调用inArray()时,第一次发生。我在数据库中创建了一个字段名称数组,并将电子邮件的内容与这些名称进行比较,以便$ * %% P1FirstName可以替换为DB中的实际名字。很简单。

这个确切的代码在网站的其他地方有效,但是在这个新页面上,我在包含inArray()调用的行上得到了Type Mismatch错误:


strOut = ""
strIn = strEmail
arrString = split(strIn,"$*")
'make an array of all the fields in the recordset to compare the fields in the email against
strTmp = ""
for each f in rs2.fields
    strTmp = strTmp & f.name & "x%x"
next
arrFields = split(strTmp,"x%x")
for i = lbound(arrString) to ubound(arrString)
    'if the current word in the array is a DB field name (as indicated by the leading '%%' then get the data
    'from the recordset and drop it into the email, otherwise it is a generic term
    if left(arrString(i),2) = "%%" then
        arrString(i) = replace(arrString(i),"%%","")
        if not trim(arrString(i)) = "" then
            if inArray(arrFields, arrString(i)) then
                strOut = strOut & rs2(arrString(i))
            end if
        end if
    else
        strOut = strOut & arrString(i)
    end if
next

我无法弄清楚为什么无法比较两个字符串数组(或者为什么同一个调用在别处工作)。当我输出任何东西(比如字段名称)时,似乎没有什么东西是关闭的,并且过多的CStr()使用没有帮助。

另一个只是一个函数调用:

WritePDF(iformID,TemplateFile,Appfile,signed,rsProc(“fontSize”),passwordProtect)

签名和密码保护是布尔值。它更复杂,因为错误没有具体告诉我哪个字段关闭。我刚刚尝试了一堆rephrasing和cbool()并手动设置每个字段而没有到达任何地方。同样,这个相同的代码也适用于网站中的每个其他页面。

我确信这些问题有一个非常简单的答案,这让我疯狂,我还没有找到它。如果有什么事情你马上注意到我会很乐意得到反馈。

3 个答案:

答案 0 :(得分:1)

vbscript中没有名为In Array()的内置函数。你有这个功能吗?

答案 1 :(得分:0)

确切代码 在其他地方有效吗?你确定你以正确的顺序将参数传递给inArray()函数吗?字符串数组和以错误顺序传递的字符串将导致类型不匹配错误。

答案 2 :(得分:0)

这样的事情怎么样:

strOut = ""
strIn = strEmail

strTmp = ""
For Each f In rs2.fields
    If Instr(strIn, "$*%%" & f.name) > 0 Then
        strIn = Replace(strIn, "$*%%" & f.name, rs2(f.Name).Value)
    End If
Next

strOut = strIn