PDA

View Full Version : Cứu CrystalReport!!!!



nguyen_lanthao
23-06-2003, 15:31
Crystal report có hỗ trợ việc kết nối với source bằng dataset. Mình có lập một dataset chứa một datatable được tạo bằng tay như sau

Private Sub FillDataset(ByVal mydataset As DataSet)
Dim myconn As SqlConnection
Dim Customers(,) As String = {{"123", "Jonh"}, {"456", "Rachel"}}
Dim myDatatable As DataTable = New DataTable("DataTable")
Dim myDataRow As DataRow
Dim myDataColumn As DataColumn

myDataColumn = New DataColumn()
myDataColumn.DataType = System.Type.GetType("System.String")
myDataColumn.ColumnName = "CustomerID"
myDatatable.Columns.Add(myDataColumn)

myDataColumn = New DataColumn()
myDataColumn.DataType = System.Type.GetType("System.String")
myDataColumn.ColumnName = "LastName"
myDatatable.Columns.Add(myDataColumn)

mydataset.Tables.Add(myDatatable)

Dim i As Integer
For i = 0 To 1
myDataRow = myDatatable.NewRow()
myDataRow(0) = Customers(i, 0)
myDataRow(1) = Customers(i, 1)
myDatatable.Rows.Add(myDataRow)
Next

End Sub

Theo nguyên tắc thì khi gắn dataset này làm source của report như:
Dim myreport As New myRptDataset()
myreport.SetDataSource(mydataset)
Me.CrystalReportViewer1.ReportSource = myreport

thì report phải hiển thị mydatatable ra, nhưng mà khi chạy thì lại là một blankreport. Những tên field trong mydatatable do mình tự đặt và không có trong bất kỳ một datatable nào nên khi chọn dạng report mình chọn là blank. Vậy xin hỏi là tại sao? và làm sao cho nó hiện mytable này ra??
Cám ơn

hoaianh
23-06-2003, 19:52
Ban oi co 3 cach de thuc hien Crystal Report
1. manually(la dung nhu ban ghi do)
2. Using Standard Report Expert
3. From an existing

Ban nen chon cach 2 va 3 nghen . Chuc ban thanh cong

Have a good time !

nguyen_lanthao
23-06-2003, 23:31
standand report expert chỉ dùng khi ta có table tạo sẵn trong database.
from existing report thì cũng tương tự như vậy thôi.
Mình muốn tạo một table tạm thôi, từ table này mới phân phối vào các table khác trong database và report sẽ hiển thị table tạm này. bởi vì khi dùng table có sẵn trong database thì nó sẽ bị đụng và không thể hiển thị dự lliệu.
Nhưng mà mình đã tìm ra chỗ sai rồi, đó là phải tạo một file dataset để chứa cấu trúc XML của table tạm này thì OK
Thanks for your anwser
regards

itmc
26-06-2003, 07:36
Đúng vậy, file report của ta phải có khung có sường cái đã, chứ làm sao mà nó hiển thị dữ liệu cho đúng được. Hiển thị ở phần đầu trang hay là phần chi tiết??? Theo lý thuyết thì ta cũng có thể làm được điều đó, nhờ vào các thư viện của CR, nhưng mình nghĩ chưa có ai đủ sức làm điều này. Từ cấu trúc của file dataset thì ta tao report như cách bình thường thôi, chỉ khác một điều là nguồn lấy từ cấu trúc table trong file ds
Chúc thành công!

huy1980
01-07-2003, 23:00
cac ban neu co ma nguon thi post len cho minh duoc khong,minh cam on nhieu.

nguyen_lanthao
03-07-2003, 19:31
cac ban neu co ma nguon thi post len cho minh duoc khong,minh cam on nhieu.
mình làm nó trong một bài làm nên không biết phải cắt từ đâu để gởi cho bạn. Nhưng phần quan trọng của việc chuyển cấu trúc của table tự tạo sang file .ds chỉ có một hàm thôi.
'************************************************* *****************************************
Public Sub createXMLFile(ByVal XmlFileName As String, ByVal XmlDataset As DataSet)

Dim XmlFile As System.IO.FileStream
Dim XmlFileStream As New System.IO.FileStream(XmlFileName, System.IO.FileMode.Create)
Dim XmlOutput As New System.Xml.XmlTextWriter(XmlFileStream, System.Text.Encoding.Unicode)
XmlDataset.WriteXmlSchema(XmlOutput)

End Sub

'************************************************* *****************************************
để tạo file .ds từ table nào thì bạn chỉ cần dùng câu lệnh:
createXMLFile("aaa.ds", mydataset)
Chạy câu lệnh này lần đầu để tạo file ds, sau đó bạn có thể che nó lại.
Sau đó connect với report bình thường, và chọn phần source trong wizard report expert là item cuối trong list các dạng conn
regards

huy1980
05-07-2003, 19:21
cam on da goi chuong trinh tro minh. Cho minh hoi mot cau khi khai bao duong dan toi file xsd la duong dan tinh vay neu xoa file do hay chuyen project di thu muc khac thi co anh huong den project cua minh khong.

nguyen_lanthao
06-07-2003, 20:51
khi khai báo đường dẫn bạn có thể khai báo theo kiểu này:
tạo 1 fonder trong project: td là A
tạo file .ds trong fonder A
chỉ nó đến bằng cách:"../A/aa.ds"
nếu không ra thì đổi lại dâu chéo theo chiều ngược lại (tại vì mình không nhơ rõ nó chiều nào)
regards

anhhong2008
10-04-2008, 09:55
ban nguyen_lanthao co the co minh source tren khong
email:khanhnhnn@yahoo.com.vn