从VB 6.0访问Visual FoxPro COM服务器

时间:2012-03-07 20:44:14

标签: com visual-foxpro

问题与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。

这发生在同一台机器上。

1 个答案:

答案 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