C# 水晶報表問題的一些總結(持續更新)

1.數據從DataSet導入到報表中不能直接oRpt.SetDataSource(ds);
            應該oRpt.SetDataSource(ds.Tables[0]);
            或者oRpt.SetDataSource(ds.Tables["表名"]);
2.ArrayList 二維數組的應用
      例子:
      原思路:將得到的每條二進制圖片數據byte[] bt = br.ReadBytes((int)fs.Length);放入新定義的
              一個byteTemp數組中,顯然不行,因爲bt本身就是一個數組,而新定義的byteTemp數組的
              每個元素都要求是bt型。
      解決辦法:二維數組ArrayList
            ArrayList btList = new ArrayList(6);
            for (int i = 0; i < getPath.Length; i++)
            {   
                FileStream fs = new FileStream(getPath[i], FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                byte[] bt = br.ReadBytes((int)fs.Length);
                btList.Insert(i, bt);
                fs.Close();
            }
            btList.Insert(i, bt);i表示位置,相當於第i個,bt表示當前值。
3.將圖片的二進制變量賦爲空
            string strTemp = "";
            byte[] temp;

            temp = new ASCIIEncoding().GetBytes(strTemp);//將符號""裝換成二進制
            btList[5] = temp; 
4.怎麼去掉水晶報表空白圖片遺留的邊框
        方法:1.在水晶報表上對需要去掉的圖片點擊右鍵,選擇Format Object.
              2.選擇Common,對Suppress勾上
              3.修改格式公式編輯器isnull({DataTable1.Pic6})
              這樣圖片6就OK了

5.oCR.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
  報表紙張明明設置的是A4,但打印出來的時候,一頁大概還有1/5頁空白在底下沒用,由上面代碼引起的

 

6.過段時間發現數據庫連接錯誤
  主要是用戶名更改後引起的,應該把連接全部重新設置爲(local)

 

8.如果發現報表有很多數據
  (1)查看報表數據庫專家裏面的鏈接,不要有分支
  (2)如果要求一個模版打印多條數據,則要將字段放入詳細資料裏面

 

9.水晶報表映射問題
  1.強連接---
    又鍵點擊手動生成的DataSet中強連接的表中屬性,觀察SQL語句
    如果在fill該表中,連接的數據爲空,則會報錯
  2.弱連接
    手動生成的DataSet中弱連接的表是手動添加的,不存在以上問題,也可以映射圖片

 

10.水晶報表的關閉按鈕事件處理--

 

11.報表數據爲空:

     ①大部分情況都是數據庫專家裏面的各個表連接的影響的,表現在數據不唯一

     ②報表數據源修改後,如果數據不顯示的一個原因就是字段得重新連接,原有的字段可能影響報表顯示

     ③如果是PULL模式下,可能某個表字段並沒有在報表上使用,導致數據爲空

12.關於阿泰寫的在水晶報表中實現任意選擇指定字段顯示-模板及C#升級版格式轉換問題

     http://topic.csdn.net/u/20091224/16/c97a5f55-f5d9-436c-ac8a-e05baec10ce6.html

     http://topic.csdn.net/u/20090310/22/77529b37-898e-45ba-a551-892e9056f289.html

 

13.以泰哥的在水晶報表中實現任意選擇指定字段顯示-模板及C#升級版爲指導思想,成功的實現了。
今天只更新了下數據庫表UriResultPrint,同時更新了下報表的數據庫專家的UriResultPrint,結果報錯了,
問題一:
        錯誤如下:
        給該函數的參數太多
        文件C:/DOCUMEN~1/ADMINI~1/LOCALS~1/Temp/temp_6b252588-6042-4558-a09c-74df3fefe87a
        {C9378C35-463A-4CF9-BBC4-15D445C92EE6}.rpt內出錯:
        公式 <uriResultField1>
        'totext({UriResultPrint.Rbc},'0')'
        給該函數的參數太多。
附:1.字段格式沒有任何變化,而且數據庫只是添加了稍許字段,也沒有用到報表上
    2.totext({UriResultPrint.Rbc},'0')還原成'totext({UriResultPrint.Rbc})後,就不報錯了。
    3.導入之前數據庫沒有改動的項目,'totext({UriResultPrint.Rbc},'0')'並沒有錯誤。

問題二 :
        公式格式發生錯誤了:
        例如:if {UriResultPrint.SingularRbc} = 0 Then 100.00
              Else {UriResultPrint.WhackRbc}*100/({UriResultPrint.WhackRbc}+{UriResultPrint.SingularRbc})
        這段公式之前的項目中沒有報錯,而且很運行得很正常

數據庫專家更新後則報錯:
                      1.“if {UriResultPrint.SingularRbc} = 0中0應爲字符型”
                      我改成“0”就可以了,怎麼之前沒有報錯呢
                      2.“{UriResultPrint.SingularRbc})”應該爲數字,日期。。
                      我將其轉換爲tonumber類型就OK了,怎麼之前沒有報錯呢

 

解決方法:導致公式'totext({UriResultPrint.Rbc},'0')報錯,
               因爲式'totext({UriResultPrint.Rbc},'0')中UriResultPrint.Rbc必須是INT類型的,
               而不是VARCHAR類型的,唉,真是粗心。。。。

 相關帖子:http://topic.csdn.net/u/20100302/18/3d89e86d-6e6e-4679-887c-aa7623a98ed1.html?10774

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章