【发布时间】:2012-03-25 09:51:14
【问题描述】:
此问题与 Visual basic 6.0 (SP 6) 中 VFP COM 服务器的使用有关。
代码(相关)
Private moVFPServer As f_vfpsvr.VFPServer
在潜艇中:
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。
这发生在同一台机器上。
【问题讨论】:
-
从 VFP 9 调用 COM 对象是否工作?
-
-2147417851 = 0x80010105 = "服务器抛出异常"。你的 foxpro 代码崩溃了。
-
Tamar,我检查了,它在 VFP 8 或 VFP 9 上的 VFP 开发环境中不起作用。
-
汉斯,它确实崩溃了。关键是代码是由 COM 服务器中的方法执行的,并且恰好在对象返回给调用的 VB 程序时崩溃。
-
顺便说一句,VFPServer 中的 NewRecord 方法调用了另一个方法,该方法又根据位于同一 DLL 中的类 VFPRecord 实例化对象。如果有人想知道 NewRecord 方法的工作原理,我将通过电子邮件发送包含类的程序。它很短很干净。
标签: com visual-foxpro