• Tự động thiết lập máy in cho Report ?
  • 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 StringstrType 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 strTenReportacViewNormal
        
        
    '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.NumberErr.DescriptionstrName"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ã:
    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
    Mình sẽ test code của bạn thử. Thanks bạn.
    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, 11:18 AM

    (13-10-19, 09:51 PM)ongke0711 Đã viết: Bạn thử kiểu này
    ...
    Tiên đã test code của bạn vẫn ko đáp ứng được. Khi thay đổi máy in thì report ko hiển thị theo máy in thay đổi.
    Thân./.
  • 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:
    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
    Thanks ACE cả nhà đã giúp !
    Thân./.