1 – Lỗi in trực tiếp Report trên form
================================================================================
1.1 – Failed to load database information.
Error in File rptInvoice {6A24503F-DEA3-44A3-9913-35800DAEA39C}.rpt:
Failed to load database information.
=> Nguyên nhân : Do crystal report thiết kế trên .NET Framework 2.0
tuy nhiên chương trình chạy trên VS2010(.Net 4.0) nên không tương thích
=> Cách khắc phục : Thêm addtribute “useLegacyV2RuntimeActivationPolicy”
trong file App.Config trong tab “Starup”
<startup>
<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.0″ />
<supportedRuntime version=”v1.1″/>
<startup>
——————————————————————————–
1.2 – The table %1 does not exist in the document.
=> Nguyên nhân : Do chưa login thành công vào server (lỗi 1.1) nên chưa thấy
được metadata của table vì vậy truy xuất vào một trong những table bên trong sẽ
bị lỗi.
=> Cách khắc phục : Xem lỗi (1.1)
——————————————————————————–
1.3 – Lỗi show report lên trắng hoặc không có gì thể hiện
=> Nguyên nhân :
– Do report gọi từ store, table không chứa dữ liệu.
– Do Report document không thiết lập được parameter values vào store.
=> Cách khắc phục :
– Cách thiết lập report parameter cũ của report document chập chờn
– Thiết lập theo cách mới :
Dim obj As New ParameterDiscreteValue
obj.Value = “XXX”
Dim objParameterField = crViewer.ParameterFieldInfo(“@pstrXXX”)
objParameterField.CurrentValues.Add(obj)
sửa được 1 lỗi view report không có data -> ra report trắng
Trường hợp report có sourceData là store:
Nếu store này có kết quả trả về bằng cách thực thi 1
exec thì sẽ bị lỗi trên VS2010 là không có data
Khắc phục: insert kết quả vào bảng tạm (#table) rồi
Select * from #table này thì ok, report lên data bình thường,
2 – Lỗi in trên report dialog
================================================================================
2.1 – Lỗi Invalid Index khi show report
=> Nguyên nhân : Do thư viện gán PrintOptions.PaperSize = mintPageIdty,
mà Papersize là enum có giá trị trong Range
= > Cách khắc phục :
——————————————————————————–
2.2 – Failed to load database information.
=> Nguyên nhân : Do không apply và verify login information vào connection
của report document
=> Cách khắc phục : Đối với từng connection của report document, phải gián
thông tin login và verify database trước khi gán vào cho từng table.
——————————————————————————–
2.3 – File or assembly name crystaldescistion.shared or one of its dependencies
………not found
=> Chép các file dependency này vào thư mục thực thi của chương trình
3 – Lỗi khác lúc runtime
================================================================================
3.1 – ReportDocument
=> Lỗi : COM object that has been separated from its underlying RCW cannot
be used
=> Nguyên nhân : Lỗi COM
=> Cách khắc phục :
– Phải đóng Report Document trước khi mở cái mới
– Đóng form trong form main
Private Sub frmMain_FormClosing(sender As System.Object, e As System.
Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
For i As Integer = Application.OpenForms.Count – 1 To 0 Step -1
If Application.OpenForms(i).Name <> Me.Name Then
Application.OpenForms(i).Close()
End If
Next
End Sub
3.2 – Error in formula
——————————————————————————–
=> Lỗi :
This field name is not known.
Details: errorKind
Error in File XXXX_cc {1793C34D-519B-42B0-A240-AAA5648A154E}.rpt:
Error in formula vMainCode:
” ‘ + {.MainCode}’
This field name is not known.
Details: errorKind
=> Nguyên nhân :
=> Cách khắc phục :
không set được khổ giấy phiếu thu,hóa đơn
3.4 – Lỗi khi show report với nhiều table
——————————————————————————–
=> Chi tiết lỗi :
Logon failed.
Error in File XXX {9BF6BA9E-40DE-4AAB-847F-ED1163D04678}.rpt:
Unable to connect: incorrect log on parameters.
=> Test report : RPRTASSET
=> Test : User 015674, báo biểu/tài sản/tài sản
– File name : XXX.rpt
=> Cách khắc phục : bỏ chế độ “Intergrated Security” trong report location
xem hình : 2012-09-24_143715.png
3.5 – Operation illegal on linked parameter
——————————————————————————–
Error in File rpt_spsplrimportreport {F7F90E54-D6B9-42D4-AB99-9EECD8838B0E}.rpt:
Operation illegal on linked parameter.
3.7 – UFL ‘u25idautomation.dll’ that implements this function is missing.
——————————————————————————–
UFL ‘u25idautomation.dll’ that implements this function is missing.
=> Nguyên nhân : Khi sử dụng crystal report có barcode, thì có sử dụng thư viện UFL (User Function
Libraries) những thư viện này hỗ trợ dịch barcode fonts.
=> Cách khắc phục :
– Cài đặt thư viện này
– Hoạc không dùng thư viện mà dùng fornular.
3.8 – Lỗi khi chạy trên Windows 64bit
——————————————————————————–
An error has occurred while attempting to load the Crystal Reports runtime.
Either the Crystal Reports registry key permissions are insufficient or the Crystal Reports runtime
is not installed correctly.
Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) that contains
the version of the Crystal Reports runtime (x86, x64, or Itanium) that is required.
Please go to http://www.businessobjects.com/support for more information.
=> Nguyên nhân : Crystal report chưa hỗ trợ Windows 64bit
=> Cách khắc phục :
– Sửa compiler option thành Windows X86
4. Lỗi trang cuối hiển thị header mặc dù không có dữ liệu:
Put this formula in a suppressed field in the detail section:
WhilePrintingRecords;
Global BooleanVar finished;
finished := OnLastRecord
And make this the Suppress formula in the page header:
Global BooleanVar finished
- Before
finished
is initialized the page header will show. - Once you print a detail record it'll be set to
false
. - When you finally reach the last detail section,
finished
is set to true
. - If you happen to reach another page header,
finished
is still true
, and Crystal will suppress the header.
It's an interesting problem. I've encountered this behavior before but never tried to solve it. I think you need to use a variable because in a page header, the usual options like Next()
and OnLastRecord
can't distinguish between having one more record to print and having no more records to print. I think running totals would have the same problem – the values would be the same on a page with one more record to print, and on a page with no records to print.