PDA

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