我的思路是:先将txt文本导入到一个临时表,然后在插入到后台数据库,可是在导入临时表时,提示文件不存在。
我在 导入 按钮写的代码如下:请帮忙看看,多谢!!
M_File=ALLTRIM(this.Parent.t_data.Value)
IF LEN(M_File)=0
=MESSAGEBOX("不能为空,请选择待导入的文件!",0+48,"提示")
RETURN
ENDIF
CREATE CURSOR mycursor(cksdm c(6),cxh c(13),csjh c(4),cxkgs i(4),cxkcj c(4))
SELECT mycursor
Append FROM M_File Delimited With Character ','
11 个解决方案
#1
最后一句
Append FROM M_File Delimited With Character ','
改为
Append FROM (M_File) Delimited With Character ','
然后就可以了
不知道为什么 文本文件名称 用变量 表示的要加上 括弧,
试了一下,可以导入了
#2
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
#3
告诉vfp 这个 M_File 是变量,谢谢!
导入临时表成功了,
那么问题来了,怎么将临时表导入到SQL Server 中的tbl_xkcj表呢
#4
在导入按钮输入以下代码,利用临时表更新 远程表
M_File=ALLTRIM(this.Parent.t_data.Value)
IF LEN(M_File)=0
=MESSAGEBOX("不能为空,请选择待导入的文件!",0+48,"提示")
RETURN
ENDIF
nHandle=GetConnHandle() &&获得连接句柄
if nhandle>0
sqlexec(nhandle,"select * from tbl_xkcj","cur_xkcj") &&将服务器中的tbl_xkcj表中的数据读到 cur_xkcj 表中
SELECT cur_xkcj
Append FROM &M_File Delimited With Character ','
我还有另个思路:
先将 txt数据导入到一个临时表,cur_xkcj,然后 逐条insert into 远程表 tbl_xkcj,其中,bz为主键,所有字段均为 字符型
FOR i=1 TO RECCOUNT()
tmpbz=ALLTRIM(cur_xkcj.ksdm)+ALLTRIM(cur_xkcj.xh)+ALLTRIM(cur_xkcj.sjh)
tmpksdm=ALLTRIM(cur_xkcj.ksdm)
tmpxh=ALLTRIM(cur_xkcj.xh)
tmpsjh=ALLTRIM(cur_xkcj.sjh)
tmpxkgs=ALLTRIM(cur_xkcj.xkgs)
tmpxkcj=ALLTRIM(cur_xkcj.xkcj)
sqlstr0="INSERT INTO tbl_xkcj(bz,ksdm,xh,sjh,xkgs,xkcj)"+;
"VALUES(?tmpbz,?tmpksdm,?tmpxh,?tmpsjh,?tmpxkgs,?tmpxkcj)"
nResult=SQLEXEC(nHandle,sqlstr0)
IF nResult>0
MESSAGEBOX("导入正式库成功!",0,"操作提示")
ELSE
MESSAGEBOX("导入失败,请与管理员联系!",0,"操作提示")
RETURN
ENDIF
ENDFOR
执行的时候一直提示 导入失败,这个是什么原因呢?
#7
那就看看出错信息是什么嘛
...
If tableupdate(.t.,.t.,"cur_xkcj")
* update success
else
local array aErr[1]
aerror(aErr)
messagebox(aErr[3])
endif
#8
直接发 insert into命令给 sql server 当然也是很清晰直接的方法
#9
直接发 insert into命令给 sql server 当然也是很清晰直接的方法
我在别的表单用 insert into 可以成功插入,
可在这个表 tbl_xkcj 总是返回 导入失败的提示,也确实没有插入数据,
是不是跟远程表有关系呢
最后一句
Append FROM M_File Delimited With Character ','
改为
Append FROM (M_File) Delimited With Character ','
然后就可以了
不知道为什么 文本文件名称 用变量 表示的要加上 括弧,
试了一下,可以导入了
#2
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
最后一句
Append FROM M_File Delimited With Character ','
改为
Append FROM (M_File) Delimited With Character ','
然后就可以了
不知道为什么 文本文件名称 用变量 表示的要加上 括弧,
试了一下,可以导入了
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
#3
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
最后一句
Append FROM M_File Delimited With Character ','
改为
Append FROM (M_File) Delimited With Character ','
然后就可以了
不知道为什么 文本文件名称 用变量 表示的要加上 括弧,
试了一下,可以导入了
试下这样应该会明白
Append FROM &M_File Delimited With Character ','
告诉vfp 这个 M_File 是变量,谢谢!
导入临时表成功了,
那么问题来了,怎么将临时表导入到SQL Server 中的tbl_xkcj表呢
#4
在导入按钮输入以下代码,利用临时表更新 远程表
M_File=ALLTRIM(this.Parent.t_data.Value)
IF LEN(M_File)=0
=MESSAGEBOX("不能为空,请选择待导入的文件!",0+48,"提示")
RETURN
ENDIF
nHandle=GetConnHandle() &&获得连接句柄
if nhandle>0
sqlexec(nhandle,"select * from tbl_xkcj","cur_xkcj") &&将服务器中的tbl_xkcj表中的数据读到 cur_xkcj 表中
SELECT cur_xkcj
Append FROM &M_File Delimited With Character ','
我还有另个思路:
先将 txt数据导入到一个临时表,cur_xkcj,然后 逐条insert into 远程表 tbl_xkcj,其中,bz为主键,所有字段均为 字符型
FOR i=1 TO RECCOUNT()
tmpbz=ALLTRIM(cur_xkcj.ksdm)+ALLTRIM(cur_xkcj.xh)+ALLTRIM(cur_xkcj.sjh)
tmpksdm=ALLTRIM(cur_xkcj.ksdm)
tmpxh=ALLTRIM(cur_xkcj.xh)
tmpsjh=ALLTRIM(cur_xkcj.sjh)
tmpxkgs=ALLTRIM(cur_xkcj.xkgs)
tmpxkcj=ALLTRIM(cur_xkcj.xkcj)
sqlstr0="INSERT INTO tbl_xkcj(bz,ksdm,xh,sjh,xkgs,xkcj)"+;
"VALUES(?tmpbz,?tmpksdm,?tmpxh,?tmpsjh,?tmpxkgs,?tmpxkcj)"
nResult=SQLEXEC(nHandle,sqlstr0)
IF nResult>0
MESSAGEBOX("导入正式库成功!",0,"操作提示")
ELSE
MESSAGEBOX("导入失败,请与管理员联系!",0,"操作提示")
RETURN
ENDIF
ENDFOR
执行的时候一直提示 导入失败,这个是什么原因呢?
#7
那就看看出错信息是什么嘛
...
If tableupdate(.t.,.t.,"cur_xkcj")
* update success
else
local array aErr[1]
aerror(aErr)
messagebox(aErr[3])
endif
#8
直接发 insert into命令给 sql server 当然也是很清晰直接的方法
#9
直接发 insert into命令给 sql server 当然也是很清晰直接的方法
我在别的表单用 insert into 可以成功插入,
可在这个表 tbl_xkcj 总是返回 导入失败的提示,也确实没有插入数据,
是不是跟远程表有关系呢