• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Hướng dẫn về truyền tham số Data Report trong VB6

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 813
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Hướng dẫn về truyền tham số Data Report trong VB6

Gửi bàigửi bởi hoangthu1974 » T.Sáu 24/04/2009 9:50 am

Tên bài viết: Truyền tham số cho Data Report trong VB6
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:

Mã: Chọn hết

  1. If DE.rsCmdGroup1.State = adStateOpen Then DE.rsCmdGroup1.Close 'Đóng cái Recordset lại
  2. 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ế
  3. DE.Commands("CmdGroup1").Parameters("DENNGAY").Value = Format(Now, "MM/dd/yyyy") 'ngày hiện tại - ví dụ thế
  4. DE.Commands("CmdGroup1").Execute
  5. 'Hoặc bạn có thể viết như thế này:
  6. 'DE.CmdGroup1 Format(Now - 15, "MM/dd/yyyy"), Format(Now, "MM/dd/yyyy")
  7. DR.Show 'Hiện báo cáo



hoangtucodon205
Bài viết: 5
Ngày tham gia: T.Hai 01/04/2013 11:50 am

Re: Hướng dẫn về truyền tham số Data Report trong VB6

Gửi bàigửi bởi hoangtucodon205 » T.Hai 01/04/2013 1:14 pm

mình đã làm được với csdl là access nhưng với sql 2005 thi không được bạn ah, bạn có thể chỉ cách cho mình được không

tmmtzzlove
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 57
Ngày tham gia: CN 04/12/2011 3:40 pm
Đến từ: Quảng Ngãi
Has thanked: 1 time
Been thanked: 6 time
Liên hệ:

Re: Hướng dẫn về truyền tham số Data Report trong VB6

Gửi bàigửi bởi tmmtzzlove » T.Tư 08/05/2013 8:25 pm

ví dụ chọn mã gì đó trong datareport thì làm thế nào vậy bạn :)


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách