Tác giả: hoangthu1974
Cấp độ bài viết: Chưa xác định
Tóm tắt: Truyền tham số cho DECommand để tạo Data Report trong VB6
Sau khi nhận được một vài cái project của người quen nhờ góp ý, giúp đỡ. Tôi nhận thấy đa số mọi người đều gặp phải vấn đề mà các thầy cô hình như chưa làm được hay sao ý và bắt học trò phải làm (dù chưa được học).
Sau đây, tôi xin trình bày việc truyền một tham số cho DECommand để tạo Report động:
Đầu tiên, bạn tạo một cái Data Environment
Add lên đó một cái Connection (Of course)
Sau đó, tạo một cái Command thứ nhất đặt tên là CmdGroup1 với GROUP BY hoặc HAVING --> việc của Command này là để tạo group, nếu không tạo group thì không cần GROUP BY hoặc HAVING.
Trong này, giả sử như tôi muốn giới hạn thời gian lấy báo cáo trong khoảng ngày TUNGAY và DENNGAY tôi sẽ có câu SQL cho nó là:
Lưu ý, Field1 là Date
Nhấn chuột phải vào CmdGroup1 và chọn Properties, trong thẻ đầu tiên, chọn SQL Statement, nhập vào:
SELECT Field1, SUM(Field2) AS SF2, SUM(Field3) AS SF3, SUM(Field4) AS SF4 FROM Table1 WHERE Field1 >= @TUNGAY AND Field1 <= @DENNGAY GROUP BY Field1
Chuyển qua thẻ thứ hai: Parameters
Ở đây, trong danh mục Parameters tự động xuất hiện TUNGAY và DENNGAY
Đặt thông số Data Type và Host Data Type là Date (phù hợp với trường Date - of course)
Required đặt là True
Trong báo cáo, sẽ lấy Field1 của CmdGroup1 trong Group Header (Section 6)
Các SF2, SF3, SF4 đặt ở Group Header hay Footer đều được cả.
Phần thân chính của báo cáo.
Nhấn chuột phải vào CmdGroup1, chọn Add Child Command. Command này bạn làm như bình thường, chỉ khác là vào thẻ Relation, nối cái Field1 vào cái trường mà sẽ làm khóa chính để group (tương xứng kiểu dữ liệu). Các dữ liệu trong Command này sẽ ở phần Section1 (Report Detail).
Xong cái DE Command và bây giờ, trước khi gọi báo cáo hiển thị, bạn thêm đoạn code sau:
Code: Select all
- If DE.rsCmdGroup1.State = adStateOpen Then DE.rsCmdGroup1.Close 'Đóng cái Recordset lại
- DE.Commands("CmdGroup1").Parameters("TUNGAY").Value = Format(Now - 15, "MM/dd/yyyy") 'lùi 15 ngày so với ngày hiện tại - ví dụ thế
- DE.Commands("CmdGroup1").Parameters("DENNGAY").Value = Format(Now, "MM/dd/yyyy") 'ngày hiện tại - ví dụ thế
- DE.Commands("CmdGroup1").Execute
- 'Hoặc bạn có thể viết như thế này:
- 'DE.CmdGroup1 Format(Now - 15, "MM/dd/yyyy"), Format(Now, "MM/dd/yyyy")
- DR.Show 'Hiện báo cáo