我不是一个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()并手动设置每个字段而没有到达任何地方。同样,这个相同的代码也适用于网站中的每个其他页面。
我确信这些问题有一个非常简单的答案,这让我疯狂,我还没有找到它。如果有什么事情你马上注意到我会很乐意得到反馈。
答案 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