2013-07-18 108 views
0

我試圖做一個簡單的報告使用水晶報告點網。 但它每次都返回錯誤的值「5」。 正確的值是「3」。 這是我的結果。水晶報告語法錯誤

Desktop 
    Desktop 
    Laptop 
    Laptop 
    Laptop 
Total Laptop 5 

而下面的代碼,我已經使用。

Local numberVar cnt := 0: 
Local stringVar stv := {Table_1.Property}; 
Local numberVar strLen := Count({Table_1.Property}); 
Local numberVar i; 

For i := 1 to strLen do 
(
    If stv = 「Laptop」 
    Then cnt := cnt + 1 
Else cnt := cnt + 0 
); 
cnt; 

哪裏錯了這段代碼? 謝謝:)

+0

無需否則cnt:= cnt + 0 –

回答

0

通過假設記錄打印在詳細信息部分中並且總計的公式位於頁腳部分中,您會得到錯誤的結果,因爲在for循環中您總是讀取最後打印的記錄在細節部分自從頁腳被渲染到之後的詳細信息部分。

作爲一個解決方案,您可以使用以下方法之一:

  1. 方案2分的公式。

    • 創建一個名爲ItemCountDetails的公式,並添加以下代碼。

      WhilePrintingRecords; 
      Shared NumberVar Cnt; 
      
      if RecordNumber = 1 then 
          Cnt:= 0; 
      
      if {Table_1.Property} = "Laptop" then 
          Cnt:= Cnt + 1; 
      
    • 拖動並在細節部分(在您的記錄將被打印)的地方跌落式現場,並用鼠標右鍵點擊該場壓制它 - >設置對象格式 - > Common選項卡 - >和檢查抑制複選框。

    • 創建另一個名爲ItemCountFooter的公式,並添加以下代碼。

      Shared NumberVar Cnt; 
      
    • 將新的公式字段拖放到頁腳部分。

  2. 帶摘要和分組的解決方案。

    • 右鍵點擊部分並選擇摘要。
    • 從「Choose the field to summarize」中選擇Table_1下的「Property」。
    • 從「計算此彙總」中選擇「計數」
    • 單擊插入組,然後從常用選項卡中從第一個組合框中選擇「屬性」。
    • 單擊確定關閉對話框。在報告中,您將看到一個用於組名和字段的字段。
    • 右鍵單擊GroupHeaderSection1欄並選擇抑制。
    • 右鍵點擊「Table_1 Count」。屬性」欄 - >設置對象格式 - > Common選項卡 - >點擊x + 2按鈕,這對抑制複選框的右側,添加以下代碼有

      if GroupName({Table_1.Property}) <> "Laptop" then 
          true 
      else 
          false 
      
+0

哇,是的,謝謝你的幫助,大衛:) – Karla