Minh Tiên > 13-10-19, 02:16 PM
tranthanhan1962 > 13-10-19, 02:58 PM
Minh Tiên > 13-10-19, 03:49 PM
(13-10-19, 02:58 PM)tranthanhan1962 Đã viết: ... Tuy nhiên người sử dụng vẫn có thể xử lý bằng cách vào page setup để chỉnh sửa, canh lề... trước khi in. Tuy nhiền, sau khi đóng report lại, nó sẽ trả về thông số thiết kế của tác giả, Bạn có thể tạo menu chuột phải có mục page setup (trong trường hợp tắt menu chuột phải của tập tin accde). Nếu không khi thiết kế phải tính toán thật kỹ, trừ hao lề ít nhất +1 cm, vì những máy in cũ khả năng bị lệch lề rất cao
mrsiro > 13-10-19, 04:19 PM
tranthanhan1962 > 13-10-19, 05:59 PM
(13-10-19, 03:49 PM)Minh Tiên Đã viết: Có nghĩa ko có cách nào tự động set Printer, lề in, máy in cho Report trong accde được ? Nếu thiết kế thủ công (Gọi Page Setup) mỗi khi mở Report dạng Defaut rồi chọn Printer, chỉnh trang in, ... thì sẽ rất vất vã vì có nhiều report, mỗi report theo 1 kiểu máy in riêng (Như In vã vạch trên máy Godex, In mã vạch trên máy Canon, In phiếu trên máy PRP , In phiếu trên máy Canon, ...Vấn đề là bạn không thể thiết kế lại trong đó có việc canh lề của report còn nếu đã xử lý OK cho từng report với từng máy in thì thêm menu chuột phải <Printer>, report nào in với máy in nào thì cứ chọn máy in đó, mà cái này nếu lười thì cũng không cần là menu chuột phải cho mất công, chỉ cần Nhấn Ctrl+P chọn máy in của nó nó tự xử lý lại đúng như thiết kế. Ví dụ: bạn có 2 loại report 1 A4 cho máy in lazer (là máy in mặt định của windows luôn), 1 A3 in trên máy in kim (máy lazer không có khổ A3. Bình thường bạn sẽ in report A4 với máy lazer, khi mở report A3 tất nhiên report sẽ bị lọt lề (vì mặt định là máy in laze A4). Bạn chỉ cần bấm Ctrl + P rồi chọn lại printer Name <Tên máy in kim A3> màn hình sẽ giật một cái và hiện lại report với khổ giấy A3, Bạn chỉ cần OK là nó sẽ in với máy in kim A3. Cái này dùng để xử lý mấy phần mềm kế toán có in hóa đơn liên tục bố trí riêng với máy in kim 3 liên có khổ bất kỳ, còn những report báo cáo khác in bằng máy in lazer A4. Còn nếu muốn xử lý khi mở report nó chọn luôn máy in bạn có thể nghiên cứu cái này.
Tiên nghỉ, khi khi mở Report với Máy in Default rồi gọi Page Setup để điều chỉnh chọn Máy in, canh lề trang bằng thủ công được thì cũng có cách mở Report dạng hide với Printer Default sau đó dùng code chạy ngầm gọi Page Setup, set lề, ... => hiển thị lại được (Ko biết cách nghỉ này có đúng ko).
Nhờ các ACE Pro chỉ dẫn thêm. Cảm ơn nhiều !
Minh Tiên > 13-10-19, 06:07 PM
(13-10-19, 04:19 PM)mrsiro Đã viết: sau lần đầu chọn máy in thì bạn lưu vào table 1 cột là tên report, 1 cột là tên máy in, sau này khi mở report thì quét tên máy in tương ứng là ok.Hiện mình đã sử dụng 1 table + 1 Form để thiết lập máy in cho các Report.
ongke0711 > 13-10-19, 06:28 PM
Minh Tiên > 13-10-19, 08:51 PM
(13-10-19, 06:28 PM)ongke0711 Đã viết: Bạn có thử đổi Application.default printer cho report khi nó Open không? Set defaul printer thì không cần vô Design.Tiên cũng đã thử nhưng nó ko qua máy khác bạn, chỉ hiện theo máy Default cũ, cái máy Default mới ko hiện thị nếu ko vào Design View, chỉ chọn thủ công mới đc.
Minh Tiên > 13-10-19, 09:21 PM
Function XemInReport(strTenReport As String, strType As String)
On Error GoTo HandleError
Dim prt As Printer
Dim rpt As Report
Dim strTenMayIn As String
Dim strKieuGiay As String
Dim strKichthuocGiay As String
Dim lngLeTrai As Long
Dim lngLePhai As Long
Dim lngLeTren As Long
Dim lngLeDuoi As Long
strTenMayIn = Nz(DLookup("TenMayIn", strTableName, "TenReport='" & strTenReport & "'"), "")
strKieuGiay = Nz(DLookup("KieuGiay", strTableName, "TenReport='" & strTenReport & "'"), "")
strKichthuocGiay = Nz(DLookup("KichthuocGiay ", strTableName, "TenReport='" & strTenReport & "'"), "")
lngLeTrai = Nz(DLookup("LeTrai", strTableName, "TenReport='" & strTenReport & "'"), 0)
lngLePhai = Nz(DLookup("LePhai", strTableName, "TenReport='" & strTenReport & "'"), 0)
lngLeTren = Nz(DLookup("LeTren", strTableName, "TenReport='" & strTenReport & "'"), 0)
lngLeDuoi = Nz(DLookup("LeDuoi", strTableName, "TenReport='" & strTenReport & "'"), 0)
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
DoCmd.OpenReport strTenReport, acViewDesign, , , acHidden
Set rpt = Reports(strTenReport)
Set rpt.Printer = Application.Printers(strTenMayIn)
With rpt.Printer
'Kieu giay:
.Orientation = strKieuGiay
'Loai giay:
.PaperSize = strKichthuocGiay
.PaperBin = acPRBNAuto
'Kich thuoc le trang:
.LeftMargin = lngLeTrai
.RightMargin = lngLePhai
.TopMargin = lngLeTren
.BottomMargin = lngLeDuoi
End With
DoCmd.Save acReport, strTenReport
If strType = "Xem" Then
DoCmd.OpenReport strTenReport, acViewPreview, , , acWindowNormal
ElseIf strType = "In" Then
DoCmd.OpenReport strTenReport, acViewNormal, , , acWindowNormal
DoCmd.Close acReport, strTenReport
End If
Exit Function
HandleError:
MsgError Err.Number, Err.Description, strName, "XemInReport"
Exit Function
End Function
ongke0711 > 13-10-19, 09:34 PM