如何读取SQL统计的数值?SQL.Add('Select COUNT(*) AS opp FROM Message'); (20分)

  • 主题发起人 主题发起人 vpp
  • 开始时间 开始时间
V

vpp

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SQL语句统计数据库的全部记录数,同时要将数据库显示,
有一个DBGrid1,一个Query1,一个Datasource1,一个Edit1,一个按钮。
DataSource1的dataset属性为Query1,
DBGrid1的datasource属性为DataSource1
按下按钮后:
With Query1 do
begin
SQL.Clear;
SQL.Add('Select COUNT(*) as opp FROM MessageTable');
ExecSQl; //如果改为open,则提示‘table is read only'的错误信息,我已经将Query1的RequestLive属性设置为true。
//ExecSQL,则什么也不显示。
Edit.Text:=Fields[0].AsString; //提示“List index out of bound(0)”的错误信息
//如果改为Edit1.Text:=FieldByName('opp').AsString;则提示“Query1:Field 'opp' not found”的错误信息
close;
SQL.Clear;
SQL.Add('select * from MessageTable');
Open;
end;
我想知道如何将opp这个值取出来,只在一个edit中显示,同时DBGrid1要显示数据库。
 
要返回数据集就必须使用OPEN,没必要设RequestLive属性设置为true
 
BDE 我没试过,
ADO应该可以啊,
我用ADODATASET,

AdoDataSet1.Close;
AdoDataSet1.CommandText:='Select Count(*) as aaa From Table_1';
AdoDataSet1.Open;

Edit1.Text := IntToStr(AdoDataSet1.FieldValue['aaa']);

Edit1中显示正确的记录个数
 
如果你没有在字段编辑器里增加‘OPP’字段,当然会提示“Query1:Field 'opp' not found”的错误信息。
其实你可以增加一个QUERY2,只管做统计
 
用两个Query
就可以了呀
 
With Query1 do
begin
SQL.Clear;
SQL.Add('Select COUNT('一个字段') as opp FROM MessageTable');
Open; //如果改为open,则提示‘table is read only'的错误信息,我已经将Query1的RequestLive属性设置为true。
//ExecSQL,则什么也不显示。
Edit.Text:=Fields[0].AsString; //提示“List index out of bound(0)”的错误信息
//如果改为Edit1.Text:=FieldByName('opp').AsString;则提示“Query1:Field 'opp' not found”的错误信息
close;
SQL.Clear;
SQL.Add('select * from MessageTable');
Open;
end;
不行吗
 
呵呵,肯定行:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select Count(*) as Opp From PostMessage');
Open;
ShowMessage(FieldByName('Opp').AsString);
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部