DBGrid中的数据导出到Access的问题????? (50分)

S

sermon

Unregistered / Unconfirmed
GUEST, unregistred user!
要将DBGrid中的查询结果导出为access文件。
请问高手应该怎么做呢?用什么控件?

最好是哪位FW提供源码给俺看看,谢了
 
给错了
哪位帮忙,追加50分
 
利用TQuery
Select * from table1 into AccessTableName
 
ehlib就有这个功能
www.51delphi.com
 
等等我,试试
 
to 完颜康
你给出的程序是导出到excel吧?

to yaya8163
什么是ehlib,第三方控件?在哪里可以下?
 
埃,年龄大了,眼睛不好使了....
 
不知行不行,这样试试:
select * into [c:/temp/db1.mdb].newtable from mytable
 
1.用DTS编程或在程序中直接运行DTS包
2.在程序用taoquery1,tadoquery2,其中tadoquery1指向你的DBGRID的数据源,tadoquery2
指向你要导出的数据集,然后你想怎样做就随你了(这方法有点笨)
对了,你的DBGRID连的数据库是什么的
 
我的DBGRID连的数据库是sql
 
to 楼上二位FW

能不能给出详细些的说明或是代码,谢谢
 
给你发了程序
看看吧
 
程序?
where? 在线等待
 
procedure TFormMain.ChangeDataClick(Sender: TObject);
var
FileName: String;
ConStr: WideString;
SqlStr: String;
i: Integer;
BB: Boolean;
upDate: TDateTime;
//StringList: TStringList;
begin
Screen.Cursor := crHourGlass;
BB := False;
if OpenDialog1.Execute then
begin
FileName := OpenDialog1.FileName;
if length(ExtractFileName(FileName)) = 11 then
begin
upDate := FileDateToDateTime(FileAge(FileName));
ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;';
ConStr := ConStr + 'Data Source=' + FileName + ';';
ConStr := ConStr + 'Persist Security Info=False';
ADOConnection1.Close;
ADOConnection1.ConnectionString := ConStr;
ADOConnection1.Open;
SqlStr := 'SELECT sTime, sDate, sWho FROM ADB WHERE (sWhere = ''电子门2,门外'') ORDER BY sDate, sWho';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(SqlStr);
ADOQuery1.Open;
//StringList := TStringList.Create;
//StringList.LoadFromFile(SetupFile);
SQLUser := 'cwa_login';
SQLPass := 'cwa';
SQLIP := '192.168.161.201';
//SQLIP := StringList[0];
//SQLUser := StringList[1];
//SQLPass := StringList[2];
//StringList.Free;
ConStr := 'Provider=SQLOLEDB.1;';
ConStr := ConStr + 'Password=' + SQLPass + ';';
ConStr := ConStr + 'Persist Security Info=True;';
ConStr := ConStr + 'User ID=' + SQLUser + ';';
ConStr := ConStr + 'Data Source=' + SQLIP;
ADOConnection2.Close;
ADOConnection2.ConnectionString := ConStr;
ADOConnection2.Open;
{for i := 0 to ADOTable1.RecordCount - 1 do
begin
if ADOTable1.FieldByName('sDate').AsString = ADOQuery1.FieldByName('sDate').AsString then
BB := True;
ADOTable1.Next;
end;}
{ADOTable2.Open;
if ADOTable2.IsEmpty = False then
begin
for i := 0 to ADOTable2.RecordCount - 1 do
begin
if ADOTable2.FieldByName('date').AsString = ADOQuery1.FieldByName('sDate').AsString then
BB := True;
ADOTable1.Next;
end;
end;}
ADOTable2.Open;
if ADOTable2.IsEmpty = False then
begin
for i := 0 to ADOTable2.RecordCount - 1 do
begin
if ADOTable2.FieldByName('file').AsString = ExtractFileName(FileName) then
BB := True;
ADOTable2.Next;
end;
end;

if BB = True then
ShowMessage('数据已加入')
else
begin
if ADOQuery1.RecordCount > 0 then
begin
ADOTable1.Open;
for i := 0 to ADOQuery1.RecordCount - 1 do
begin
ADOTable1.Append;
ADOTable1.FieldByName('sDate').AsString :=
ADOQuery1.FieldByName('sDate').AsString;
ADOTable1.FieldByName('sTime').AsString :=
ADOQuery1.FieldByName('sTime').AsString;
ADOTable1.FieldByName('sWho').AsString :=
ADOQuery1.FieldByName('sWho').AsString;
ADOQuery1.Next;
end;
ADOTable1.Post;
ADOTable2.Append;
ADOTable2.FieldByName('file').AsString := ExtractFileName(FileName);
ADOTable2.FieldByName('upDate').AsDateTime := upDate;
ADOTable2.Post;
end;
ShowMessage('数据加入成功');
end;
ADOQuery1.Close;
ADOTable2.Close;
end
else
ShowMessage('文件选择错误');
ADOTable1.Close;
ADOConnection1.Close;
end;
Screen.Cursor := crDefault;
end;
 
将adodataset2.connectionstring连往欲倒出的access数据库
procedure TForm1.Button4Click(Sender: TObject);
var s1,s1:string;
i:integer;
begin
dbgrid1.first;
s1:='insert into Class values(';
for i=1 to dbgrid1.recordcount do
begin
s1:=s1+dbgrid1.fieldnameby('ID').asstring+','+dbgrid1.fieldbyname('Name')+')';
adodataset2.Active:=false;
adodataset2.CommandText:=s1;
adodataset2.Active:=true;
s1:='insert into Class values(';
end;
end;
 
我试试看
 
多人接受答案了。
 
顶部