我目前正处于一个项目的中途,我正在使用Visual Basic和COM从古老的Adobe Workflow服务器迁移数据。
我真的打了一个砖墙,因为我正在尝试执行一个简单的while循环来计算记录集中的记录数量,并且我一直收到这个错误......
"未处理的类型' System.Runtime.InteropServices.COMException'发生在microsoft.visualbasic.dll中 附加信息:未指定的错误"
几乎没有文档可以帮助我上网,所以我希望有一些VB向导/退伍军人可以指出我正确的方向。
我已将记录设置为全局变量,如此......
Dim record As New EPSDK.Recordset
然后我试过......
Dim recCount As Integer = 0
Do Until record.EOF
recCount += 1
Loop
此...
Dim recCount As Integer = 0
Do While Not record.EOF
recCount += 1
Loop
此...
Dim recCount As Integer = 0
Do
recCount += 1
Loop Until record.EOF
还有很多其他的变化,但似乎仍然无法解决问题。没有代码错误,控制台中没有任何内容,我只是不断收到该消息。
有人能发现我做错了吗?感谢
答案 0 :(得分:1)
好的,我已经查找了EPSDK的文档。对于那些不知情的人(就像我一样),它是来自Adobe的对象集合,用于操纵COM数据。它基本上是ADO中最受欢迎的功能。
MoveFirst,顾名思义,移动到记录集中的第一条记录。 EPSDK Recordset对象似乎不支持任何此类方法。由于您可以使用Move方法执行相同的操作,因此不需要它。在任何一种情况下,您都不需要使用它来移动到文件的末尾。
你做错了什么是期望你可以增加一个名为recCount的变量,并且记录集光标会神奇地移动。不会发生。正如您所说,该文档是非实质性的,但您可能需要使用MoveNext。 Here's您可以使用备忘单查找所支持的内容。
此外,您需要指定连接,打开它,将记录集指向打开的连接,然后打开记录集。我建议你熟悉ADO(不是ADO.Net!不一样的东西),这显然是基于它的。还有更多的文档,它应该适用得很好。特别是阅读Connections和Recordset。
现在,你的循环几乎完全相同。虽然不等于直到。但是,如果在Do语句之后放置while / until条件,则除非满足条件,否则不会进入循环。如果你把它放在Loop语句之后,你将始终至少运行一次循环。在这种情况下,你应该放置" Do until myRecordset.EOF",因为如果记录集为空,你就不会进入循环。