回 帖 发 新 帖 刷新版面

主题:[原创]救命啊!!!!

VFP+MDB做的程序,当程序中更新后台数据时会出现如下错误:

[ODBC Microsoft Access Driver] OLE Automation 内部错误 

其主要代码如下:

lIfSave=thisform.check1.Value&&这是登录表单中选择是否记住当前登录用户即密码的复选框.
IF SysFound("LIKE(ALLTRIM(UPPER(用户名)),'&cUaerName')",cSaveLogin)<=0&&此函数是自定义查询有无满足条件的记录数,没有则为0,出错误为负,有则返回实际存在的记录数.
    IF lIfSave=.T.
        INSERT INTO (cSaveLogin) (用户名,密码) VALUES (cUaerName,cUserPwd)
    ELSE
        INSERT INTO (cSaveLogin) (用户名,密码) VALUES (cUaerName,"")
    ENDIF
ELSE
    IF lIfSave=.T.
        UPDATE (cSaveLogin) SET 密码=m.cUserPwd WHERE ALLTRIM(UPPER(用户名))=m.cUaerName
    ENDIF
ENDIF
IF GETNEXTMODIFIED(0,cSaveLogin)#0&&判断有是数据记录被修改
    BEGIN TRANSACTION
    IF !TABLEUPDATE(1,.T.,cSaveLogin)
        MESSAGEBOX(MESSAGE(),48,"错误信息")
        END TRANSACTION
        RETURN .F.
    ENDIF
    END TRANSACTION &&结束事务处理.
ENDIF

主要问题和疑点:当程序中没有运行那条UPDATE命令,后面的TABLEUPDATE()就会返回.T.,否则为.F.,用MESSAGEBOX(MESSAGE(),48,"错误信息")查看,则为"
[ODBC Microsoft Access Driver] OLE Automation 内部错误";如果程序中不运行UPDATE一句,则不会出现此错误,为什么会这样,真是头都大了,没法解决,请各位老师帮助解释一下.网上我也搜索过,也发现有很多有提出此问题,但都没有合理的解释,是不是MDB数据库有问题?为了确疹,我又运行了以前我的一个VFP+MDB的另一个程序,也出现错误,该程序一直运行好好的,我又没有动过,也出错误,真想不通!!!!

回复列表 (共2个回复)

沙发

cSYS_MDBFile=GETFILE("mdb")
nSYS_ConMdb=SQLSTRINGCONNECT("Driver={Microsoft Access-Treiber (*.mdb)};dbq=&cSYS_MDBFile.;uId=admin;pwd=123456")
CREATE DATABASE "f:\dbc\测试.dbc"
CREATE CONNECTION cCon CONNSTRING SQLGETPROP(nSYS_ConMdb,"ConnectString")
CREATE SQL VIEW 测试 REMOTE CONNECTION cCon AS SELECT * FROM "users"
USE 测试!测试
CURSORSETPROP("AllowSimultaneousFetch",.F.,"测试")
CURSORSETPROP("Buffering",5,"测试")
CURSORSETPROP('KeyFieldList',"RID","测试")
CURSORSETPROP('SENDUPDATES',.T.,"测试")
CURSORSETPROP("UpdateType",1,"测试")
UPDATE 测试 SET 密码="789" WHERE 用户名="user"
?GETNEXTMODIFIED(0,"测试")
?TABLEUPDATE(1,.T.,"测试")&&保存数据
?MESSAGE()

以上代码在命令窗口一样出现此错误!

板凳

我晕,我重装一下系统就可以了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册