如何将ADOQuery1中的数据保存成txt格式?

haipeng2950 2003-02-14 05:20:19
求教将ADOQuery1中的数据保存成txt格式的delphi源码?
...全文
63 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
haipeng2950 2003-02-15
  • 打赏
  • 举报
回复
谁能告知dbgrideh的那个方法可以将数据导成txt格式,
代码怎么实现?
alps2001 2003-02-15
  • 打赏
  • 举报
回复
ehlib导出方法:


procedure tFrmDataManage.GridSaveAS (grid: TDBGridEh);
var ExpClass:TDBGridEhExportClass;
Ext:String; SaveDlg:TSaveDialog;
ExportAll:Boolean;
begin
ExportAll:=True; //缺省情况下导出所有数据
SaveDlg:=TSaveDialog.Create(Application);
SaveDlg.Filter:='Excel表格(*.XLS)|*.XLS|HTML文档(*.HTM)|*.HTM|RTF格式(*.RTF)|*.RTF|纯文本文件(*.TXT)|*.TXT|逗号分隔文本格式(*.CSV)|*.CSV';
SaveDlg.FileName:='未命名';
SaveDlg.Options := [ofOverwritePrompt,ofHideReadOnly, ofEnableSizing];
if SaveDlg.Execute then
begin
case SaveDlg.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
2: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
3: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
4: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
5: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDlg.FileName,Length(SaveDlg.FileName)-2,3)) <>

UpperCase(Ext) then
SaveDlg.FileName := SaveDlg.FileName + '.' + Ext;
//如果grid中有选择的区域,则只导出所选择的区域
if grid.Selection.SelectionType<>gstNon then ExportAll:=False;
Try
SaveDBGridEhToExportFile(ExpClass,grid,SaveDlg.FileName,ExportAll);
Except
On E:Exception do
begin
MessageBox(0,LPCTSTR('保存文件发生异常,请检查是否有重名文件并且该文件没有被打开!'),'注意',MB_OK or MB_ICONWARNING);
Exit;
end;
End;
end;
end;
end;
haipeng2950 2003-02-14
  • 打赏
  • 举报
回复
但这样是不是效率有一点低?写100万条纪录需要多长时间?
xirumin 2003-02-14
  • 打赏
  • 举报
回复
同意楼上,用dbgrideh好
alps2001 2003-02-14
  • 打赏
  • 举报
回复
一条一条写很慢的
我觉得最好是用控件ehlib,这组控件里面有各dbgirdeh,继承dbgrid,利用dbgrideh的一个方法可以将数据导出为txt,execl等格式。
ekin 2003-02-14
  • 打赏
  • 举报
回复
一条一条往里写
Billy_Chen28 2003-02-14
  • 打赏
  • 举报
回复
自已循环写文本文件
beata88 2003-02-14
  • 打赏
  • 举报
回复
是不是要一条条往文本里写呀!!
直接保存好像不行吧
anh 2003-02-14
  • 打赏
  • 举报
回复
你可以用batchmove来做,也可以用一个最基本的方法来做。
那就是你定义一个文本文件,把你的adoquery中的记录一条条的写入这个
文件中,这样是最好控制的,我用过。不错的。

前一种用时不好控制。

netwolfds 2003-02-14
  • 打赏
  • 举报
回复
var
file1:textfile;
s:string;
begin
system.assign(file1,'test.txt');
system.reset(file1)
adoquery1.first;
while not adoquery1.eof do
begin
s:=
writeln(file1,s);
adoquery1.next;
end;
system.close(file1);
end;
haipeng2950 2003-02-14
  • 打赏
  • 举报
回复
乱码
qiujsh 2003-02-14
  • 打赏
  • 举报
回复
adoquery1.SaveToFile('aa.txt') 不知道行否

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧