问题与Visual Basic 6.0(SP 6)中VFP COM服务器的使用有关。
代码(相关)
Private moVFPServer As f_vfpsvr.VFPServer
在Sub:
Dim oRec As f_vfpsvr.VFPRecord
Set oRec = moVFPServer.NewRecord("LoanMstr")
With oRec
.SetField "ssn", sSSN
.SetField "awdyr", sAwardYear
.SetField "tran_date", Format(Now, "mm/dd/yyyy")
.Commit
End With
来自moVFPServer的方法“NewRecord”返回一个对象,该对象表示VFP表“LoanMstr”中的新空记录。
代码遵循填充属性/字段并保存数据。
如果VFP COM服务器是使用VFP 8.0构建的,并且在使用VFP 9.0 构建时不起作用,则所有这一切都有效。
具体来说,VB应用程序在代码行中出错:
Set oRec = moVFPServer.NewRecord("StdMstr")
COM服务器抛出异常:自动化错误-2147417851。
这发生在同一台机器上。
答案 0 :(得分:1)
VFP构建的COM对象有时会表现得有些奇怪,特别是当涉及到堆栈错误备份时。
但这似乎很奇怪,只有在VFP9内置时才会出现这种情况。我相信在8到9之间的数据库中有一些重大的变化,有些可能你已经击中了其中一个?
VFP代码中是否有ERROR功能?如果没有,请尝试在其中设置一些错误属性,并在收到错误时在VB中查询它们?
是的,我们有像这样的东西FUNCTION ERROR(nError, cMethod, nLine)
THIS.cErrDesc = "Error Number: " + TRANSFORM(nError) + CRLF + "Message: " + MESSAGE() + CRLF + "Method: " + cMethod + CRLF + "Line #: " + TRANSFORM(nLine)
COMRETURNERROR(cMethod, THIS.cErrDesc)
ENDFUNC