VFP中memo字段的转换
就是找到一段命令,把Access的表导入到了VFP当中了~但是字段类型都是memo现在想再把它转换成字符型或者有简单的方法直接把Access的表导入VFP的也行有用的话,...
就是找到一段命令,把Access的表导入到了VFP当中了~但是字段类型都是memo
现在想再把它转换成字符型
或者有简单的方法直接把Access的表导入VFP的也行
有用的话,可以追加~~
谢谢大师们了
非常非常庞大~就是记录至少几千条~几万条也常见
所以需要的是一个程序
手动不行的
还有,第一个回答应该不行吧
用的6.0 展开
现在想再把它转换成字符型
或者有简单的方法直接把Access的表导入VFP的也行
有用的话,可以追加~~
谢谢大师们了
非常非常庞大~就是记录至少几千条~几万条也常见
所以需要的是一个程序
手动不行的
还有,第一个回答应该不行吧
用的6.0 展开
3个回答
展开全部
这是我以前做的MDB导入DBF的一个程序,里面有备注字段,可以导入。这里的DBF文件是早有的,如果没有可以在sqlexec()后面加一句 COPY STRUCTURE 命令复制出的表结构。这个程序是将数据导出到自由表里,所以不能有.NULL.。如果导入数据库里的表,可以直接全部导入。
PARAMETERS mdbpath
IF TYPE('mdbpath')<>'C'
=MESSAGEBOX('请指定MDB文件路径。',48,'系统提示')
RETURN
ENDIF
IF RIGHT(mdbpath,4)<>'.mdb'
=MESSAGEBOX('必须指定MDB文件。',48,'系统提示')
RETURN
ENDIF
IF NOT FILE('&mdbpath.')
=MESSAGEBOX('指定的MDB文件不存在。',48,'系统提示')
RETURN
ENDIF
Declare INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
settings="DSN=mdb"+chr(0)+;
"Description=dbf to mdb"+chr(0)+;
"DBQ="+mdbpath+chr(0)
IF SQLConfigDataSource(0,1,"Microsoft Access Driver (*.mdb)",settings)=0
=MESSAGEBOX('建立ODBC失败!',48,'系统提示')
RETURN
ENDIF
*创建临时表保存导入情况
CREATE CURSOR mdbtodbf (dbfname C(20) ,mdbname C(20) ,mdbrecno int ,arr C(100))
*连接ODBC
STORE SQLCONNECT('mdb','','') TO gnConnHandle
*********************************************************************************************************
IF USED('H_PROJECTorg')
SELECT mdbtodbf
APPEND BLANK
REPLACE dbfname WITH 'H_PROJECTorg',mdbname WITH 'H_PROJECTorg'
setting="SELECT ID,TREEID,KIND,QDKIND,BSTATUS,TITLE,DAREAS FROM H_PROJECTorg"
IF sqlexec(gnConnHandle,setting,'mdbtmp')>0
SCAN
INSERT INTO H_PROJECTorg ;
(ID,TREEID,KIND,QDKIND,BSTATUS,TITLE,DAREAS) VALUES ;
(mdbtmp.ID,;
IIF(ISNULL(mdbtmp.TREEID),0,mdbtmp.TREEID),;
IIF(ISNULL(mdbtmp.KIND),0,mdbtmp.KIND),;
IIF(ISNULL(mdbtmp.QDKIND),0,mdbtmp.QDKIND),;
IIF(ISNULL(mdbtmp.BSTATUS),0,mdbtmp.BSTATUS),;
IIF(ISNULL(mdbtmp.TITLE),' ',mdbtmp.TITLE),;
IIF(ISNULL(mdbtmp.DAREAS),0,mdbtmp.DAREAS))
ENDSCAN
COUNT TO m.mdbrecno
SELECT mdbtodbf
REPLACE mdbrecno WITH m.mdbrecno
ELSE
AERROR(arr)
SELECT mdbtodbf
REPLACE mdbrecno WITH -1 ,arr WITH arr(3)
ENDIF
ENDIF
SQLDISCONNECT(gnConnHandle)
IF USED('mdbtmp')
USE IN MDBTMP
ENDIF
RETURN
PARAMETERS mdbpath
IF TYPE('mdbpath')<>'C'
=MESSAGEBOX('请指定MDB文件路径。',48,'系统提示')
RETURN
ENDIF
IF RIGHT(mdbpath,4)<>'.mdb'
=MESSAGEBOX('必须指定MDB文件。',48,'系统提示')
RETURN
ENDIF
IF NOT FILE('&mdbpath.')
=MESSAGEBOX('指定的MDB文件不存在。',48,'系统提示')
RETURN
ENDIF
Declare INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
settings="DSN=mdb"+chr(0)+;
"Description=dbf to mdb"+chr(0)+;
"DBQ="+mdbpath+chr(0)
IF SQLConfigDataSource(0,1,"Microsoft Access Driver (*.mdb)",settings)=0
=MESSAGEBOX('建立ODBC失败!',48,'系统提示')
RETURN
ENDIF
*创建临时表保存导入情况
CREATE CURSOR mdbtodbf (dbfname C(20) ,mdbname C(20) ,mdbrecno int ,arr C(100))
*连接ODBC
STORE SQLCONNECT('mdb','','') TO gnConnHandle
*********************************************************************************************************
IF USED('H_PROJECTorg')
SELECT mdbtodbf
APPEND BLANK
REPLACE dbfname WITH 'H_PROJECTorg',mdbname WITH 'H_PROJECTorg'
setting="SELECT ID,TREEID,KIND,QDKIND,BSTATUS,TITLE,DAREAS FROM H_PROJECTorg"
IF sqlexec(gnConnHandle,setting,'mdbtmp')>0
SCAN
INSERT INTO H_PROJECTorg ;
(ID,TREEID,KIND,QDKIND,BSTATUS,TITLE,DAREAS) VALUES ;
(mdbtmp.ID,;
IIF(ISNULL(mdbtmp.TREEID),0,mdbtmp.TREEID),;
IIF(ISNULL(mdbtmp.KIND),0,mdbtmp.KIND),;
IIF(ISNULL(mdbtmp.QDKIND),0,mdbtmp.QDKIND),;
IIF(ISNULL(mdbtmp.BSTATUS),0,mdbtmp.BSTATUS),;
IIF(ISNULL(mdbtmp.TITLE),' ',mdbtmp.TITLE),;
IIF(ISNULL(mdbtmp.DAREAS),0,mdbtmp.DAREAS))
ENDSCAN
COUNT TO m.mdbrecno
SELECT mdbtodbf
REPLACE mdbrecno WITH m.mdbrecno
ELSE
AERROR(arr)
SELECT mdbtodbf
REPLACE mdbrecno WITH -1 ,arr WITH arr(3)
ENDIF
ENDIF
SQLDISCONNECT(gnConnHandle)
IF USED('mdbtmp')
USE IN MDBTMP
ENDIF
RETURN
展开全部
APPEND MEMO MemoFiledName from Access_table_name
就这么简单,试一下吧。你的是不是V9。0的?
就这么简单,试一下吧。你的是不是V9。0的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新建个空表直接把备注字段内容转存到新表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询