有关保存的问题 首先用ADOQuery控件完成对数据库的查询,并已经在DBGrid控件中显示出来,怎样把这些数据保存呢,不想一条记录一条记录地保存,速度太慢了???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (ADOQuery1.State in [dsEdit, dsInsert]) then ADOQuery1.Post LockType:ltBatchOptimistic统一提交:ADOQuery1.UpdateBatch; if (dbgrid1.datasource.dataset.state in [dsEdit, dsInsert]) then dbgrid1.datasource.dataset.post(); 能不能给出一个例子呀,例如我要把adoquery中的记录集保存到一个excel文件中,怎样做呀 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, Grids, DBGrids,comobj, StdCtrls;type TForm1 = class(TForm) Button1: TButton; DataSource1: TDataSource; DBGrid1: TDBGrid; ADOQuery1: TADOQuery; ADOConnection1: TADOConnection; DataSource2: TDataSource; DBGrid2: TDBGrid; ADOQuery2: TADOQuery; procedure Button1Click(Sender: TObject); private { Private declarations } procedure CopyDbDataToExcel(Args: array of const); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CopyDbDataToExcel(Args: array of const);var iCount, jCount: Integer; XLApp: Variant; Sheet: Variant; I: Integer;begin Screen.Cursor := crHourGlass; if not VarIsEmpty(XLApp) then begin XLApp.DisplayAlerts := False; XLApp.Quit; VarClear(XLApp); end; try XLApp:=CreateOleObject('Excel.Application'); except Screen.Cursor := crDefault; Exit; end; XLApp.WorkBooks.Add; XLApp.SheetsInNewWorkbook := High(Args) + 1; for I := Low(Args) to High(Args) do begin XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name; Sheet:= XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name]; if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then begin Screen.Cursor := crDefault; Exit; end; TDBGrid(Args[I].VObject).DataSource.DataSet.first; for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do Sheet.Cells[1, iCount + 1] := TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption; jCount := 1; while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do begin for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do Sheet.Cells[jCount + 1, iCount + 1] := TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString; Inc(jCount); TDBGrid(Args[I].VObject).DataSource.DataSet.Next; end; XlApp.Visible := True; end; Screen.Cursor := crDefault;end;procedure TForm1.Button1Click(Sender: TObject);begin CopyDbDataToExcel([dbgrid1,dbgrid2]);end;end. To: xufenglong(天天向上) 讲解讲解了 写一个SQL查询修改字段 dll封装的窗体中,speedbutton按钮在光标离开的时候,不沉下去。 问题:为什么这条sql语句不行,应该很简单的 Service服务的一些问题,急 查杀木马的源码WHO有?学习一下。 有没有谁知道网文快捕用的是什么数据库啊? 用idtcpclient1向联通网关发短信 写操作系统 极其容易!!!为什么改不了密码???? 简单的送分题 一个数据库插入语句的问题,比较奇怪 怎样让TDataTimePicker控件只显示日期
ADOQuery1.Post
统一提交:ADOQuery1.UpdateBatch;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids,comobj, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
ADOQuery2: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure CopyDbDataToExcel(Args: array of const);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CopyDbDataToExcel(Args: array of const);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end; try
XLApp:=CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end; XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) + 1; for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
Sheet:= XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name]; if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end; TDBGrid(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption; jCount := 1;
while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[jCount + 1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString; Inc(jCount);
TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CopyDbDataToExcel([dbgrid1,dbgrid2]);
end;end.
讲解讲解了