dbf表结构与access表结构是一样的
如果字段是中文,导入到access表中字段就变成乱码
前台delphi程序调用access数据库的时候字段也是乱码
//复制一个空的access数据库到data目录下面
CopyFile(PChar(gExePath + 'DataModle\ItemDistribute.mdb'), PChar(gExePath + 'Data\ItemDistribute.mdb'), False);
MemInfor.Lines.Add('开始把上传数据导入到access数据库...');
qrydistribute.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''+PChar(gExePath + 'Data\ItemDistribute.mdb')+''';Persist Security Info=False';
qrydistribute.Close;
//导入考场表
qrydistribute.SQL.Clear;
qrydistribute.SQL.Add('insert into 考场表(Kc_h,Ss_h,Ss_rs,Bz) select Kc_h,Ss_h,Ss_rs,Bz from 考场表 in '''+PChar(sourcenew)+''' ''dbase 5.0;''');
qrydistribute.ExecSQL;
20 个解决方案
#1
access数据库的字段类型有问题吧?
存放中文的只能是 char、text 而不能是 nchar、ntext
存放中文的只能是 char、text 而不能是 nchar、ntext
#2
你好,xuzuning
我刚查看了access数据库,中文字段的数据类型都设置的是文本
#3
DBF是怎么建立的,直接在ACCESS中运行结果如何
#4
看一下从 dbf 读出,导入 Access 之前是不是乱码。
#5
你好,wwwb
dbf是通过vf程序建立的
直接在access中运行没有乱码
还有一个问题:
如果sql语句可以直接操作多个dbf表关联查询的话,我就不用把dbf导入到access数据库中了
现在就是由于要对多个表关联查询并处理,所以我的想法是:
1.把dbf导入到access数据库中
2.在access中把数据处理好
3.再把access数据导入到dbf文件中
4.完成
你看这样对吗?
#6
是正常的,不是乱码
#7
sql语句可以直接操作多个dbf表关联查询
可以的,你说一下要求
可以的,你说一下要求
#8
直接运行:
select * from [dbase 5.0;database=r:\temp].a a1 left join
[dbase 5.0;database=r:\temp].b a2 on a1.id=a2.id
select * from [dbase 5.0;database=r:\temp].a a1 left join
[dbase 5.0;database=r:\temp].b a2 on a1.id=a2.id
#9
我是这样写的,无法执行
就是2个表根据考生号关联,取出b表的考生姓名
你帮忙看下哪里的错误?
qrydistribute.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''+PChar(gExePath + 'Data\ItemDistribute.mdb')+''';Persist Security Info=False';
qrydistribute.Close;
//导入考生信息表
qrydistribute.SQL.Clear;
qrydistribute.SQL.Add('insert into 考生信息表(Ks_h,Xm,Kc_h) select a.Ks_h,b.Xm,a.Zx_h from 考生信息表 in '''+PChar(sourcenew)+''' ''dbase 5.0;'' a,'+'考生姓名表 in '''+PChar(sourcenew)+''' ''dbase 5.0;'' b where a.ks_h=b.ks_h');
qrydistribute.ExecSQL;
#10
谢谢
我试一下
我的adoquery连接的是access数据库
#11
qrydistribute.SQL.Clear; qrydistribute.SQL.Add(' select * from [dbase 5.0;database='+PChar(sourcenew)+'].考生信息表 ');
qrydistribute.Open;
ShowMessage(IntToStr(qrydistribute.RecordCount));
这样直接回报错误:
project raised exception class eoleexception with message '不正常地定义参数对象,提供了不一致或不完整的信息‘
#12
SQL中的内容是什么,直接在ACCESS中运行结果,sourcenew是什么内容
#13
你的写法不懂,vfp 中可以直接:
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
#14
你改用:
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,可支持vfp的大部分命令
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14839
Version: 1.2
Date Published: 5/16/2008
Language: English
File Name Size
vfpoledb.msm 829 KB
VFPOLEDBSetup.msi 1.0 MB (安装此项)
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
然后用
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
试试,即不用 Access 中转了。
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,可支持vfp的大部分命令
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14839
Version: 1.2
Date Published: 5/16/2008
Language: English
File Name Size
vfpoledb.msm 829 KB
VFPOLEDBSetup.msi 1.0 MB (安装此项)
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
然后用
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
试试,即不用 Access 中转了。
#15
sourcenew是当前要操作dbf文件的路径
#16
十分感谢
我这个程序做好之后发给用户
用户端需要安装oledb for odbc吗?
这个程序是发给用户使用的
#17
需要安装
#18
写错了,是oledb for vfp用户端必须要安装吗?
#19
上传你的DBF到www.access911.net/csdn
,用WINRAR压缩
#20
多谢了
我现在采用直接操作dbf的方法暂时没有发现有乱码
可能是dbf和access表转换的时候由于字段编码的问题导致的
#21
#1
access数据库的字段类型有问题吧?
存放中文的只能是 char、text 而不能是 nchar、ntext
存放中文的只能是 char、text 而不能是 nchar、ntext
#2
你好,xuzuning
我刚查看了access数据库,中文字段的数据类型都设置的是文本
#3
DBF是怎么建立的,直接在ACCESS中运行结果如何
#4
看一下从 dbf 读出,导入 Access 之前是不是乱码。
#5
你好,wwwb
dbf是通过vf程序建立的
直接在access中运行没有乱码
还有一个问题:
如果sql语句可以直接操作多个dbf表关联查询的话,我就不用把dbf导入到access数据库中了
现在就是由于要对多个表关联查询并处理,所以我的想法是:
1.把dbf导入到access数据库中
2.在access中把数据处理好
3.再把access数据导入到dbf文件中
4.完成
你看这样对吗?
#6
是正常的,不是乱码
#7
sql语句可以直接操作多个dbf表关联查询
可以的,你说一下要求
可以的,你说一下要求
#8
直接运行:
select * from [dbase 5.0;database=r:\temp].a a1 left join
[dbase 5.0;database=r:\temp].b a2 on a1.id=a2.id
select * from [dbase 5.0;database=r:\temp].a a1 left join
[dbase 5.0;database=r:\temp].b a2 on a1.id=a2.id
#9
我是这样写的,无法执行
就是2个表根据考生号关联,取出b表的考生姓名
你帮忙看下哪里的错误?
qrydistribute.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''+PChar(gExePath + 'Data\ItemDistribute.mdb')+''';Persist Security Info=False';
qrydistribute.Close;
//导入考生信息表
qrydistribute.SQL.Clear;
qrydistribute.SQL.Add('insert into 考生信息表(Ks_h,Xm,Kc_h) select a.Ks_h,b.Xm,a.Zx_h from 考生信息表 in '''+PChar(sourcenew)+''' ''dbase 5.0;'' a,'+'考生姓名表 in '''+PChar(sourcenew)+''' ''dbase 5.0;'' b where a.ks_h=b.ks_h');
qrydistribute.ExecSQL;
#10
谢谢
我试一下
我的adoquery连接的是access数据库
#11
qrydistribute.SQL.Clear; qrydistribute.SQL.Add(' select * from [dbase 5.0;database='+PChar(sourcenew)+'].考生信息表 ');
qrydistribute.Open;
ShowMessage(IntToStr(qrydistribute.RecordCount));
这样直接回报错误:
project raised exception class eoleexception with message '不正常地定义参数对象,提供了不一致或不完整的信息‘
#12
SQL中的内容是什么,直接在ACCESS中运行结果,sourcenew是什么内容
#13
你的写法不懂,vfp 中可以直接:
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
#14
你改用:
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,可支持vfp的大部分命令
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14839
Version: 1.2
Date Published: 5/16/2008
Language: English
File Name Size
vfpoledb.msm 829 KB
VFPOLEDBSetup.msi 1.0 MB (安装此项)
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
然后用
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
试试,即不用 Access 中转了。
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,可支持vfp的大部分命令
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14839
Version: 1.2
Date Published: 5/16/2008
Language: English
File Name Size
vfpoledb.msm 829 KB
VFPOLEDBSetup.msi 1.0 MB (安装此项)
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
然后用
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Left Join 考生姓名表 b On a.ks_h=b.ks_h
或
Select a.Ks_h,b.Xm,a.Zx_h From 考生信息表 a Inner Join 考生姓名表 b On a.ks_h=b.ks_h
试试,即不用 Access 中转了。
#15
sourcenew是当前要操作dbf文件的路径
#16
十分感谢
我这个程序做好之后发给用户
用户端需要安装oledb for odbc吗?
这个程序是发给用户使用的
#17
需要安装
#18
写错了,是oledb for vfp用户端必须要安装吗?
#19
上传你的DBF到www.access911.net/csdn
,用WINRAR压缩
#20
多谢了
我现在采用直接操作dbf的方法暂时没有发现有乱码
可能是dbf和access表转换的时候由于字段编码的问题导致的