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ế.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Nov 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    16
    Ðề: Bắt sự kiện Report được in ra máy in?




    Trích dẫn Gửi bởi dongnamnb
    Tôi muốn một bắt được sự kiện 1 Report được in ra máy in nhưng chưa có cách nào để phân biệt report được in ra máy in hay Print Preview? Mong cả nhà giúp đỡ!
    Muốn xem trên màn hình : DoCmd.OpenReport "rptPhieuThu", acViewPreview
    Muốn in ra máy in : DoCmd.OpenReport "rptPhieuThu"
    Trong đó rptPhieuThu là tên Report muốn in hay xem
    Thân

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Bắt sự kiện Report được in ra máy in?

    Cảm ơn xuanthanh nhiều!
    Ý mình muốn hỏi là làm sao để xác định khi nào thì người sử dụng in ra máy in kể cả qua Preview hay không qua Preview? Nếu dùng lênh như xuanthanh thì xác đinh đc rồi nhưng nếu người dùng in khi đang Preview thì làm sao để bắt được sự kiện này?

    Mình đang thiết kế 1 report đặc biệt chỉ cho phép người sử dụng in ra máy in 1 lần duy nhất còn Preview thì thoải mái.

  4. #4
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    Re: Ðề: Bắt sự kiện Report được in ra máy in?

    Về việc bắt sao cho có thể biết là in ra giấy hay preview thì khá phức tạp.
    Trong phạm vi có thể có của Access, để ai cũng có thể làm được, tôi đề xuất với bác một vài giải pháp nhé:
    Giải pháp 1:
    Trong Tools - *******, bác tắt cái Allows Default Shortcut Menus.
    Desgin riêng một cái toolbar cho Print Preview, trong đó không có nút Print. Sau đó trong report, bác gán thuộc tính ToolBar của report với cái toolbar này.
    Giải pháp 2:
    Trong report, bác cho một cái text Text1- ví dụ: "Không có giá trị phát hành"
    Trong code gọi lệnh in thì bác có thể code đại khái như sau:
    If luachon = "In ra giấy" Then
    DoCmd.OpenReport "ReportName", acViewNormal, , , , "In"
    Else
    DoCmd.OpenReport "ReportName", acViewPreview, , , , "Xem"
    End If
    Trong Report, bác code cho cái Report_Open:
    Text1.Visible = Not (OpenArgs = "In")
    Với giải pháp 2 thì khi in bằng việc chọn Print trong Print Preview, sẽ kèm theo một chuỗi "Không có giá trị phát hành", như vậy nó sẽ không hợp lệ, đúng không.
    Có thể có cách khác "siu" hơn, nhưng chịu, chỉ đến mức này thôi.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Bắt sự kiện Report được in ra máy in?

    Một giải pháp khác : Thiết kế form frmMeNu để đìều khiển tất cả các hoạt động của chưng trình ( nếu không muốn làm cái ToolBar như của phatnq2002). Trong form đó có núlt lệnh để in Report, tạo một OptionGroup, gồm hai option là Print và Preview, một TextBox txtSo, gán giá trị của txtSo sao cho mỗi khi chọn option Print thì giá trị của nó tăng lên 1 (cái txtSo có giá trị ban đầu = 0). Và như thế khi viết code cho nút lệnh, nếu chọn option Preview thì vô tư, khi chọn option Print thì nếu txtSo=1 thì cho lệnh in, nếu, txtSo>1 thì cấm in.
    Giải pháp này chắc là được
    Nếu dùng ToolBar thì cũng tương tự thế thôi
    Thân

  6. #6
    Ngày tham gia
    Feb 2016
    Bài viết
    0
    Ðề: Bắt sự kiện Report được in ra máy in?

    Ý tưởng của bác phatnq2002 tôi cũng đã thử nhưng chưa triệt để vì người dùng vẫn có thể ấn tổ hợp phím Ctrl + P để in như thường. Tôi luôn muốn mọi cái phải thật triệt để khi viết phần mềm. Mong nhận đc các giải pháp tốt hơn từ DKT!

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Bắt sự kiện Report được in ra máy in?




    Trích dẫn Gửi bởi dongnamnb
    Ý tưởng của bác phatnq2002 tôi cũng đã thử nhưng chưa triệt để vì người dùng vẫn có thể ấn tổ hợp phím Ctrl + P để in như thường. Tôi luôn muốn mọi cái phải thật triệt để khi viết phần mềm. Mong nhận đc các giải pháp tốt hơn từ DKT!
    Khi Report chua mở thì bạn in cái gì?

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Re: Ðề: Bắt sự kiện Report được in ra máy in?




    Trích dẫn Gửi bởi dongnamnb
    Ý tưởng của bác phatnq2002 tôi cũng đã thử nhưng chưa triệt để vì người dùng vẫn có thể ấn tổ hợp phím Ctrl + P để in như thường. Tôi luôn muốn mọi cái phải thật triệt để khi viết phần mềm. Mong nhận đc các giải pháp tốt hơn từ DKT!
    Dựa theo Ý tưởng thứ 2 của anh Phatnq2002, mình thiết kế thêm trong table lưu report của bạn 1 ô tên là Isprint kiểu yes/no.
    Trong form, ô này bị lock lại và được check Yes khi in bản chính thức!



    Trong report, mình tạo 1 label11 với nội dung sau: "Bản Chỉ để xem không có giá trị phát hành". Và cho thuộc tính Visible= false
    Xử lý nút nhấn như sau:


    Mã:
    Private Sub cmdReview_Click()    
        DoCmd.OpenReport "Table1", acPreview
    Reports![Table1]![Label11].Visible = True
        
    End Sub
    ''''''''''''''
    Private Sub cmdPrint_Click()
    
    If Isprint Then
      MsgBox " Da in roi, khong in duoc nua"
     Else    
        DoCmd.OpenReport "Table1", acNormal    
        Isprint.Value = True
       Me.Repaint
    End If
        
    End Sub
    Demo DownLoad

 

 

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
  •