我想问一下就是在怎么提取数据的一个问题。
就是我有几个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内显示,我要怎么办呢。
有什么办法,
还有,我是新手,不太懂的做视图,如果这个要用视图来表示,要怎么做呢

解决方案 »

  1.   

    用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';
      

  2.   

    就用SELECT name,ply FROM A1 ,然后在窗体中对数据集过滤就行了(设置数据集的FILTER的值).
      

  3.   

    楼上说的对,动态改变DBGRID中的属性FELTER的值,最后刷新显示DBGRID就可以得到
    你想要的数据!
      

  4.   

    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\给分吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!