VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

[問題]報表個別明細怎麼列印???

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
小寶寶



註冊時間: 2004-08-20
文章: 57


第 1 樓

發表發表於: 星期一 十二月 06, 2004 11:26 am    文章主題: [問題]報表個別明細怎麼列印??? 引言回覆

例如:
編號 名稱 重量
.....................................
1170 XXXX 500
1170 XXXX 150
2450 XXXX 100
.....................................
*****個別明細*****
1170 XXXX 650
2450 XXXX 100

請問....這要怎麼寫???

使用摘要沒辦法???

可否賜教!
[/u]
回頂端
檢視會員個人資料 發送私人訊息
bin1x



註冊時間: 2004-08-27
文章: 462


第 2 樓

發表發表於: 星期一 十二月 06, 2004 4:20 pm    文章主題: 引言回覆

那個我是叫分項小計
如果不用report 來做還比較好做
可能會select 成兩個table
而report 的作法,我是採用一個二維(10,4)的陣列
可放十個品項
執行report 時,記錄會逐筆跑,寫個自訂函數,把陣列當累加器使用
最後再印出來就行了
出來的東西大概像這樣
xxxxx xxxxxx xxxxxxxx 99999
xxxxx xxxxxx xxxxxxxx 99999
xxxxx xxxxxx xxxxxxxx 99999
------------------------------------------
xxxxx 99999 xxxxx 99999 xxxxx 99999 xxxxx 99999
xxxxx 99999 xxxxx 99999 xxxxx 99999 xxxxx 99999
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期一 十二月 06, 2004 5:25 pm    文章主題: 引言回覆

這不容易只靠VFP的報表工具來做,

利用工具會作成:
-------------------------------------
1170 XXXX 500
1170 XXXX 150
*****個別明細*****
1170 XXXX 650
-------------------------------------
2450 XXXX 100
*****個別明細*****
2450 XXXX 100
---------------------------

不像表面一樣簡單.........

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
yctsai



註冊時間: 2003-04-11
文章: 180


第 4 樓

發表發表於: 星期一 十二月 06, 2004 10:59 pm    文章主題: 引言回覆

1. report 就可以輕易完成比這複雜100倍的報表
2. 但是丟到 report 之前的 table 要經過分析整理 select ,join,.....等,產生一個
適當的cursor,不怕資料量大,不怕品名多,不怕編碼超過10個20個......
3. select 'a' as id,編碼,名稱,重量 from table into cursor t1
select 'b' as id,編碼,名稱,sum(重量) as 重量 from table group by 編碼,名稱 into cursor t2
select * from t1 union select * from t2 into cursor t3
此時 cursor t3,可以browse看看,已經具有雛形
4. report 明細區段,再利用id 的特性,加工列印.....
5. t3產生的過程,是很有趣的及挑戰性,簡單概念說明,卻可適用所有報表....修行在個人......
回頂端
檢視會員個人資料 發送私人訊息
bin1x



註冊時間: 2004-08-27
文章: 462


第 5 樓

發表發表於: 星期二 十二月 07, 2004 8:33 am    文章主題: 引言回覆

在作這個東西時,我覺得思考問題是個很有趣的事情
講很多也沒有用
而且程式開發說是獨力完成的
那是有點騙人的感覺
以下是這個問題程式片段
問題的重點在於如何達到小計
我是用陣列
程式片段如下
代碼:

DIME ITEM[16,4]
DIME TOTAL1[16]
     FOR I = 1 TO 16
         ITEM[I,1] = SPACE(20)
         ITEM[I,2] = 0
         ITEM[I,3] = 0
         ITEM[I,4] = 0
         TOTAL1[I] = 0
     NEXT

...............
這是累加器的部份
TOTAL1[1] = TOTAL1[1] + TOTPRICE
     TOTAL1[2] = TOTAL1[2] + ABS(TRANS)
     TOTAL1[3] = TOTAL1[3] + OTHER
     TOTAL1[4] = TOTAL1[4] + TOTPRICE + ABS(TRANS) + OTHER
     TOTAL1[5] = TOTAL1[5] + SALCOST
     TOTAL1[6] = TOTAL1[6] + TOTPRICE + ABS(TRANS) + OTHER + SALCOST
     TOTAL1[7] = TOTAL1[7] + TOTMON
     TOTAL1[8] = TOTAL1[8] + RECMON
     TOTAL1[9] = TOTAL1[9] + OWEMON

每筆記錄資料加到累加器,
寫個函數加到報表明細 之中
寫的時候還會有個問題
資料順序和小計品項出現的順序是相同的.....
寫了之後就會明白在講什麼了
所以用陣列寫,須要以陣列的函數
ascan 判斷品項是否存在於陣列之中
以跑迴圈的方式加到累加器之中
代碼:

FOR I = 1 TO 16
         IF LEFT(ITEM[I,1],6) = LEFT(ITEMNM,6) AND SUBSTR(ITEMNM,3,2) <> ""
            ITEM[I,2] = ITEM[I,2] + QTY
            ITEM[I,3] = ITEM[I,3] + TOTPRICE + ABS(TRANS) + OTHER
            ITEM[I,4] = ABS(ROUND(ITEM[I,3]/ITEM[I,2],3))
         ELSE
            IF LEFT(ITEM[I,1],6) = "" AND SUBSTR(ITEMNM,3,2) = ""
               ITEM[I,2] = ITEM[I,2] + QTY
               ITEM[I,3] = ITEM[I,3] + TOTPRICE + ABS(TRANS) + OTHER
               ITEM[I,4] = ABS(ROUND(ITEM[I,3]/ITEM[I,2],3))
            ENDIF
            IF EMPTY(ITEM[I,1])
               IF ASCAN(ITEM,LEFT(ITEMNM,6)) = 0 AND SUBSTR(ITEMNM,3,2) <> ""
                  ITEM[I,1] = LEFT(ITEMNM,6)
                  ITEM[I,2] = QTY
                  ITEM[I,3] = TOTPRICE + ABS(TRANS) + OTHER
                  ITEM[I,4] = ABS(ROUND(ITEM[I,3]/ITEM[I,2],3))
               ELSE
                  IF SUBSTR(ITEMNM,3,2) = ""
                     IF ASCAN(ITEM,"") = 0
                        ITEM[I,1] = ""
                        ITEM[I,2] = QTY
                        ITEM[I,3] = TOTPRICE + ABS(TRANS) + OTHER
                        ITEM[I,4] = ABS(ROUND(ITEM[I,3]/ITEM[I,2],3))
                     ENDIF
                  ENDIF
               ENDIF
            ENDIF
         ENDIF
        *IF EMPTY(ITEM[I,1])
        *   ITEM[I,1] = ITEMNM
        *   ITEM[I,2] = QTY
        *   ITEM[I,3] = TOTPRICE + TRANS + OTHER
        *   ITEM[I,4] = ROUND(ITEM[I,3]/QTY,2)
        *ELSE
        *   * 同類產品彙總
        *   IF ITEM[I,1] = ITEMNM
        *      ITEM[I,2] = ITEM[I,2] + QTY
        *      ITEM[I,3] = ITEM[I,3] + TOTPRICE + TRANS + OTHER
        *      ITEM[I,4] = ROUND(ITEM[I,3]/QTY,2)
        *   ENDIF
        *ENDIF
     NEXT

字串中的內容不曝光好了
那是一個特殊情況
最後把陣列顯示在報表表尾之中
不過*.frx的檔案壞了
做select query 時要注意 順序
因為會影響是否會出現重覆小計出現的問題
反正解決這個問題
就會覺得寫報表很好玩
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 6 樓

發表發表於: 星期三 十二月 08, 2004 12:05 am    文章主題: 引言回覆

其實有個偷懶的方式,
既然group可以分這麼開的話,
表示明細和彙整合計不用印在一起,
那就先作一張只印明細的報表,
再作一張只印彙整的報表,

乖寶寶可不要學喲! Smile

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期三 十二月 08, 2004 12:06 am    文章主題: 引言回覆

高級一點的方法:
有沒有聽過 "多明細報表"........

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作