求救,在同个DBGRID内显示SELECT不同条件下的数据显示

kaada 2003-09-12 10:56:37
我想问一下就是在怎么提取数据的一个问题。
就是我有几个SELECT * FROM A1的SQL语句,
不同的就是WHERE后面的条件不一样,
例如SELECT name,ply FROM A1 WHERE ZDATE='20030912';
SELECT name,ply FROM A1 WHERE ZDATE>'20030901';
SELECT name,ply FROM A1 WHERE ZDATE='20030101';
name是姓名,ply是金额
就是计算不同的时间段内的同一个人的金额.
那么,如果要在一个DBGRID内显示,我要怎么办呢。
有什么办法,
还有,我是新手,不太懂的做视图,如果这个要用视图来表示,要怎么做呢

...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundayzhao 2003-09-12
  • 打赏
  • 举报
回复
用union
例如
SELECT name,ply FROM A1 WHERE ZDATE='20030912';
union
SELECT name,ply FROM A1 WHERE ZDATE>'20030901';
union
SELECT name,ply FROM A1 WHERE ZDATE='20030101';
changly00 2003-09-12
  • 打赏
  • 举报
回复
1、放两个DateTimePicker在form1中,
DateTimePicker1和DateTimePicker2,用来设置你要提取的时间段。
2\连接ADOConnection1(这是在连接oracle数据库)
2、在按钮的点击事件中加入如下代码

procedure TForm1.Button1Click(Sender: TObject);
var
T1,T2,sql:string;
begin
T1:=datetostr(DateTimePicker1.Date);
T2:=datetostr(DateTimePicker2.Date);
sql:='select name,ply FROM A1 where to_char(ZDATE,'+'''yyyy-mm-dd'''+')>'+''''+T1+''''+'and to_char(ZDATE,'+'''yyyy-mm-dd'''+')<'+''''+T2+'''';
if ADOQuery1.Active then ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.Open;

ADOQuery1.Connection:=ADOConnection1;
DataSource1.DataSet:=ADOQuery1;
DBGrid1.DataSource:=DataSource1;
end;
4\运行,成功!!!
5\给分吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
tulippopo 2003-09-12
  • 打赏
  • 举报
回复
楼上说的对,动态改变DBGRID中的属性FELTER的值,最后刷新显示DBGRID就可以得到
你想要的数据!
vchoushen6 2003-09-12
  • 打赏
  • 举报
回复
就用SELECT name,ply FROM A1 ,然后在窗体中对数据集过滤就行了(设置数据集的FILTER的值).

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧