-
RE: Tự động thiết lập máy in cho Report ?
ongke0711 > 13-10-19, 09:51 PM
Bạn thử kiểu này.
Mã PHP:Function XemInReport2(strTenReport As String, strType As String)
On Error GoTo HandleError
Dim DefaultPrinter As String
Dim ReportPrinter As String
Dim prt As Access.Printer
Dim strTenMayIn As String
strTenMayIn = Nz(DLookup("TenMayIn", strTableName, "TenReport='" & strTenReport & "'"), "")
If strTenMayIn = "" Then
strText = strTenReport & " na2y chu7a d9u7o75c thie61t la65p Ma1y In: " & strTenMayIn
MsgBox ftxt(strText, "Vni"), vbCritical + vbOKOnly
Exit Function
End If
'==========='
If TonTai_MayIn(strTenMayIn) = False Then Exit Function
DefaultPrinter = Application.Printer.DeviceName
ReportPrinter = strTenMayIn
If ReportPrinter <> DefaultPrinter Then
For Each prt In Application.Printers
If prt.DeviceName = ReportPrinter Then
Set Application.Printer = prt
Exit For
End If
Next prt
End If
DoCmd.OpenReport strTenReport, acViewNormal
'Tra lai hien trang default printer cho PC'
If ReportPrinter <> DefaultPrinter Then
Set Application.Printer = Application.Printers(DefaultPrinter)
End If
Exit Function
HandleError:
MsgError Err.Number, Err.Description, strName, "XemInReport"
Exit Function
End Function -
RE: Tự động thiết lập máy in cho Report ?
DooHoaangPhuuc > 13-10-19, 10:14 PM
Cháu cũng bị trường hợp tương tự nhưng dối với accdb
Mặc dù chọn máy in mặc định Default trong "Devices and Printers" nhưng khi mở in thì vẫn nhận in máy in cũ, phải chọn lại máy in đang đặt chế độ Default , cũng như lề, trang in.
Sau mỗi report điều chỉnh và in phải Save lại ngay để chương trình nhớ máy in chọn.
Thực hiện tương tự cho toàn bộ reports cần in .
Về sau khi mở chương trình chỉ cần định máy in cần ở chế độ Default là in được.
Nhân đây Cháu cũng xin hỏi, ở máy Laptop của cháu. Trước kia, khi mở Table, Query hay Report và Tab "Extenal Data" và xuất ra với định dạng "Export Data with formating and layout" thì dữ liệu xuất ra file Excel tương tự cấu trúc của Table, Query (chiều rộng cột các fields như định trong Table, Query). Nhưng dạo này khi xuất như vậy, các cột có dữ liệu đều có chiều rộng = 0. Như ở dạng chọn "Hide" toàn bộ các cột fields này trong Excel.
Qua máy khác thì không gặp trường hợp này.
Nhờ Các Bác, các Chú nếu biết giúp cháu giải quyết.
Cháu xin cảm ơn trước.
DooHoaangPhuuc -
RE: Tự động thiết lập máy in cho Report ?
Minh Tiên > 14-10-19, 09:59 AM
(13-10-19, 09:34 PM)ongke0711 Đã viết: Cái hàm TonTaiMayIN code như thế nào bạn?
Thay vì Set printer cho report thì Set Default Printer cho nguyên ứng dụng Access luôn thử.
Đây bạn:
Mình sẽ test code của bạn thử. Thanks bạn.Mã:Function TonTai_MayIn(strTenMayIn As String) As Boolean
On Error GoTo HandleError
Dim prt As Printer
For Each prt In Printers
If prt.DeviceName = strTenMayIn Then
TonTai_MayIn = True
Exit Function
End If
Next prt
MsgBox ftxt("Ma1y In: [" & strTenMayIn & "] kho6ng co1 hoa85c chu7a ke61t no61i vo71i PC !", "Vni"), _
vbCritical + vbOKOnly
Exit Function
HandleError:
MsgError Err.Number, Err.Description, strName, "TonTai_MayIn"
Exit Function
End Function
Thân./. -
RE: Tự động thiết lập máy in cho Report ?
ongke0711 > 14-10-19, 10:57 AM
(13-10-19, 10:14 PM)DooHoaangPhuuc Đã viết: Nhân đây Cháu cũng xin hỏi, ở máy Laptop của cháu. Trước kia, khi mở Table, Query hay Report và Tab "Extenal Data" và xuất ra với định dạng "Export Data with formating and layout" thì dữ liệu xuất ra file Excel tương tự cấu trúc của Table, Query (chiều rộng cột các fields như định trong Table, Query). Nhưng dạo này khi xuất như vậy, các cột có dữ liệu đều có chiều rộng = 0. Như ở dạng chọn "Hide" toàn bộ các cột fields này trong Excel.
Qua máy khác thì không gặp trường hợp này.
Bạn xem lại tham số khi Export: có tuỳ chọn "Export data with formatting...."
Nếu table có cột nào "Hide" thì có thể nó Hide luôn toàn bộ các cột bên Excel.
Nếu không phải bị vụ này thì là do lỗi Access. Cài lại thôi. Tôi cũng hay bị nhưng cái lỗi linh tinh không nghĩ tới. -
RE: Tự động thiết lập máy in cho Report ?
Minh Tiên > 15-10-19, 04:47 PM
Tiên đã làm được rồi.
Mở Report dạng acViewPreview - hide trước => sau đó đổi máy In => Thiết lập Report theo máy In mới => Hiển thị lại
Code:
Thanks ACE cả nhà đã giúp !Mã:...
DoCmd.OpenReport strTenReport, acViewPreview, , , acHidden
Set prt = Application.Printer
Application.Printer = Application.Printers(strTenMayIn)
Set rpt = Reports(strTenReport)
Set rpt.Printer = Application.Printers(strTenMayIn)
With rpt.Printer
'Thiết lập loại giấy, lề trang, ...
End With
DoCmd.OpenReport strTenReport, acViewNormal '(Để in hoặc acViewPreview để xem)
Set Application.Printer = prt 'Trả về Default Printer
Thân./.