|-----------------------------------------
| 表頭1 | 表頭2 |...
|--------------|----------|---------------
|數據行1 | |
|--------------|----------|---------------
|數據行2 | |
|--------------|----------|---------------
|... | |
|----------------------------------------- 表頭數量和內容不固定,數據行的多少不固定,
請問如何把這樣的報表做出來?用什麼工具?如何做?
| 表頭1 | 表頭2 |...
|--------------|----------|---------------
|數據行1 | |
|--------------|----------|---------------
|數據行2 | |
|--------------|----------|---------------
|... | |
|----------------------------------------- 表頭數量和內容不固定,數據行的多少不固定,
請問如何把這樣的報表做出來?用什麼工具?如何做?
你先根据数据建一个LL表,然后把要的结果存到LL里面
LL表是固定的,这样的话你就可以用报表了 ̄!
導出到Excel不是問題,缺點是報表格式很難調整得好看,並且表頭有合並的情況,導出來很難看。
方法二:
用臨時表,可以解決問題,但如果有很多列時,一張報表是放不下的,可能會有二三張或更多,如果有多種報表時,因為有可能每張報表的表頭是不一樣的,那麼在預覽時,不能一次預覽所有的數據,打印時,每張報表都要發送一次打印指令,這樣就會造成用戶操作不便。除了以上兩種方法外,再也沒有更好的辦法嗎?
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
佩服!!!!不過,我這個還要復雜。
Grid中的數據是統計出來的,表頭是動態的,如果相臨的表頭
相同則合並,列和行都是在統計時加上去的,也就是說隻有
在統計完之後才知道有多少列行。統計完之後,需要把Grid的
數據列印出來,並且要按我們統一的報表格式列印,還要有預
覽功能。
大家看這樣的報表能做出來嗎?