主题:请高手指点
aaabbb1
[专家分:0] 发布于 2009-12-08 12:38:00
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
请高手帮忙,本人刚开始学习,找了好多资料也没有理解,谢谢
最后更新于:2009-12-10 20:38:00
回复列表 (共12个回复)
沙发
cbl518 [专家分:57140] 发布于 2009-12-08 14:44:00
SQLEXEC(nhandle, "INSERT INTO zs2 (字段1,字段2) VALUES (值1,值2 )")
板凳
aaabbb1 [专家分:0] 发布于 2009-12-08 19:32:00
谢谢了,我去试试
3 楼
aaabbb1 [专家分:0] 发布于 2009-12-08 19:43:00
请问,这个值1和值2是什么,我是想用临时表TEMP1的内容,更新到ACCWSS库表zs2中去,另外,这个ACCESS在本地可以否,是否一定要在服务器上,谢谢
4 楼
lbscyb [专家分:4780] 发布于 2009-12-08 23:55:00
SCAN all
rlstm=单位代码
rlsmc=单位名称
cStr = "insert into ZS2(单位代码,单位名称) values( '" + rlstm +"','" + rlsmc + "' )"
SQLEXEC(nhandle,cStr)
ENDSCAN
5 楼
aaabbb1 [专家分:0] 发布于 2009-12-09 19:32:00
谢谢上面二位大哥,应该很清楚了,但我测试怎么还是没更新,我把全部程序写出来,是否还要进行什么设置,请几位大哥继续帮助指导我,谢谢
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 楼
sywzs [专家分:5650] 发布于 2009-12-10 06:04:00
用 SQLDISCONNECT(nhandle) 命令终止与数据源的连接,当再次连接后,你会发现ACCESS中的表zs2已添加了新记录。
7 楼
cbl518 [专家分:57140] 发布于 2009-12-10 06:16:00
SELECT ydyk
SCAN all
cStr = SQLEXEC(nhandle,"insert into ZS2(单位代码,单位名称) values(?ydyk.rlstm,?ydyk.rlsmc )")
ENDSCAN
8 楼
cbl518 [专家分:57140] 发布于 2009-12-10 06:35:00
用SPT技术时,须通过SQL命令进行,
通过 VFP 的 SQLEXEC()函数,送到 SQL SERVER 去执行的语法,必须遵守 SQL SERVER 的规则,而不是VFP的规则。
SQL 命令必须符合 ANSI 或者 T-SQL (微软的TRANSACTION SQL)
如果SQL命令里,用到VFP程序里的变量,变量前必须加问号“?”
9 楼
aaabbb1 [专家分:0] 发布于 2009-12-10 19:18:00
我按照上面几位大哥的帮助,这样写了,可还是不行,数据没有追加到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 楼
sywzs [专家分:5650] 发布于 2009-12-11 06:15:00
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) &&断开连接
根据楼主给的数据,以上代码经测试无误。
我来回复