各位老大,动态建立adoquery的问题。(50分)

  • 主题发起人 主题发起人 cwt
  • 开始时间 开始时间
C

cwt

Unregistered / Unconfirmed
GUEST, unregistred user!
我要根据一个已存在的dbgrid的datasource动态建立一个adoquery,
即把adoquery的数据源联到dbgrid的数据源,请问怎么搞。
 
讲的不清楚,动态建ADOQuery的时候,dbgrid里面有数据吗
 
dbgrid关联到某个adotable或adoquery上,但事先不知道是table还是query。
 
DataSourceXXX.DataSet := Table or Query
 
我希望使动态建立的adoquery的connection等于dbgrid数据源的connection!!
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, StdCtrls, Grids, DBGrids, ADODB;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
ADOQuery: TADOQuery;
ADODataSet: TCustomADODataSet;
begin
ADODataSet := TCustomADODataSet(DBGrid1.DataSource.DataSet);
ADOQuery := TADOQuery.Create(Self);
try
if Assigned(ADODataSet.Connection) then
ADOQuery.Connection := ADODataSet.Connection
else
ADOQuery.ConnectionString := ADODataSet.ConnectionString;

if ADODataSet is TADOTable then
ADOQuery.SQL.Text := 'select * from ' + TADOTable(ADODataSet).TableName
else if ADODataSet is TADOQuery then
ADOQuery.SQL.Text := TADOQuery(ADODataSet).SQL.Text;
ADOQuery.Open;
ShowMessage('Free')
finally
ADOQuery.Free;
end;
end;

end.
 
with tadoquery.create(nil) do
begin
connection := DataSet.connection;
//你的数据源的connection!!!
......
end;
 
to qianwt:
不行呀,非法操作。
 
你的问题

 
你窗体上DBGrid.DataSource连的数据集是ADOTable还是ADOQuery,已经打开了吗
 
数据集已打开
 
你跟踪一下,哪步报错
 
DbGrid是连到DataSource上的
DataSource有一个DataSet
动态建一个TQuery对象和在设计时创建有什么不同?
TQuery连到数据源上?????
看不懂!!!
 
qianwt说的是对的。送分!!!
 
后退
顶部