怎么让查询结果返回到grid上(50分)

  • 主题发起人 主题发起人 死神十三
  • 开始时间 开始时间

死神十三

Unregistered / Unconfirmed
GUEST, unregistred user!
function selectquery(sql : string;tp : word) :TADOQuery ;
var aQuery : tadoquery;
begin
aQuery := TADOQuery.Create(nil);
aQuery.Connection := dmaconnection.adoconnection1;
aQuery.SQL.Add(sql);
aquery.Close;
if tp = 1 then aquery.open
else aquery.ExecSQL;
result := aquery;
end;

procedure Tselectform.BitBtn1Click(Sender: TObject);
var sql : string;
aquery1 : tadoquery;
begin
sql := 'select * from 系统参数';
aquery1 := selectquery(sql,1);
dbgrid1.DataSource := aquery1.DataSource;
dbgrid1.Refresh;
end;

为什么运行以后dbgrid上没有显示
 
procedure Tselectform.BitBtn1Click(Sender: TObject);
var sql : string;
aquery1 : tadoquery;
begin
sql := 'select * from 系统参数';
aquery1 := selectquery(sql,1);
dbgrid1.DataSource := aquery1; // 这里修改!!!!!, aqurey1.DataSoure是用来做主席表的。
dbgrid1.Refresh;
end;
 
加个datasource来连接就可以了,设置好两个的属性,ok
 
dbgrid1.DataSource := aquery1.DataSource;
datasource1.DataSet := aquery1;

然后dbgrid的filename要设定!!!
 
在dbgrid1的窗口加个DataSource,然后修改代码如下:
procedure Tselectform.BitBtn1Click(Sender: TObject);
var sql : string;
aquery1 : tadoquery;
begin
sql := 'SELECT * FROM [function]';
aquery1 := selectquery(sql,1);
DataSource1.DataSet:= aquery1;
dbgrid1.DataSource := DataSource1;
dbgrid1.Refresh;
end;
 
我大概明白了
我在查询结果传给dbgrid以后,会释放aquery1。free
这个时候dbgrid里面就没有数据了
那么怎么让他显示出来??
 
有没有人帮帮忙啊
 
dbgrid1.DataSource := aquery1.DataSource;
问题出在这句话上,你对数据集连接和界面显示过程做的不对
1在Data Access面板上拖一个DataSource控件到窗体上,名ds1
2把dbgrid的DataSource属性设为ds1
3把你上面那句错话改为:ds1.DataSet := aquery1;
然后试试
 
ds1.DataSet := aquery1;
但是我一旦aquery1。free
dbgrid就没有数据阿
 
我觉得是这两个属性使用的问题:
aquery.open;
aquery.ExecSQL;
前者可以显示数据集,后者却不能!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
951
SUNSTONE的Delphi笔记
S
后退
顶部