View Full Version : مبتدی: ساخت کلید برای پرینت از فرم
mehrangkhan
جمعه 09 تیر 1391, 14:37 عصر
با عرض سلام خدمت همه اساتید بزرگوار
من در نمونه موجود فرمی طراحی کردم به نام صدور قبض می خوام یک باتون طراحی بشه که از این قبض پرینت بگیره من یک گزارش از این صدور قبض طراحی کردم ولی هر کاری میکنم نمی شه همه رو میگیره می خوام به انتخاب کاربر باشه از کدوم صفحه پرینت بگیره میشه نمونه فوق را تصحیح فرمایید در ضمن نمی خوام اندازه گزارش من تغییر بکنه چون این اندازه مربوطه میشه به جاری شدن اطلاعات روی کاغذ مورد نظر
یا علی
:عصبانی++:
Apia system 32.dLL
جمعه 09 تیر 1391, 14:42 عصر
با سلام دوست عزیز توجه کن ببین چی میگم:
اول باید یک ماژول تعریف کنی به این شکل :
Apia
Public Const WM_WININICHANGE = &H1A
Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const PRINTER_ACCESS_ADMINISTER = &H4
Public Const PRINTER_ACCESS_USE = &H8
Public Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _
PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)
Public Const PRINTER_ATTRIBUTE_DEFAULT = 4
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmLogPixels As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
dmICMMethod As Long
dmICMIntent As Long
dmMediaType As Long
dmDitherType As Long
dmReserved1 As Long
dmReserved2 As Long
End Type
Public Type PRINTER_INFO_5
pPrinterName As String
pPortName As String
Attributes As Long
DeviceNotSelectedTimeout As Long
TransmissionRetryTimeout As Long
End Type
Public Type PRINTER_DEFAULTS
pDatatype As Long
pDevMode As Long
DesiredAccess As Long
End Type
Declare Function GetProfileString Lib "kernel32" _
Alias "GetProfileStringA" _
(ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long) As Long
Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As String) As Long
Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Integer
Declare Function WriteProfileString Lib "kernel32" _
Alias "WriteProfileStringA" _
(ByVal lpszSection As String, _
ByVal lpszKeyName As String, _
ByVal lpszString As String) As Long
]
بعدش هم یک باتون طراحی کن و این دستورات رو توش درج کن وسلام همین
Dim Prt As Printer
Dim PrintIndex As String
PrintIndex = Me.n_printer.Value
Set Application.Printer = Application.Printers(PrintIndex)
Set Prt = Application.Printer
If Me.fr_saf = 1 Then
DoCmd.PrintOut acPrintAll, , , acHigh, Me.t_copy, Me.t_cop
DoCmd.Close acForm, "f_print"
Else
If Me.fr_saf = 2 Then
If Not IsNull(Me.page1) Then
If Not IsNumeric(Me.page1) Or Me.page1 = 0 Or Me.page1 > 65535 Then
MsgBoxFa "Çíä ÚÏÏ ÏÑ ãÍÏæå ÕÝÍÇÊ ÒÇÑÔ äãí ÈÇÔÏ" & vbCrLf & "áØÝÇð í˜ ÚÏÏ Èíä 1 ÊÇ 65535 ÇäÊÎÇÈ ˜äíÏ", vbInformation + vbMsgBoxRight + vbOKOnly, "ÊæÌå"
Me.page1.SetFocus
Else
If Not IsNull(Me.page2) Then
If Not IsNumeric(Me.page2) Or Me.page2 = 0 Or Me.page2 > 65535 Then
MsgBoxFa "Çíä ÚÏÏ ÏÑ ãÍÏæå ÕÝÍÇÊ ÒÇÑÔ äãí ÈÇÔÏ" & vbCrLf & "áØÝÇð í˜ ÚÏÏ Èíä 1 ÊÇ 65535 ÇäÊÎÇÈ ˜äíÏ", vbInformation + vbMsgBoxRight + vbOKOnly, "ÊæÌå"
Me.page2.SetFocus
End If
End If
End If
End If
p1 = Me.page1
If Not IsNull(Me.page2) Then
p2 = Me.page2
Else
p2 = p1
End If
DoCmd.PrintOut acPages, p1, p2, acHigh, Me.t_copy, Me.t_cop
DoCmd.Close acForm, "f_print"
End If
End If
Set Prt = Nothing
mehrangkhan
جمعه 09 تیر 1391, 14:44 عصر
با سلام ممنون از راهنمایی شما والا من گیج شدم و نمی دونم چکار کنم میشه نمونه من رو اطلاخ بفرمائید ممنون میشم
mehrangkhan
جمعه 09 تیر 1391, 16:33 عصر
تو رو خدا یکی مشکل منو حل کنه آیا کسی هست نمونه فوق رو اطلاح کنه
Abbas Amiri
جمعه 09 تیر 1391, 21:21 عصر
در فرم مربوط یک باتن ویک تکست باکس(جهت درج شماره صفحه مورد نظر txtPageNum) ایجاد کنید وکدهای زیر رادر روال کلیک باتن بنویسید
DoCmd.OpenReport "MyReport"
If Not IsNull(txtPageNum) Then
DoCmd.PrintOut acPages, Me!txtPageNum
End If
mosaArabi
شنبه 10 تیر 1391, 11:56 صبح
دوست گرامي
روشهايي كه دوستان گفتند درست ميباشد و روش ديگه اينكه شما از طريق ماكرو هم ميتواني خيلي راحت اين كار را انجام دهيد . نمونه شما اصلاح شد و ماكرو 3 در فرم شما درج شد و در قسمت ريپورت هم گزينه هاي Pop Upو modl به Yesتغيير داده شد
فايل ضميمه را چك كنيد. البته بخاطر ناقص بودن فايل ارسالي شما Errزياد بود ولي شما قسمت مورد نظر را كنترل كنيد
موفق باشي88975
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.