我用TClientDataSet DBGridEh  DataBridge写report
其中一个界面设计如下,不知道用DBGridEh怎么实现
上面显示的详细数据是table里面的,现在的想法是把sql写成界面上的形式,DBGridEh就会显示成那样,不知道还有什么更好的方法

解决方案 »

  1.   


    select '' "      ",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'SUNDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  '') "星期日",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'MONDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  '') "星期一",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'TUESDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  trunc(sysdate, 'MM') + 2,
                  TO_CHAR(trunc(sysdate, 'MM') + 2, 'MM/DD'),
                  '') "星期二",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))),
                           'WEDNESDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  trunc(sysdate, 'MM') + 2,
                  TO_CHAR(trunc(sysdate, 'MM') + 2, 'MM/DD'),
                  trunc(sysdate, 'MM') + 3,
                  TO_CHAR(trunc(sysdate, 'MM') + 3, 'MM/DD'),
                  '') "星期三",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'THURSDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  trunc(sysdate, 'MM') + 2,
                  TO_CHAR(trunc(sysdate, 'MM') + 2, 'MM/DD'),
                  trunc(sysdate, 'MM') + 3,
                  TO_CHAR(trunc(sysdate, 'MM') + 3, 'MM/DD'),
                  trunc(sysdate, 'MM') + 4,
                  TO_CHAR(trunc(sysdate, 'MM') + 4, 'MM/DD'),
                  '') "星期四",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'FRIDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  trunc(sysdate, 'MM') + 2,
                  TO_CHAR(trunc(sysdate, 'MM') + 2, 'MM/DD'),
                  trunc(sysdate, 'MM') + 3,
                  TO_CHAR(trunc(sysdate, 'MM') + 3, 'MM/DD'),
                  trunc(sysdate, 'MM') + 4,
                  TO_CHAR(trunc(sysdate, 'MM') + 4, 'MM/DD'),
                  trunc(sysdate, 'MM') + 5,
                  TO_CHAR(trunc(sysdate, 'MM') + 5, 'MM/DD'),
                  '') "星期五",
           decode(NEXT_DAY(trunc(last_day(add_months(sysdate, -1))), 'SATURDAY'),
                  trunc(sysdate, 'MM'),
                  TO_CHAR(trunc(sysdate, 'MM'), 'MM/DD'),
                  trunc(sysdate, 'MM') + 1,
                  TO_CHAR(trunc(sysdate, 'MM') + 1, 'MM/DD'),
                  trunc(sysdate, 'MM') + 2,
                  TO_CHAR(trunc(sysdate, 'MM') + 2, 'MM/DD'),
                  trunc(sysdate, 'MM') + 3,
                  TO_CHAR(trunc(sysdate, 'MM') + 3, 'MM/DD'),
                  trunc(sysdate, 'MM') + 4,
                  TO_CHAR(trunc(sysdate, 'MM') + 4, 'MM/DD'),
                  trunc(sysdate, 'MM') + 5,
                  TO_CHAR(trunc(sysdate, 'MM') + 5, 'MM/DD'),
                  trunc(sysdate, 'MM') + 6,
                  TO_CHAR(trunc(sysdate, 'MM') + 6, 'MM/DD'),
                  '') "星期六"
      from dual
    union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    union all
    select '' " ",
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM'), 'SUNDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 1, 'MONDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 2, 'TUESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 3, 'WEDNESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 4, 'THURSDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 5, 'FRIDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 6, 'SATURDAY'), 'MM/DD')
      from dual
      union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    union all
    select '' " ",
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 7, 'SUNDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 8, 'MONDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 9, 'TUESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 10, 'WEDNESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 11, 'THURSDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 12, 'FRIDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 13, 'SATURDAY'), 'MM/DD')
      from dual
      union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    union all
    select '' " ",
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 14, 'SUNDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 15, 'MONDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 16, 'TUESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 17, 'WEDNESDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 18, 'THURSDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 19, 'FRIDAY'), 'MM/DD'),
           TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 20, 'SATURDAY'), 'MM/DD')
      from dual
      union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    union all
    select '' " ",
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 21, 'SUNDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 21, 'SUNDAY'), 'MM/DD')),
           
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 22, 'MONDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 22, 'MONDAY'), 'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 23, 'TUESDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 23, 'TUESDAY'),
                          'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 24, 'WEDNESDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 24, 'WEDNESDAY'),
                          'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 25, 'THURSDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 25, 'THURSDAY'),
                          'MM/DD')),
           
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 26, 'FRIDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 26, 'FRIDAY'), 'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 27, 'SATURDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 27, 'SATURDAY'),
                          'MM/DD'))
      from dual
      union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    union all
    select '' " ",
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 28, 'SUNDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 28, 'SUNDAY'), 'MM/DD')),
           
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 29, 'MONDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 29, 'MONDAY'), 'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 30, 'TUESDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 30, 'TUESDAY'),
                          'MM/DD')),
           decode(trunc(NEXT_DAY(trunc(sysdate, 'MM') + 31, 'WEDNESDAY'), 'MM'),
                  trunc(add_months(sysdate, 1), 'MM'),
                  '',
                  TO_CHAR(NEXT_DAY(trunc(sysdate, 'MM') + 31, 'WEDNESDAY'),
                          'MM/DD')),
           null,
           
           null,
                 null
      from dual
      union all
    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual
    这段sql能给出表格的框架,但是再往里面加入查询具体内容的sql时,语句就太长了
      

  2.   

    先用这些语句在数据库建视图咯,Delphi中的SQL就短了。
      

  3.   


    select '请假',null,null,null,null,null,null,null from dual
    union all
    select '加班',null,null,null,null,null,null,null from dual
    union all
    select 'TS',null,null,null,null,null,null,null from dual
    union all
    select 'TT',null,null,null,null,null,null,null from dual我的这些语句最后是要替换的,替换成查询data的table和语句
      

  4.   

    我现在想先把星期和左边一栏框架在dataset中写好,然后再查询具体内容,添加到DBGridEh中DBGridEh怎样根据某个单元格的值,返回该单元格下面的单元格