请大家给看看这段代码为什么导出的DBF文件看不到内容!而且日期型变成了字符型!或者有什么其它办法!源数据表为SQL2000(20分)

  • 主题发起人 主题发起人 易名烦
  • 开始时间 开始时间

易名烦

Unregistered / Unconfirmed
GUEST, unregistred user!
screen.Cursor:=crhourglass;
tablesource.DisableControls;
OUTDBFTAB.Close;
OUTDBFTAB.DatabaseName:=EXTRACTFILEPATH(FILENAME);
OUTDBFTAB.TableName:=EXTRACTFILENAME(FILENAME);
OUTDBFTAB.TABLETYPE:=TTFOXPRO;
OUTDBFTAB.FieldDefs:=TABLESOURCE.FieldDefs;
OUTDBFTAB.CreateTable;
OUTDBFTAB.Open;
TABLESOURCE.First;
WHILE NOT TABLESOURCE.Eof DO
BEGIN
APPLICATION.ProcessMessages;
OUTDBFTAB.Append;
FOR I:=0 TO TABLESOURCE.FieldCount-1 DO
OUTDBFTAB.Fields.Value:=OUTDBFTAB.Fields.Value;
OUTDBFTAB.Post;
TABLESOURCE.Next;
END;
outdbftab.Close;
MESSAGEBOX(HANDLE,PCHAR('数据成功导入到:'+FILENAME),'成功导出',MB_OK+MB_ICONINFORMATION);
screen.Cursor:=crdefault;
tablesource.EnableControls;
EXCEPT
MESSAGEBOX(HANDLE,PCHAR('数据导出错误!'),'提示',MB_OK+MB_ICONERROR);
screen.Cursor:=crdefault;
tablesource.EnableControls;
END;
 
可以使用tbatchmove,
sqlserver2000中的是日期时间型,而由于bde的原因,导 出到dbf就就变成了string,
但是有的bde则可以正确导出,没有发现原因,没有办法
 
tbatchmove好象不支持ADO!
 
这是什么意思???
OUTDBFTAB.Fields.Value:=OUTDBFTAB.Fields.Value;
 
给字段赋值啊!
 
OUTDBFTAB.Fields.Value:=OUTDBFTAB.Fields.Value;
应改为:
OUTDBFTAB.Fields.Value:=TABLESOURCE.Fields.Value;
就可以了

 
zhanggm:谢谢你给找出错误了。
还有一个问题是字段的数据类型不对,原来是日期型的变成了字符型!
 
这个可能是BORLAND的BUG吧?
在OUTDBFTAB.CreateTable过程中如果字段类型为数值型,并指定宽度的话在新的表中
其类型将变成字符型的,并且有可能不指定宽度(跟数据库类型有关),日期型其本质
也是数值型的。
 
那总要解决啊?怎么办?
 
那就麻烦一点吧
分析每一个sqlserver字段的数据类型
再导出为相应的数据类型
建立相应的dbf表,
我对delphi字段定义这方面研究不深,
我想不要试图修改VCL,只这样做就可以了
 
用Table直接倒数据肯定会出现这种情况
倒数据后缺省变成了dbase IV 的格式, 当然看不到了
或者修改BDE Administrator的驱动缺省设置
或者事先建dbase III的格式的表
或者倒数据前用SQL 语句创建表
 
创建DBF要数据类型,我哪找去,只有一个一个判断了!
有没有简单的方法嘛!
 
接受答案了.
 
后退
顶部