|-----------------------------------------
|      表頭1   |  表頭2   |...
|--------------|----------|---------------
|數據行1       |          |
|--------------|----------|---------------
|數據行2       |          |
|--------------|----------|---------------
|...           |          |
|-----------------------------------------    表頭數量和內容不固定,數據行的多少不固定,
請問如何把這樣的報表做出來?用什麼工具?如何做?

解决方案 »

  1.   

    建义:
     你先根据数据建一个LL表,然后把要的结果存到LL里面
    LL表是固定的,这样的话你就可以用报表了 ̄!
      

  2.   

    把数据写到excel里,编辑好后再倒入数据库
      

  3.   

    方法一:
        導出到Excel不是問題,缺點是報表格式很難調整得好看,並且表頭有合並的情況,導出來很難看。
    方法二:
        用臨時表,可以解決問題,但如果有很多列時,一張報表是放不下的,可能會有二三張或更多,如果有多種報表時,因為有可能每張報表的表頭是不一樣的,那麼在預覽時,不能一次預覽所有的數據,打印時,每張報表都要發送一次打印指令,這樣就會造成用戶操作不便。除了以上兩種方法外,再也沒有更好的辦法嗎?
      

  4.   

    Crsytal Report 能做到標題列合並嗎?
      

  5.   

    我是這麼做的
    Private Sub CMD3_Click()
        Set RS2 = New ADODB.Recordset
        STR2 = "SELECT * FROM PURCHASE INNER JOIN supinfo on purchase.廠商編號=supinfo.廠商編號 WHERE purchase.程度='Y' AND purchase.驗收記錄='N' and purchase.允許列印碼='Y' ORDER BY 訂單號碼,請購單號,序號"
        RS2.Open STR2, CN, adOpenKeyset, adLockOptimistic
        If RS2.BOF And RS2.EOF Then
            MsgBox "無可列印的驗收訂購單"
            Exit Sub
        Else
            RS2.MoveFirst
    PRT:
            M = 1
            N = 1
            PN = RS2!訂單號碼
            Call print_head
    PNT1:
            If RS2.EOF = False Then
                If PN = RS2!訂單號碼 Then
                    Call print_detail
                    RS2!驗收記錄 = "Y"
                    RS2.Update
                    M = M + 1
                    If M > 25 Then
                        RS2.MoveNext
                        Call PRINT_END
                        N = N + 1
                        GoTo PRT
                    Else
                        RS2.MoveNext
                        GoTo PNT1
                    End If
                    PN = RS2!訂單號碼
                    RS2.MoveNext
                    N = N + 1
                    GoTo PNT1
                Else
                    Call PRINT_END
                    GoTo PRT
                End If
            Else
                Call PRINT_END
                Printer.EndDoc
            End If
        End If
        MsgBox "驗收訂購單資料列印完成,請退出"
        
    End Sub
    Sub print_head()
        Printer.FontSize = 9
        Printer.Font = "新細明體"
        Printer.CurrentX = 0
        Printer.CurrentY = 500
        Printer.Print "貨 源:國 外 □";
        Printer.FontSize = 18
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 3400
        Printer.CurrentY = 500
        Printer.Print "江 陰 傑 麥 爾 樂 器 有 限 公 司";
        Printer.FontSize = 14
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 9700
        Printer.Print "驗收單號:"; RS2!訂單號碼
        Printer.FontSize = 9
        Printer.Font = "新細明體"
        Printer.CurrentX = 0
        Printer.Print "    國 內 □"
        Printer.FontSize = 12
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 450
        Printer.Print "廠商編號:"; RS2!廠商編號;
        Printer.FontSize = 18
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 5000
        Printer.Print "驗收訂購單";
        Printer.FontSize = 12
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 9700
        Printer.Print "訂購日期: "
        Printer.FontSize = 12
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.CurrentX = 450
        Printer.Print "廠商名稱:"; RS2!廠商名稱;
        Printer.CurrentX = 9700
        Printer.Print "年   月   日"
        Printer.FontSize = 9
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.Print "┌────┬────┬───────┬───────────────────┬───┬───┬───┬───┬───┬─────┐"
        Printer.Print "│交貨期限│請購單號│品 名 編 號│  品   名   規   格    │單 位│訂購量│交貨量│實收量│單 價│ 總 價 │"
        Printer.Print "├────┼────┼───────┼───────────────────┼───┼───┼───┼───┼───┼─────┤"
    End Sub
    Sub print_detail()
        Price = RS2!實收量 * RS2!訂購單價
        Printer.FontSize = 9
        Printer.Font = "新細明體"
        Printer.Print "│    │    │       │                   │   │   │   │   │   │     │";
        Printer.CurrentX = 120
        Printer.Print RS2!交貨日期;
        Printer.CurrentX = 1100
        Printer.Print RS2!請購單號;
        Printer.CurrentX = 2060
        Printer.Print RS2!零件編號;
        Printer.CurrentX = 3590
        Printer.Print RS2!零件名稱;
        Printer.CurrentX = 7750
        Printer.Print RS2!單位;
        Printer.CurrentX = 8250
        Printer.Print RS2!訂購量;
        Printer.CurrentX = 10500
        Printer.Print RS2!訂購單價
        Printer.Print "├────┼────┼───────┼───────────────────┼───┼───┼───┼───┼───┼─────┤"
    End Sub
    Sub PRINT_END()
        Printer.FontSize = 9
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.Print "│    │    │       │                   │   │   │   │   │   │     │"
        Printer.Print "├────┴────┴───────┴───────────────────┴───┴───┴───┴───┴───┴─────┤"
        Printer.Print "│        備   ( 請      憑      此      單      領      款 )   注       │"
        Printer.Print "├───────────────────────────────────────────────────────────────┤"
        Printer.Print "│                                                               │"
        Printer.Print "│                                                               │"
        Printer.Print "│                                                               │"
        Printer.Print "│                                                               │"
        Printer.Print "│                                                               │"
        Printer.Print "├───────────────────────────────────────────────────────────────┤"
        Printer.Print "│ 小 計:         營業稅:         預付:         扣款:        金額:          │"
        Printer.Print "├───────┬───────────────────────┬───────┬───────────────────────┤"
        Printer.Print "│ 發   票 │                       │ 收   据 │                       │"
        Printer.Print "├───────┼───────┬───────┬───────┼───────┼───────┬───────┬───────┤"
        Printer.Print "│  复  核 │  財  務 │  電  腦 │  審  核 │  倉  庫 │  驗  收 │  主  管 │  經  辦 │"
        Printer.Print "├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤"
        Printer.Print "│       │       │       │       │       │       │       │       │";
        Printer.FontSize = 9
        Printer.Font.Bold = True
        Printer.Font = "標楷體"
        Printer.CurrentX = 11000
        Printer.Print user_name
        Printer.FontSize = 9
        Printer.Font.Bold = True
        Printer.Font = "新細明體"
        Printer.Print "│       │       │       │       │       │       │       │       │"
        Printer.Print "│       │       │       │       │       │       │       │       │"
        Printer.Print "│   月  日│   月  日│   月  日│   月  日│   月  日│   月  日│   月  日│   月  日│"
        Printer.Print "└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘"
        Printer.NewPage
    End Sub
      

  6.   

    XFHUANG(DANIEL):
        佩服!!!!不過,我這個還要復雜。
    Grid中的數據是統計出來的,表頭是動態的,如果相臨的表頭
    相同則合並,列和行都是在統計時加上去的,也就是說隻有
    在統計完之後才知道有多少列行。統計完之後,需要把Grid的
    數據列印出來,並且要按我們統一的報表格式列印,還要有預
    覽功能。
    大家看這樣的報表能做出來嗎?