Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Trang 1 của 3 123 CuốiCuối
Kết quả 1 đến 10 của 22
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    1,053

    Muốn làm Report có Record source động

    Mình có 12 bảng lương trong 12 tháng có cấu trúc giống nhau nhưng tên gọi được qui định là luong01, luong02, luong03...
    Thiết kế 1 form cho phép chọn tháng cần in bảg luong, nếu đồng ý in bảng lương, nó sẽ cho phép in bảng lương có dữ liệu nguồn là bảng lương tháng đang chọn.
    - Nếu tạo 12 report in 12 bảng trên thì không có gì phải bàn.
    - Còn nếu muốn chỉ tạo 1 report thôi, rồi thay đổi record source, liệu access có thực hiện được không?
    Rất cám ơn sự quan tâm thảo luận của các anh chị

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động

    Bạn đưa file Access của bạn đây, tui làm rồi gởi lại cho...Nhanh mờ...suyngamdi@gmail.com

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động




    Trích dẫn Gửi bởi thuydhpy
    Mình có 12 bảng lương trong 12 tháng có cấu trúc giống nhau nhưng tên gọi được qui định là luong01, luong02, luong03...
    Thiết kế 1 form cho phép chọn tháng cần in bảg luong, nếu đồng ý in bảng lương, nó sẽ cho phép in bảng lương có dữ liệu nguồn là bảng lương tháng đang chọn.
    - Nếu tạo 12 report in 12 bảng trên thì không có gì phải bàn.
    - Còn nếu muốn chỉ tạo 1 report thôi, rồi thay đổi record source, liệu access có thực hiện được không?
    Rất cám ơn sự quan tâm thảo luận của các anh chị
    Làm được nhưng bạn nói thế thì khó trả lời cho bạn. Up file lên để mọi người giúp cho.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động

    Có tài liệu riêng về combo box đây nhưng suynghidi hổng có quyền gửi đính kèm file. Để đưa lên Online Share rồi gửi link vậy

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    25
    Ðề: Muốn làm Report có Record source động

    Mình cũng không biết up file ở chỗ nào nữa

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động




    Trích dẫn Gửi bởi thuydhpy
    Mình cũng không biết up file ở chỗ nào nữa
    Cái này là do BQT Wsite cấp. tốt nhất bạn vào http://google.com bạn gõ "chia sẻ file online" để tìm bài hướng dẫn chi tiết. :cheers1:

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động

    Mình up file lên nè
    http://uploadcool.com/download.php?file=b1569688e576843d69b1bd6ca5c44384

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động

    Mình nghĩ bạn đã tạo được report bảng lương của 1 tháng rồi đúng không? Để report đấy có thể in được bảng lương cho cả 12 tháng thì đơn giản thôi. Bạn thực hiện như sau (Giả sử report bảng lương bạn đã tạo có tên là rpt_BangLuong):

    1. Bạn tạo một Query đặt tên là qry_BangLuong với câu lệnh SQL như sau: SELECT * FROM LUONG01;

    2. Mở rpt_BangLuong ở chế độ Design, đặt lại thuộc tính Record Souce là qry_BangLuong

    3. Tạo 1 form chọn điều kiện báo cáo có tên là frm_InBangLuong, trên form này gồm có các điều khiển:
    - 1 Combobox hoặc 1 text box để cho người sử dụng nhập tháng cần in bảng lương (bạn nên tạo bằng combobox vừa có thể nhập từ bàn phím hoặc có thể chọn từ danh sách từ 1 đến 12). Ở đây tôi giả sử sẽ tạo combobox có tên là cbo_Thang
    - 1 Command Button có tên là cmd_OK để in bảng lương và 1 Command Button cmd_Cancel để đóng form lại.

    Trong sự kiện On Click của Command cmd_OK bạn đánh các lệnh sau:

    Private Sub cmd_OK_Click()
    On Error GoTo loi
    Dim st, TenBang
    Dim db As Database, Qr As QueryDef
    TenBang = "LUONG" & trim(cbo_Thang)
    st = "SELECT * FROM " & TenBang & ";"
    Set db = CurrentDb
    Set Qr = db.QueryDefs("qry_BangLuong")
    Qr.SQL = st
    Qr.Close
    Set db = Nothing
    DoCmd.OpenReport "rpt_BangLuong", acViewPreview
    DoCmd.Maximize
    Exit Sub
    loi:
    Select Case Err.Number
    Case Else
    MsgBox "Lỗi: " & Err.Number & " - " & Err.Description
    End Select

    Để tiêu đề bảng lương thể hiện đúng bảng lương đang in, VD: bạn chọn tháng 03 thì sẽ hiện là: "BẢNG THANH TOÁN LƯƠNG THÁNG 03" thì bạn làm như sau:
    Giả sử tiêu đề trong rpt_BangLuong bạn tạo bằng 1 label có tên là lbl_TieuDe thì ở sự kiện Report_Open bạn thêm vào lệnh sau:
    lbl_TieuDe.Caption = "Bảng thanh toán lương thang " & forms("frm_InBangLuong")!cbo_Thang

    Lưu ý: khi nhập tháng từ 1-9 phải thêm số 0 vào trước (01-09) để chương trình xác đinh được đúng tên bảng bạn đặt.

    Nếu có trục trặc gì bạn vui lòng liên hệ tôi sẽ giúp bạn
    Chúc thành công!

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Muốn làm Report có Record source động




    Trích dẫn Gửi bởi dongnamnb
    Mình nghĩ bạn đã tạo được report bảng lương của 1 tháng rồi đúng không? Để report đấy có thể in được bảng lương cho cả 12 tháng thì đơn giản thôi. Bạn thực hiện như sau (Giả sử report bảng lương bạn đã tạo có tên là rpt_BangLuong):

    1. Bạn tạo một Query đặt tên là qry_BangLuong với câu lệnh SQL như sau: SELECT * FROM LUONG01;

    2. Mở rpt_BangLuong ở chế độ Design, đặt lại thuộc tính Record Souce là qry_BangLuong

    3. Tạo 1 form chọn điều kiện báo cáo có tên là frm_InBangLuong, trên form này gồm có các điều khiển:
    - 1 Combobox hoặc 1 text box để cho người sử dụng nhập tháng cần in bảng lương (bạn nên tạo bằng combobox vừa có thể nhập từ bàn phím hoặc có thể chọn từ danh sách từ 1 đến 12). Ở đây tôi giả sử sẽ tạo combobox có tên là cbo_Thang
    - 1 Command Button có tên là cmd_OK để in bảng lương và 1 Command Button cmd_Cancel để đóng form lại.

    Trong sự kiện On Click của Command cmd_OK bạn đánh các lệnh sau:

    Private Sub cmd_OK_Click()
    On Error GoTo loi
    Dim st, TenBang
    Dim db As Database, Qr As QueryDef
    TenBang = "LUONG" & trim(cbo_Thang)
    st = "SELECT * FROM " & TenBang & ";"
    Set db = CurrentDb
    Set Qr = db.QueryDefs("qry_BangLuong")
    Qr.SQL = st
    Qr.Close
    Set db = Nothing
    DoCmd.OpenReport "rpt_BangLuong", acViewPreview
    DoCmd.Maximize
    Exit Sub
    loi:
    Select Case Err.Number
    Case Else
    MsgBox "Lỗi: " & Err.Number & " - " & Err.Description
    End Select

    Để tiêu đề bảng lương thể hiện đúng bảng lương đang in, VD: bạn chọn tháng 03 thì sẽ hiện là: "BẢNG THANH TOÁN LƯƠNG THÁNG 03" thì bạn làm như sau:
    Giả sử tiêu đề trong rpt_BangLuong bạn tạo bằng 1 label có tên là lbl_TieuDe thì ở sự kiện Report_Open bạn thêm vào lệnh sau:
    lbl_TieuDe.Caption = "Bảng thanh toán lương thang " & forms("frm_InBangLuong")!cbo_Thang

    Lưu ý: khi nhập tháng từ 1-9 phải thêm số 0 vào trước (01-09) để chương trình xác đinh được đúng tên bảng bạn đặt.

    Nếu có trục trặc gì bạn vui lòng liên hệ tôi sẽ giúp bạn
    Chúc thành công!
    Ngoài cách này, bạn cũng có thể dùng cách sau: (không phải viết code VBA):
    1/ Như dongnamnb nói: Ta đã có form frm_InBangLuong, với combobox với name là cbo_Thang, Nguồn dữ liệu của Report In bảng lương rpt_bangLuong là qry_bangluong.
    2/ Ta cần lấy nguồn dữ liệu cho Combo box sổ xuống: Trong frm_inBangLuong, ở chế độ Design, chọn cbo_Thang, Mở property (Alt + Enter nó), bạn chuyển qua tab All, làm như sau:
    Control Source: Để trống
    Rowsource Type:
    Cách 1: Chọn Table/Query (Chọn cái này có tính năng động, rất hay...sẽ giải thích sau), Và mục Row source: bạn kích vào nút ba chấm để tạo Group query, với nguồn dữ liệu là table Lương, chỉ lấy 1 trường là THÁNG.
    cách 2: Chọn value list, Trong Row Source: gõ "Tháng 1"; "Tháng 2";...."Tháng 12". (chú ý gõ "Tháng xx" phải đúng hoàn toàn (font chữ, số ký tự..) với dữ liệu trong cột tháng của Table Lương).
    NHững thuộc tính khác để mặc định cũng được.
    3/ Trong qry_bangluong, cột tháng, dòng criteria, bạn gõ: "forms!frm_InBangLuong!cbo_thang"
    4/ chuyển frm_InBangLuong sang chế độ xem, chọn tháng cần in, bấm nút in sẽ cho bạn kết quả như ý (sau này làm những cái khác cũng tương tự).
    5/ Làm Theo dongnamnb phần này: "Để tiêu đề bảng lương thể hiện đúng bảng lương đang in, VD: bạn chọn tháng 03 thì sẽ hiện là: "BẢNG THANH TOÁN LƯƠNG THÁNG 03" thì bạn làm như sau:
    Giả sử tiêu đề trong rpt_BangLuong bạn tạo bằng 1 label có tên là lbl_TieuDe thì ở sự kiện Report_Open bạn thêm vào lệnh sau:
    lbl_TieuDe.Caption = "Bảng thanh toán lương thang " & forms("frm_InBangLuong")!cbo_Thang"


    Mình sẽ gửi cho bạn sớm tool mẫu để bạn dễ hiểu.
    Có gì chưa rõ bạn liên hệ với dongnamnb hay suynghidi nhé, chúng tôi sẽ hỗ trợ. chúc thành công:happy3:

    Link down phần mềm mình làm mẫu để thõa mãn nhu cầu của bạn nè: http://**************/forum/showthread.php?p=134933#post134933

    Note: nếu bạn ở Miền Trung mà đang làm việc ở Đà Nẵng thì gia nhập hội DanKetoan Miền Trung nhé: http://**************/forum/showthread.php?goto=newpost&t=78987
    :ibbanana::ibbanana::ibbanana:

  10. #10
    Ngày tham gia
    Apr 2016
    Bài viết
    64
    Ðề: Muốn làm Report có Record source động

    Tôi thấy các bạn làm cực quá, nên tôi góp một tay coi.
    Các bạn có 12 table lương có cấu trúc giống nhau, vậy là khoẻ rồi.
    Bây giờ các bạn cứ tạo một report dựa trên một table lương nào đó: luong01 chăng hạn.

    Ở form điều khiển, bạn chọn tháng bằng một combo tháng.
    Combo này có thuộc tính như sau:
    Name: cbothang
    Row Source type: Value
    Row Source: 1;2;3;4;5;6;7;8;9;10;11;12

    Một nút lệnh. Trong thủ tục sự kiện Click của nút lệnh này, bạn vào code như sau:

    On Error Resume Next
    DoCmd.OpenReport "tên report",acViewNormal, , , , cbothang
    On Error Goto 0


    Ở report, bạn sẽ làm một số công việc sau:
    Ở design view, bạn cho một textbox ẩn, có tên là thang
    Một text box khác chứa tiêu đề, control source của nó là:
    ="BẢNG LƯƠNG THÁNG " & thang
    Vào thủ tục nè:

    Private Sub Report_NoData (Cancel As Integer)
    MsgBox "khong co du lieu de in"
    Cancel = True
    End Sub


    Private Sub Report_Open(Cancel As Integer)
    thang = RIGHT("0" & OpenArgs, 2)
    RecordSource = "SELECT * FROM LUONG" & thang
    Requery
    End Sub

    Xong rồi đó.
    :thumbup:

 

 
Trang 1 của 3 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •