回 帖 发 新 帖 刷新版面

主题:请高手指点

nhandle=SQLSTRINGCONNECT("Driver={Microsoft Access Driver (*.mdb)};dbq=aa.mdb;pwd=") &&pwd为数据库密码项 
IF nhandle <=0 
MESSAGEBOX("数据库连接失败!!!",16, '错误信息') 
RETURN 
eLSE 
ac=SQLEXEC(nhandle,"SELECT 单位代码,单位名称 FROM ZS2","Temp1") &&zs2为ACCESS中的表名
IF Ac <0 
MESSAGEBOX("读取数据错误!"+STR(ac),16, '错误信息') 
RETURN 
ENDIF 
SELECT ydyk &&这个是DBF库,在前面打开的

SCAN all
rlstm=单位代码
rlsmc=单位名称
SELECT Temp1
APPEND BLANK
REPLACE 单位代码 WITH rlstm,单位名称 WITH rlsmc
SELECT ydyk
ENDSCAN
ENDIF

SELECT Temp1 
bROWSE 
ENDIF


    到这里经常,可关闭后 access库中表zs2数据没有添加上去,刚才是在TEMP1中添加,有什么语句可以写到access库中表zs2

请高手帮忙,本人刚开始学习,找了好多资料也没有理解,谢谢

回复列表 (共12个回复)

沙发


SQLEXEC(nhandle, "INSERT INTO zs2 (字段1,字段2) VALUES (值1,值2 )")

板凳


谢谢了,我去试试

3 楼


请问,这个值1和值2是什么,我是想用临时表TEMP1的内容,更新到ACCWSS库表zs2中去,另外,这个ACCESS在本地可以否,是否一定要在服务器上,谢谢

4 楼

SCAN all
    rlstm=单位代码
    rlsmc=单位名称
    cStr = "insert into ZS2(单位代码,单位名称) values( '" + rlstm +"','" + rlsmc + "' )"
    SQLEXEC(nhandle,cStr)
ENDSCAN

5 楼

谢谢上面二位大哥,应该很清楚了,但我测试怎么还是没更新,我把全部程序写出来,是否还要进行什么设置,请几位大哥继续帮助指导我,谢谢

nhandle=SQLSTRINGCONNECT("Driver={Microsoft Access Driver (*.mdb)};dbq=aa.mdb;pwd=") &&pwd为数据库密码项 
IF nhandle <=0 
MESSAGEBOX("数据库连接失败!!!",16, '错误信息') 
RETURN 
eLSE 
ac=SQLEXEC(nhandle,"SELECT 单位代码,单位名称 FROM ZS2","Temp1") &&zs2为ACCESS中的表名
IF Ac <0 
MESSAGEBOX("读取数据错误!"+STR(ac),16, '错误信息') 
RETURN 
ENDIF 
use ydy.dbf in 0
SELECT ydyk 

SCAN all
rlstm=单位代码
rlsmc=单位名称
SELECT Temp1
cStr = "insert into ZS2(单位代码,单位名称) values( '" + rlstm +"','" + rlsmc + "' )"
SQLEXEC(nhandle,cStr)
SELECT ydyk
ENDSCAN
ENDIF

SELECT Temp1 
bROWSE 
ENDIF

这样运行下来,ACCESS中的表zs2内容没有变化,是否还要设置什么,谢谢给我继续指点

6 楼

用 SQLDISCONNECT(nhandle) 命令终止与数据源的连接,当再次连接后,你会发现ACCESS中的表zs2已添加了新记录。

7 楼

SELECT ydyk
SCAN all
    cStr = SQLEXEC(nhandle,"insert into ZS2(单位代码,单位名称) values(?ydyk.rlstm,?ydyk.rlsmc  )")
ENDSCAN

8 楼

用SPT技术时,须通过SQL命令进行,
通过 VFP 的 SQLEXEC()函数,送到 SQL SERVER 去执行的语法,必须遵守 SQL SERVER 的规则,而不是VFP的规则。
SQL 命令必须符合 ANSI 或者 T-SQL (微软的TRANSACTION SQL)


如果SQL命令里,用到VFP程序里的变量,变量前必须加问号“?”

9 楼

我按照上面几位大哥的帮助,这样写了,可还是不行,数据没有追加到ACCESS的表ZS2中,再次请求帮忙,是否还要其它设置之类的,谢
现在把数据库也附上,请大哥哥们帮我测试一下,到底错在什么地方,小弟已经研究了好长时间了,测试库下载地址  http://ryx.dhjxxx.cn/ydyxj/bb.rar

nhandle=SQLSTRINGCONNECT("Driver={Microsoft Access Driver (*.mdb)};dbq=aa.mdb;pwd=") &&pwd为数据库密码项 
IF nhandle <=0 
MESSAGEBOX("数据库连接失败!!!",16, '错误信息') 
RETURN 
eLSE 
use ydyk.dbf in 0
SELECT ydyk 
   SCAN all
      cStr = SQLEXEC(nhandle,"insert into dw(单位代码,单位名称) values (?ydyk.单位代码,?ydyk.单位名称)")
   ENDSCAN
ENDIF


[url=http://ryx.dhjxxx.cn/ydyxj/bb.rar]测试数据库下载地址[/url]

10 楼

nhandle=SQLSTRINGCONNECT("Driver={Microsoft Access Driver (*.mdb)};dbq=aa.mdb;pwd=")
IF nhandle <=0 
MESSAGEBOX("数据库连接失败!!!",16, '错误信息') 
RETURN 
ELSE 
ac=SQLEXEC(nhandle,"SELECT * FROM dw","Temp1")
IF Ac <=0 
MESSAGEBOX("读取数据错误!"+STR(ac),16, '错误信息') 
RETURN 
ENDIF 
IF !USED("ydyk")
USE ydyk IN 0
ENDIF 
SELECT ydyk 
   SCAN all
      SQLEXEC(nhandle,"insert into dw(单位代码,单位名称) values (?ydyk.单位代码,?ydyk.单位名称)")
   ENDSCAN
ENDIF
*** 下面两句是查看数据是否添加到 Access 中,可将其删除。
SQLEXEC(nhandle,"SELECT * FROM dw","Temp1")
BROWSE 
SQLDISCONNECT(nhandle)  &&断开连接

根据楼主给的数据,以上代码经测试无误。

我来回复

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