一个代理,上午还用得好好的,下午就老报错: "type mismatch",请各位帮忙看看.

Sub Initialize
Set s = New notessession
Dim db As notesdatabase
Set db = s.currentdatabase

Set view = db.getview("Check_Urge")
Set doc = view.getfirstdocument()
Do While Not doc Is Nothing
If doc.status(0)<10 Then
sendto = doc.GetItemValue("n_name")
subject = "aaaaa!"
Elseif doc.status(0)=10 Then
sendto = doc.GetItemValue("kaohezhe")
subject = "bbbbb"
Else
sendto = doc.GetItemValue("n_name")
subject = "ccccc!"
End If
Dim docmail As New notesdocument(db)
Dim rti As notesrichtextitem
docmail.form = "Memo"
docmail.sendto = sendto(0)
docmail.subject = subject
Set rti = docmail.createrichtextitem("Body")
Call rti.appenddoclink(doc,"Click here to open report")
Call docmail.send(False,sendto)

Set doc = view.getnextdocument(doc)
' End If
Loop

End Sub
总是在doc.status(0)处报错。如果定义一个整数变量赋值为doc.status(0)也错。上午还用得好好的,下午就变成有错了,请问是怎么回事啊?
[1032 byte] By [xy80] at [2008-6-10]
# 1
我好象也有过这种问题,你不要直接用它,先给一个变量试试。
dim status as Integer
set status=doc.status(0)
再用status去做判断。
试一下,我也不知道行不行。
dayanday-早上36度8 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 2
关于域类型,是这样的:
1、当域为空值时,域类型一定为文本,
2、当域内有值时,域类型由设计时定义决定

所以,你的错误,可能有文档的doc.status为空值,所以为文本,因此类型不匹配:
doc.status(0)<10

tnda-虎头 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 3
问题很简单:你是通过后台去取status的值,但status又是非数字型,因此照你那种方法,便会出现"type mismatch"的错误了:)
哈哈,只要在doc.status(0)前加上转化就行了嘛(你这种情况就加Cint())
如,按楼上说的,赋值给变量
dim status as integer
status=CInt(doc.status(0)) '楼上的打字太快了,此行前面千万不能有set罗:)
yesline at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 4
哦,SORRY,上面的“转化”用错了,是“转换”。
哈哈,我猜想肯定是我这种情况(见上),不过加上判断是否为空也是个好习惯:)
yesline at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 5
To tnda(虎头) :文档的doc.status默认是0,不可能是空值,所以应该不会是文本。
To dayanday(早上36度8) & yesline() :
用dim status as integer
status=Cint(doc.status(0))
还是不行,仍然报错:"type mismatch"
苦恼。
请各位继续帮忙,多谢了!
xy80 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 6
你敢肯定把doc.status(0)都改过来了吗(换成status变量)?或者没改过来,但都加了CInt吗?
另外还就是,你先把notes designer关了,再测试。因为我就发现这个问题:明明代码正确,可测试就是不能达到预期效果,把designer关了,就一切ok!:)TMD
yesline at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 7
10,是数字的话,应给doc.status(0)转换为数字,如楼上所说。否则,将10加上引号,成为"10".试试看吧!
xxqm-潇湘清梦 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 8
文档的doc.status默认是0,不可能是空值,所以应该不会是文本。
默认是0?但是不一定就存在这个域!你在notes中选中文档,察看文档属性的第二项,看文档中有没有这个域,有没有值存在?
shgciom-一条小鱼 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...
# 9
谢谢各位!我把designer关了再测试就好了。真受不了这个NOTES了。
xy80 at 2007-10-28 > top of Msdn China Tech,企业开发,Lotus...