我有一表 字段--->F1,  F2,  F3, F4                    F1,  F2,  F3, F4
                     p001  20   1    a                   p001  20   1    a  
                     p001  22   2    b                         22   2    b
                     p001  23   3    c  實現數據源-->          23   3    c 
                     p002  24   4    d                   p002  24   4    d
                     p002  25   5    e                         25   5    e
                     p003  26   6    f                   p003  26   6    f
     把數據源放到rave報表中,實現
                         | F1 | F2 | F3 | F4 |
                         -------------------- 
                              | 20   1    a  
                              | ---------------
                          p001| 22   2    b
                              | ----------------
                              | 23   3    c
                         --------------------- 
                              | 24   4    d
                          p002| --------------- 
                              | 25   5    e
                         ---------------------
                          p003| 26   6    f 
         愁死我了,希望你給我提點建議,如果能鉤解決,在下感激不盡!中秋快樂!
                              

解决方案 »

  1.   

    pazee(耙子)(灵感点亮生活)你也是高手啊 ,希望幫忙
      

  2.   

    select case when f2 = (select min(f2) from tmp where a.f1 = f1) then a.f1 else ''  end f1,  a.f2, a.f3, a.f4
     from tmp a
      

  3.   

    meiqingsong(阿飛)  謝謝了 ,不過主要是實現到 rave 中 ,最後一步為關鍵!  
      在線等!
      

  4.   

    你把我的sql语句放到你的数据源中
    再生成rave的简单报表就可以了
      

  5.   


        我了解,不過公司很注重外表,要生成如題之樣子,p001,p002,p003盡量讓其居中,還有
    注意p001,p002,p003之間的線! 等你!
      

  6.   

    你們都是高手,在rave中的問題真的很難解決!先謝謝大家了.  下班了,明天見!
      

  7.   


       不會吧,csdn裡面高手如雲,怎麼中秋節都不在啊,此問題非rave高人才能解決
      

  8.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      RvSystem1.Execute;
    end;procedure TForm1.RvSystem1Print(Sender: TObject);
    var
      i,row: Integer;
      base, rSpace, cSpace: Double;
      f1: String;
    begin
      rSpace := 0.5;  //行距
      cSpace := 1.0;  //列距  with Sender as TBaseReport do
      begin
        SectionTop := 0.75;   // 设置表头
        SetFont('黑體', 24);
        Underline := false;
        Home;
        YPos := 1.0;
        //FontRotation := 15;
        PrintCenter('title', PageWidth / 2);    SetFont('宋體', 9);        //设置页角
        SectionBottom := 10.75;
        PrintFooter('  page' + IntToStr(CurrentPage) + ' ', pjLeft);
        PrintFooter('date:' + DateToStr(date) + '   ', pjRight);    SetPen(clBlack, psSolid, -1, pmCopy);   //设置列头
        for i := 0 to 3 do
        begin
          GotoXY(cSpace * (i + 1), 2);
          print('f' + IntToStr(i + 1));
          GotoXY(cSpace * (i + 0.5), 2);
          print('|');
        end;
        GotoXY(1.0 * (i  + 0.5), 2);
        print('|');
            
        println('');         //画横线
        SetPen(clBlack, psDot, -1, pmCopy);
        MoveTo(1.0, 2.1);
        Lineto(4.5 * cSpace, 2.1);
        i := 0;
        f1 := '';
        row := 1;
        ADOQuery1.First;
        While not(ADOQuery1.Eof) do
        begin
          if Trim(ADOQuery1.FieldByName('f1').AsString) <> '' then
          begin
            if i > 0 then
            begin
              GotoXY(1.0, base + rSpace * (i - 1) / 2);
              Print(f1);
            end;
            f1 := ADOQuery1.FieldByName('f1').AsString;
            i := 1;
            base := 2 + rSpace * row;
            if (row > 1) and (row <= (ADOQuery1.RecordCount -1)) then
            begin
              MoveTo(1.0, 2.1 + rSpace * (row - 1));
              Lineto(4.5 * cSpace, 2.1 + rSpace * (row -1));
            end;
          end
          else
            i := i + 1;
          GotoXY(2 * cSpace, 2 + rSpace * row);
          Print(ADOQuery1.FieldByName('f2').AsString);
          GotoXY(3.0 * cSpace, 2 + rSpace * row);
          Print(ADOQuery1.FieldByName('f3').AsString);
          GotoXY(4.0 * cSpace, 2 + rSpace * row);
          Print(ADOQuery1.FieldByName('f4').AsString);
          Println('');
          if ((row > 0) and (row <= (ADOQuery1.RecordCount -1))) then
          begin
            MoveTo(1.5, 2.1 + rSpace * row);
            Lineto(4.5 * cSpace, 2.1 + rSpace * row);
          end;
          ADOQuery1.Next;
          row := row + 1;
        end;
        GotoXY(1.0, base + rSpace * (i - 1) / 2);
              Print(f1);
        SetPen(clBlack, psDash, -1, pmCopy);
        MoveTo(1.0 + rSpace, 2);
        LineTo(1.0 + rSpace, 2 + rSpace * (row -1) );
      end;
    end;
      

  9.   

    meiqingsong(阿飛) 你厲害啊,這樣都行! 有點不足之處,設計完全在程序中,公司要求美觀的報表,並且如果本頁記錄不夠,但線仍能布滿全頁,保證美觀!! 
         好感謝! 解決之後在開帖!分不是重要的,我知道你很厲害!
         我的qq;17721318
      

  10.   

    好象是qq出了問題,影響多少人啊!
    字段名稱應調用adoquery1字段