صفحه 1 از 4 123 ... آخرآخر
نمایش نتایج 1 تا 40 از 180

نام تاپیک: نمونه های کاربردی و آموزشی VBA

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    نمونه های کاربردی و آموزشی VBA

    سلام خدمت همه دوستان و کاربران محترم بخش Microsoft Access
    با توجه به نیاز روزمره کاربران محترم در ارتباط با انتقال و تبادل اطلاعات در زمینه کدنویسی VBA و همینطور جلوگیری از پراکندگی موارد ، دوستانی که مطلب یا نمونه کدهای مرتبط با موضوع این تاپیک ( در قالب کاربردی و آموزشی ) دارن لطف کنن مطالبشون رو برای استفاده سایرین در این تاپیک قرار بدن .
    ---------------------------------------------------------------------------------------------------------------------------------

    بازیافت جداول حذف شده




    Function RecoverDeletedTable()



    On Error GoTo ExitHere


    '*Declarations*

    Dim db As DAO.Database

    Dim strTableName As String

    Dim strSQL As String

    Dim intCount As Integer


    Dim blnRestored As Boolean

    '*Init*

    Set db = CurrentDb()

    '*Procedure*

    For intCount = 0 To db.TableDefs.Count - 1

    strTableName = db.TableDefs(intCount).Name

    If Left(strTableName, 4) = "~tmp" Then

    strSQL = "SELECT DISTINCTROW [" & strTableName & "].* INTO " _

    & Mid(strTableName, 5) & " FROM [" & strTableName & "];"

    DoCmd.SetWarnings False

    DoCmd.RunSQL strSQL

    MsgBox "A deleted table has been restored, using the name '" _

    & Mid(strTableName, 5) & "'", vbOKOnly, "Restored"


    blnRestored = True

    End If

    Next intCount

    If blnRestored = False Then

    MsgBox "No recoverable tables found", vbOKOnly

    End If

    '*EXIT/ERROR*

    ExitHere:

    DoCmd.SetWarnings True

    Set db = Nothing

    Exit Function


    ErrorHandler:

    MsgBox Err.Description

    Resume ExitHere

    End Function
    آخرین ویرایش به وسیله مهدی قربانی : شنبه 23 آذر 1398 در 00:14 صبح

  2. #2
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    شمارشگر رکوردها Navigation Records

    با این کد ساده شما قادر هستید بدون استفاده از Navigation Bar خود اکسس یک شمارشگر رکورد رو در فرمتون به نمایش بگذارید .
    یک Text Box در فرم مورد نظر ایجاد کنید و نام اونرو txtRecordCounter بگذارید و کد زیر رو در رویه On Current فرم کپی کنید :

    Dim rst As DAO.Recordset
    Dim lngCount As Long

    Set rst = Me.RecordsetClone

    With rst
    .MoveFirst
    .MoveLast
    lngCount = .RecordCount
    End With

    Me.txtRecordCounter = "رکورد" & Me.CurrentRecord & " از " & lngCount
    ضمناً فراموش نکنید اگر در References وی بی ای ، گزینه Microsoft DAO 3.6 Object Library چک نخورده حتماً فعالش کنید .

  3. #3
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    پرسش از کاربر جهت ذخیره اطلاعات

    با کد زیر میشه براحتی امکان تائید اطلاعات ثبت شده در یک رکورد رو ایجاد و در صورتیکه کاربر اقدام به تائید کنه مکان نما به رکورد بعدی منتقل میشه در غیر اینصورت رکورد جاری عملاً Undo شده و اطلاعات وارده پاک میشه بنظر من این کد در فرمهای Columnar بیشتر میتونه مورد استفاده قرار بگیره .
    - کد زیر رو در رویداد Before Update فیلد مورد نظر که بهتره آخرین فیلد باشه وارد کنید
    - بجای FieldName نام فیلد مورد نظرتون رو قرار بدین
    - خصوصیت Dirty در زمان آپدیت فیلد True میشه
    - ذخیره اطلاعات بوسیله پیغامSave از کاربر سوال میشه

    ' فیلد مورد نظر کپی کنید Before Update  این تیکه کد رو در رخداد
    ' نام فیلد مورد نظر رو جایگزین کنید FieldName بجای
    Private Sub FieldName_BeforeUpdate(Cancel As Integer)
    On Error GoTo Err_BeforeUpdate

    ' در صورتیکه Dirty فرمTrue خصوصیت باشه
    If Me.Dirty Then
    ' اطلاعات از کاربر میکنه Save برنامه اقدام به پرسش برای
    If MsgBox("؟ آیا قصد ذخیره اطلاعات وارده را دارید ", vbMsgBoxRight + vbYesNo + _
    vbQuestion, "توجه") = vbNo Then
    Me.Undo
    End If
    End If

    Exit_BeforeUpdate:
    Exit Sub

    Err_BeforeUpdate:
    MsgBox Err.Number & " " & Err.Description
    Resume Exit_BeforeUpdate

    End Sub

  4. #4
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    Ucase ، ورود حروف لاتین بزرگ

    با این تابع می تونید در زمان ورود حروف لاتین در فیلدها و یا TextBox ها عملیات Upper Case یا همون بزرگ کردن حروف رو همزمان با ورود انجام بدید .
    اگر قصد دارید که کلیه اطلاعات در فیلدهای متنی یا TextBox ها رو ملزم به ورود حروف بزرگ کنید این تابع رو در رخداد On Key Press فرم قرار بدید و اگر هم فیلد یا TextBox خاصی مورد نظر شماست می تونید این تابع رو در رخداد On Key Press اون فیلد یا TextBox بکار بگیرید .

    نمونه اول:
    Private Sub  Form_KeyPress(KeyAscii As Integer)
    KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End Sub
    نمونه دوم :
    Private Sub Text0_KeyPress(KeyAscii As Integer)
    KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End Sub
    البته بیشتر استفاده از روش و نمونه دوم رو توصیه می کنم .

    نمونه مرتبط :

    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    کاهش یا افزایش تاریخ با استفاده از کلیدهای - و +

    با تکه کد زیر استفاده از کلیدهای - و + برای کاهش یا افزایش تاریخ در یک فیلد Date/Time امکانپذیر میشه البته لازم به ذکره که کد فعلی قابلیت کاهش یا افزایش تاریخ رو بصورت روزانه داره که اگر لازم باشه تغییر پارامتر "d" به سایر پارامترها مثل y , m , w برای کاهش یا افزایش ماه سال و هفته امکانپذیره .

    کدهای زیر رو در یک Module جدید کپی کنید :


    Public Function PDate(PObj As Object, KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyAdd Then
    If Shift = 2 Then
    PObj = DateAdd("m", 1, PObj)
    KeyCode = 0
    Else
    PObj = DateAdd("d", 1, PObj)
    KeyCode = 0
    End If
    End If

    If KeyCode = vbKeySubtract Then
    If Shift = 2 Then
    PObj = DateAdd("m", -1, PObj)
    KeyCode = 0
    Else
    PObj = DateAdd("d", -1, PObj)
    KeyCode = 0
    End If
    End If
    End Function



    کد زیر رو هم در رویداد Key Down فیلد مورد نظر که جنسش Date/Time هست کپی کنید :
    بجای FieldName نام فیلد مورد نظر رو قرار بدین


    PDate Me.FieldName, KeyCode, Shift

    آخرین ویرایش به وسیله مهدی قربانی : شنبه 23 آذر 1398 در 00:17 صبح

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    ایجاد گزارش تصویری :
    Docmd.OutputTo acReport, "reportname", "SnapshotFormat(*.snp)", "", False, "", 0

    با کد فوق کامند دیالوگ باکس ظاهر میشه حتما نام فایل را با پسوند snp ذخیره نمائید

  7. #7
    کاربر جدید
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    اینترنت
    پست
    5

    نقل قول: کاهش یا افزایش تاریخ با استفاده از کلیدهای - و +

    با سلام خدمت استاد محترم
    من این کار را انجام دادم در رویداد key down خطا داد
    اگر امکانش هست لطف کنید یک فایک پیوست کنید .
    با تشکر

    نقل قول نوشته شده توسط مهدی قربانی مشاهده تاپیک
    با تکه کد زیر استفاده از کلیدهای - و + برای کاهش یا افزایش تاریخ در یک فیلد Date/Time امکانپذیر میشه البته لازم به ذکره که کد فعلی قابلیت کاهش یا افزایش تاریخ رو بصورت روزانه داره که اگر لازم باشه تغییر پارامتر "d" به سایر پارامترها مثل y , m , w برای کاهش یا افزایش ماه سال و هفته امکانپذیره .

    کدهای زیر رو در یک Module جدید کپی کنید :

    Public Function PDate(PObj As Object, KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyAdd Then
    If Shift = 2 Then
    PObj = DateAdd("m", 1, PObj)
    KeyCode = 0
    Else
    PObj = DateAdd("d", 1, PObj)
    KeyCode = 0
    End If
    End If

    If KeyCode = vbKeySubtract Then
    If Shift = 2 Then
    PObj = DateAdd("m", -1, PObj)
    KeyCode = 0
    Else
    PObj = DateAdd("d", -1, PObj)
    KeyCode = 0
    End If
    End If
    End Function



    کد زیر رو هم در رویداد Key Down فیلد مورد نظر که جنسش Date/Time هست کپی کنید :
    بجای FieldName نام فیلد مورد نظر رو قرار بدین

    PDate Me.FieldName, KeyCode, Shift

  8. #8

    نقل قول: پرسش از کاربر جهت ذخیره اطلاعات

    سلام
    ار بخواهیم بعد از ذخیره فرم بسته بشه،docmd.close را در کدام خط باید بنویسیم؟

  9. #9

    نقل قول: شمارشگر رکوردها Navigation Records

    سلام دوست عزیز من تازه کارم این موردی که گفتین رو نتونستم فعال کنم خطا می ده چه کنم
    ضمناً فراموش نکنید اگر در References وی بی ای ، گزینه Microsoft DAO 3.6 Object Library چک نخورده حتماً فعالش کنید .
    "Name conflicts with existing module, project, or object library"
    ممنون میشم جوابمو بدین

  10. #10
    مدیر بخش آواتار amirzazadeh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تبريز
    پست
    1,947

    نقل قول: شمارشگر رکوردها Navigation Records

    نقل قول نوشته شده توسط rezaicom مشاهده تاپیک
    سلام دوست عزیز من تازه کارم این موردی که گفتین رو نتونستم فعال کنم خطا می ده چه کنم
    ضمناً فراموش نکنید اگر در References وی بی ای ، گزینه Microsoft DAO 3.6 Object Library چک نخورده حتماً فعالش کنید .
    "Name conflicts with existing module, project, or object library"
    ممنون میشم جوابمو بدین
    دوست من شما بايد اين رفرنس رو فعال كنيد:Microsoft WMI Scripting v2.1 library
    ................................
    موفق باشيد

    DON'T START;OTHERWISE DON'T STOP
    .................................................
    قوانين سايت

  11. #11
    کاربر دائمی
    تاریخ عضویت
    شهریور 1394
    محل زندگی
    البرز
    سن
    52
    پست
    160

    نقل قول: شمارشگر رکوردها Navigation Records

    نقل قول نوشته شده توسط مهدی قربانی مشاهده تاپیک
    با این کد ساده شما قادر هستید بدون استفاده از Navigation Bar خود اکسس یک شمارشگر رکورد رو در فرمتون به نمایش بگذارید .
    یک Text Box در فرم مورد نظر ایجاد کنید و نام اونرو txtRecordCounter بگذارید و کد زیر رو در رویه On Current فرم کپی کنید :

    Dim rst As DAO.Recordset
    Dim lngCount As Long

    Set rst = Me.RecordsetClone

    With rst
    .MoveFirst
    .MoveLast
    lngCount = .RecordCount
    End With

    Me.txtRecordCounter = "رکورد" & Me.CurrentRecord & " از " & lngCount
    ضمناً فراموش نکنید اگر در References وی بی ای ، گزینه Microsoft DAO 3.6 Object Library چک نخورده حتماً فعالش کنید .


    سلام
    برای تیک زدن رفرنس یاد شده پیغام زیر ظاهر می شود







  12. #12
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    مقاله بهبود دهنده شی Accessبا کدهای vba
    http://www.sayan.ir/ViewArticle.aspx?ArticleID=147

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    ده نکته‌ای که در کار با مقادیر تهی در اکسس باید مد نظر قرار داد:
    http://www.sayan.ir/ViewArticle.aspx?ArticleID=170

  14. #14
    کاربر دائمی آواتار sajjad_kochekian
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    اصفهان نصف جهان
    پست
    581

    Cool جدا کردن اعداد سه رقم سه رقم جهت نرم افزار های مالی یا مالیاتی

    این فانکشن برای جدا کردن اعداد سه رقم سه رقم احتیاج داشتم جهت یک گزارش مالیاتی
    شاید به درد دوستان بخوره

    Public Function number3digit(num As Currency, state As Integer) As String
    Dim ln As Integer
    If state = 1 Then number3digit = Right(num, 3)

    If state = 2 And Len(Trim(num)) > 3 Then
    ln = Len(Right(num, 6)) - 3

    number3digit = Left(Right(num, 6), ln)

    End If
    If state = 3 And Len(Trim(num)) > 6 Then
    ln = Len(Right(num, 9)) - 6
    number3digit = Left(Right(num, 9), ln)
    End If

    End Function

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    :To remove the Minimize, Maximize, and Restore button from a Report's preview window
    http://www.everythingaccess.com/tuto...Preview-Window

  16. #16
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    مجموعه ها در اکسس


  17. #17
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    Allow Bypass Key

    بستن کلید شیفت :

    Public Function SetAllowBypassKeyFalse()

    '----- کنترل خطا
    On Error GoTo Err_SetAllowBypassKeyFalse


    Dim db As DAO.Database, prp As DAO.Property

    '----- در صورت موجود بودن Property ست کردن
    Set db = CurrentDb

    db.Properties("AllowBypassKey") = False

    Set db = Nothing


    Exit_SetAllowBypassKeyFalse:

    Exit Function

    '----- کنترل خطا
    Err_SetAllowBypassKeyFalse:

    '----- خطا در صورت موجود نبودن Property
    '----- اگر قبلاً ساخته نشده Property ساخت
    If Err = 3270 Then

    Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, False)
    db.Properties.Append prp

    Resume Next

    Else

    '----- در صورت بروز خطاهای غیر منتظره
    MsgBox "SetAllowBypassKeyFalse", Err.Number, Err.Description

    Resume Exit_SetAllowBypassKeyFalse

    End If

    End Function


  18. #18
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    Hide/Unhide Navigation Pane with code

    نمایش / عدم نمایش Navigation Pane در Access 2007

    برای عدم نمایش :
    بجای TableName نام یکی از Table‌های موجود در بانک خودتون رو جایگزین کنید
    'hide the Database Window or Navigation  Pane
    DoCmd.SelectObject acTable, "TableName", True
    DoCmd.RunCommand acCmdWindowHide


    برای نمایش :
    'show the Database Window or Navigation  Pane
    DoCmd.SelectObject acTable, "TableName", True

  19. #19

    Red face نقل قول: Hide/Unhide Navigation Pane with code

    باسلام. یک کد مخفی کننده navigation pan می خوام. اگه دوستی داره، لطفا کمک کنه...
    در ضمن ایا روشی برای exe کردن فایل های اکسس وجود داره؟
    آخرین ویرایش به وسیله iman56 : سه شنبه 30 تیر 1388 در 15:15 عصر

  20. #20
    کاربر تازه وارد آواتار saeedyaz
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    48
    پست
    78

    نقل قول: Allow Bypass Key

    نقل قول نوشته شده توسط مهدی قربانی مشاهده تاپیک
    بستن کلید شیفت :

    Public Function SetAllowBypassKeyFalse()

    '----- کنترل خطا
    On Error GoTo Err_SetAllowBypassKeyFalse


    Dim db As DAO.Database, prp As DAO.Property

    '----- در صورت موجود بودن Property ست کردن
    Set db = CurrentDb

    db.Properties("AllowBypassKey") = False

    Set db = Nothing


    Exit_SetAllowBypassKeyFalse:

    Exit Function

    '----- کنترل خطا
    Err_SetAllowBypassKeyFalse:

    '----- خطا در صورت موجود نبودن Property
    '----- اگر قبلاً ساخته نشده Property ساخت
    If Err = 3270 Then

    Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, False)
    db.Properties.Append prp

    Resume Next

    Else

    '----- در صورت بروز خطاهای غیر منتظره
    MsgBox "SetAllowBypassKeyFalse", Err.Number, Err.Description

    Resume Exit_SetAllowBypassKeyFalse

    End If

    End Function

    مهندس این کد رو چه جوری اجرایی کنم تو on loud یا جای دیگه....

  21. #21
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    نقل قول: نمونه های کاربردی و آموزشی VBA

    سلام
    اين كد رو اول توي يك ماجول كپي و ذخيره كنيد ، بعد مثلاً در لود فرم اصلي برنامه يا يك كامند باتون اين عبارت رو بنويسيد : SetAllowBypassKeyFalse
    البته اگر يك بار اين ماجول اجرا بشه ديگه براي هميشه شيفت بسته ميشه و احتياجي نيست كه هر بار برنامه لود ميشه اين عمل تكرار بشه بنابر اين مي تونيد يك فرم در فايل بذاريد به همراه كامند باتون كه فقط در صورت نياز بهش رجوع كنيد . ويك نكته مهم اينكه حتماً قبل از بستن شيفت يك كپي لز فايل رو در جايي ذخيره كنيد .

  22. #22
    قبلا در رابطه با input mask دوستان فایل متنی را ارسال که بسیار کامل است و بدون کد نویسی این کا را انجام میدهد بطور مثال با علامت سئوال در inputmask کار شما را انجام میدهد

  23. #23
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    پاک کردن اطلاعات موجود در جداول

    با نمونه کد های زیر می تونید اطلاعات موجود در جداول رو پاک کنید
    بجای [boxTables]‌میتونید نام ListBox خودتون رو جایگزین کنید
    این قسمت رو در رخداد On Activate‌ کپی کنید :

    DoCmd.Restore
    [boxTables].RowSourceType = "Value List"
    For Each Item In Application.CurrentDb.tabledefs
    [boxTables].RowSource = [boxTables].RowSource & ";" & I
    tem.Name
    Next


    و این قسمت رو هم در On Click کامند ایجاد شده در فرم کپی کنید :

    Dim strSQL As String
    For Each Item In Application.CurrentDb.tabledefs
    DoCmd.SetWarnings warningsoff
    If Item.Name = [boxTables].Value Then
    strSQL = "DELETE " & [boxTables].Value & ".* FROM " & _
    [boxTables].Value & ";"
    DoCmd.RunSQL strSQL
    End If
    DoCmd.SetWarnings warningson
    Next


    نمونه مرتبط :
    فایل های ضمیمه فایل های ضمیمه

  24. #24
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    نقل قول نوشته شده توسط navi2002 مشاهده تاپیک

    Dim strSQL As String
    Dim i As Integer
    Dim Msg As String

    'Exit this sub if the combo box is cleared
    If NewData = "" Then Exit Sub

    Msg = "'" & NewData & "' این گزینه در لیست نمی باشد ." & vbCr & vbCr
    Msg = Msg & "آیا می خواهید اضافه شود ؟"

    i = MsgBox(Msg, vbQuestion + vbYesNo + vbMsgBoxRight, "مقدار ورودی نامعتبر است ")
    If i = vbYes Then
    strSQL = "Insert Into table name ([field name]) values ('" & NewData & "')"
    CurrentDb.Execute strSQL, dbFailOnError
    Response = acDataErrAdded
    Else
    Response = acDataErrContinue
    End If
    بهتر در قسمت evente ( on not in list ( فرمی که این لیست باکس رو داره
    کد زیر رو بنویسید اونوقت اگه کسی عبارتی رو که تو لیست نیست تایپ کنه اتوماتیک به اون جدول اضافه میشه راستی باید به جای table name و field name نام جدول و فیلد مربوطه رو بنویسی

  25. #25
    کاربر تازه وارد آواتار سعید مشکین فر
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    موطن آدمی در قلب کسانی است که دوستش میدارند
    پست
    42

    ساخت Navigation Buttons توسط کدهای VBA در فرم

    'ابتدا
    'کلیدهای اولین رکورد ،آخرین رکورد،رکورد قبل،رکورد بعد،رکورد و رکورد جدید را
    'روی فرم خودتان طراحی کنید
    'کدها را در رویداد کلیک هر دکمه فرمان کپی کنید
    '************************************************* **********
    'This code builds a set of Navigation Buttons consisting of:
    'First, Next, Previous, Last, and New
    '************************************************* **********
    Private Sub cmdFirst_Click()
    On Error GoTo Err_cmdFirst_Click

    DoCmd.GoToRecord , , acFirst
    Me.ID_NO.SetFocus

    Exit_cmdFirst_Click:
    Exit Sub

    Err_cmdFirst_Click:
    MsgBox Err.Description
    Resume Exit_cmdFirst_Click

    End Sub

    Private Sub cmdLast_Click()
    On Error GoTo Err_cmdLast_Click

    DoCmd.GoToRecord , , acLast
    Me.ID_NO.SetFocus
    'قرار دهید ID_NO نام فیلد خودتان را بجای

    Exit_cmdLast_Click:
    Exit Sub

    Err_cmdLast_Click:
    MsgBox Err.Description
    Resume Exit_cmdLast_Click

    End Sub

    Private Sub cmdNew_Click()
    On Error GoTo Err_cmdNew_Click

    DoCmd.GoToRecord , , acNewRec

    Exit_cmdNew_Click:
    Exit Sub

    Err_cmdNew_Click:
    MsgBox Err.Description
    Resume Exit_cmdNew_Click

    End Sub

    Private Sub cmdNext_Click()
    On Error GoTo Err_cmdNext_Click

    DoCmd.GoToRecord , , acNext
    Me.ID_NO.SetFocus
    'قرار دهید ID_NO نام فیلد خودتان را بجای

    Exit_cmdNext_Click:
    Exit Sub

    Err_cmdNext_Click:
    Call EndTable
    Resume Exit_cmdNext_Click

    End Sub

    Private Sub cmdPrevious_Click()
    On Error GoTo Err_cmdPrevious_Click

    DoCmd.GoToRecord , , acPrevious
    'قرار دهید ID_NO نام فیلد خودتان را بجای
    Me.ID_NO.SetFocus

    Exit_cmdPrevious_Click:
    Exit Sub

    Err_cmdPrevious_Click:
    Call StartTable
    Resume Exit_cmdPrevious_Click

    End Sub

    'کدها را در رویداد Current کپی کنید

    Private Sub Form_Current()
    On Error GoTo Err_Form_Current
    Dim recClone As Object
    Dim intNewRecord As Integer

    ' Do magic tricks with the form's caption!
    If Me.NewRecord Then
    ' Use appropriate prompt for your database.
    Me.Caption = "رکورد جدید: لطفا اطلاعات رکورد را وارد کنید"
    Else
    Me.Caption = " شماره صفحه فعلی: " & Me!ID_NO.Value 'قرار دهید ID_NO نام فیلد خودتان را بجای

    End If

    ' If this is a "New Record" then
    ' Disable the <Next>, <New>, <Last> buttons
    ' Enable the <First> and <Next> buttons
    ' Then Exit the procedure.
    intNewRecord = IsNull(Me![ID_NO])
    If intNewRecord Then
    cmdFirst.Enabled = True
    cmdNext.Enabled = False
    cmdPrevious.Enabled = True
    cmdLast.Enabled = False
    cmdNew.Enabled = False
    Me![RecordCount] = "ثبت رکورد جدید"
    Me.ID_NO.SetFocus ' Set focus to the PasNo if a "New Record"
    Exit Sub
    Else
    ' Else if this is not a new record
    ' Enable <New> and <Last> buttons
    cmdNew.Enabled = True
    cmdLast.Enabled = True
    End If

    ' Make a clone of the recordset underlying the form so
    ' we can move around without affecting the form's recordset
    Set recClone = Me.RecordsetClone

    ' Check to see if there are no records
    ' If so disable all buttons except for the <New> button
    If recClone.RecordCount = 0 Then
    cmdNext.Enabled = False
    cmdPrevious.Enabled = False
    cmdFirst.Enabled = False
    cmdLast.Enabled = False
    Else
    ' Synchronise the current pointer in the two recordsets
    recClone.Bookmark = Me.Bookmark
    ' If there are records, see if recordset is on the first record
    ' If so, disable the <First> and <Previous> buttons
    recClone.MovePrevious
    cmdFirst.Enabled = Not (recClone.BOF)
    cmdPrevious.Enabled = Not (recClone.BOF)
    recClone.MoveNext
    ' And then check whether recordset is on the last record
    ' If so, disable the <Last> and <Next> buttons
    recClone.MoveNext
    cmdLast.Enabled = Not (recClone.EOF)
    cmdNext.Enabled = Not (recClone.EOF)
    recClone.MovePrevious
    End If

    Me![RecordCount] = "رکورد " & (recClone.AbsolutePosition + 1) & " از " & _
    DCount("ID_NO", "[MainTable]")
    'قرار دهید MainTable نام تیبل خودتان را بجای

    recClone.Close

    Exit_Form_Current:
    Exit Sub

    Err_Form_Current:
    If Err = 3021 Then
    ' Error 3021 means recordset is at Add New Record
    ' Enable <Previous> and <First> buttons
    ' Disable <Next> and <Last> buttons
    cmdPrevious.Enabled = True
    cmdFirst.Enabled = True
    cmdNext.Enabled = False
    cmdLast.Enabled = False
    Resume Exit_Form_Current
    Else
    MsgBox Err.Description
    Resume Exit_Form_Current
    End If
    End Sub

  26. #26
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    837
    با copyfile هم میشه هر فایلی رو رو دیسکت یا هر محل دیگه کپی کرد
    در رفرنسها هم باید microsot scripting runtimeرا چک بزنید
    ومتغیری به شکل زیر تعریف کنید
    کد:

    Dim fso As New FileSystemObject

    سینتکس آن از راهنمای اکسس
    نقل قول:
    CopyFile Method


    Description

    Copies one or more files from one location to another.

    Syntax

    object.CopyFile source, destination[, overwrite]

    The CopyFile method syntax has these parts:

    Part Description
    object Required. The object is always the name of a FileSystemObject.
    source Required. Character string file specification, which can include wildcard characters, for one or more files to be copied.
    destination Required. Character string destination where the file or files from source are to be copied. Wildcard characters are not allowed.
    overwrite Optional. Boolean value that indicates if existing files are to be overwritten. If True, files are overwritten; if False, they are not. The default is True. Note that CopyFile will fail if destination has the read-only attribute set, regardless of the value of overwrite.



    Remarks

    Wildcard characters can only be used in the last path component of the source argument. For example, you can use:

    FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"

    But you can't use:

    FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"

    If source contains wildcard characters or destination ends with a path separator (\), it is assumed that destination is an existing folder in which to copy matching files. Otherwise, destination is assumed to be the name of a file to create. In either case, three things can happen when an individual file is copied.

    If destination does not exist, source gets copied. This is the usual case.


    If destination is an existing file, an error occurs if overwrite is False. Otherwise, an attempt is made to copy source over the existing file.


    If destination is a directory, an error occurs.
    An error also occurs if a source using wildcard characters doesn't match any files. The CopyFile method stops on the first error it encounters. No attempt is made to roll back or undo any changes made before an error occurs

  27. #27
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    محاسبه مجموع زمان ( ساعات کارکرد )

    با این ماجول می تونید مجموع زمان رو بطور صحیح و با فرمت HH:MM محاسبه کنید و مشکلی که بعضی از دوستان در محاسبه مجموع زمان با اون برخورد می کنند ( عدم محاسبه بیشتر از 24 ساعت ) رو حل می کنه .

    کدهای زیر رو در یک ماجول کپی کنید :

    Function GetTimeRoozanehTotal()
    Dim db As Database, rs As Recordset
    Dim totalhours As Long, totalminutes As Long
    Dim days As Long, Hours As Long, Minutes As Long
    Dim interval As Variant, j As Integer

    Set db = DBEngine.Workspaces(0).Databases(0)
    Set rs = db.OpenRecordset("TimeRoozaneh")
    interval = #12:00:00 AM#
    '
    While Not rs.EOF
    interval = interval + rs![Roozaneh]
    rs.MoveNext
    Wend
    totalhours = Int(CSng(interval * 24))
    totalminutes = Int(CSng(interval * 1440))
    Hours = totalhours Mod 24
    Minutes = totalminutes Mod 60
    ' در صورتیکه مایل به استفاده عبارات ساعت و دقیقه هستید خط زیر رو فعال کنید
    ' GetTimeRoozanehTotal = totalhours & " ساعت و " & Minutes & " دقیقه"
    GetTimeRoozanehTotal = totalhours & ":" & Minutes
    End Function


    بعد این تابع رو در Control Source یک TextBox در فرم کپی کنید :
    =GetTimeRoozanehTotal()


    نمونه مرتبط :
    فایل های ضمیمه فایل های ضمیمه

  28. #28
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    استفاده از رخداد Mouse Wheel

    با این کد در زمان استفاده از Mouse Scrool یا همون Mouse Wheel در صورتیکه فوکوس به فیلدهای اول و آخر منتقل بشه پیغامی مبنی بر اولین رکورد یا آخرین رکود صادر میشه .

    کدهای زیر رو در رخداد On Mouse Wheel کپی کنید :
    If Count > 0 Then


    If Me.CurrentRecord = Me.RecordsetClone.RecordCount + 1 Then


    MsgBox "! آخرین رکورد", vbInformation + vbMsgBoxRight, "پیمایش رکوردها"

    Else


    DoCmd.GoToRecord , , acNext

    End If


    ElseIf Me.CurrentRecord - 1 = 0 Then


    MsgBox "! اولین رکورد", vbInformation + vbMsgBoxRight, "پیمایش رکوردها"

    Else

    DoCmd.GoToRecord , , acPrevious

    End If

  29. #29
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    Hide کردن سابفرم در صورتیکه تعداد رکورد آن صفر باشد

    این نمونه کد وقتی سابفرم خالی باشه اونرو Hide میکنه . ضمناً نمونه فایل هم ضمیمه شده .
    بجای Subform نام سابفرم خودتون رو جایگزین کنید .

    Private Sub Form_Current()
    With Me![Subform].Form


    If .RecordsetClone.RecordCount = 0 Then

    .Visible = False
    Else
    .Visible = True
    End If
    End With
    End Sub

  30. #30
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435

    تغییر زبان سیستم با استفاده از تابع API

    با استفاده از این تابع API امکان تغییر زبان سیتم فراهم میشه :

    تابع :
    Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, _
    ByVal flags As Long) As Long
    حالا می تونید در یکی از رخداد ها بسته به نظر خودتون این کد رو برای فراخوان زبان مورد نظر بنویسید برای مثال میشه در رخداد On Load‌ فرم StartUp برنامه ازش استفاده کرد :
    Private Sub Form_Load()

    'برای تغییر به فارسی

    Call ActivateKeyboardLayout(1, 1)

    End Sub
    البته برای تغییر به انگلیسی اینو بنویسید :
    Call ActivateKeyboardLayout(0, 1)

  31. #31
    کاربر دائمی آواتار HAMRAHSOFT.IR
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    هرجا كه غم و ناراحتي باشه
    پست
    1,175

    نقل قول: محاسبه مجموع زمان ( ساعات کارکرد )

    نقل قول نوشته شده توسط mehdi-gh مشاهده تاپیک
    با این ماجول می تونید مجموع زمان رو بطور صحیح و با فرمت HH:MM محاسبه کنید و مشکلی که بعضی از دوستان در محاسبه مجموع زمان با اون برخورد می کنند ( عدم محاسبه بیشتر از 24 ساعت ) رو حل می کنه .

    کدهای زیر رو در یک ماجول کپی کنید :

    Function GetTimeRoozanehTotal()
    Dim db As Database, rs As Recordset
    Dim totalhours As Long, totalminutes As Long
    Dim days As Long, Hours As Long, Minutes As Long
    Dim interval As Variant, j As Integer

    Set db = DBEngine.Workspaces(0).Databases(0)
    Set rs = db.OpenRecordset("TimeRoozaneh")
    interval = #12:00:00 AM#
    '
    While Not rs.EOF
    interval = interval + rs![Roozaneh]
    rs.MoveNext
    Wend
    totalhours = Int(CSng(interval * 24))
    totalminutes = Int(CSng(interval * 1440))
    Hours = totalhours Mod 24
    Minutes = totalminutes Mod 60
    ' در صورتیکه مایل به استفاده عبارات ساعت و دقیقه هستید خط زیر رو فعال کنید
    ' GetTimeRoozanehTotal = totalhours & " ساعت و " & Minutes & " دقیقه"
    GetTimeRoozanehTotal = totalhours & ":" & Minutes
    End Function


    بعد این تابع رو در Control Source یک TextBox در فرم کپی کنید :
    =GetTimeRoozanehTotal()


    نمونه مرتبط :


    لطفا نمونه اكسس پروجكت بزاريد عالي ميشه
    البته كد

  32. #32
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    1,369

    استفاده از انیمیشن (تصاویر متحرک ) در فرم بدون اکتیوایکس:


    Private Sub Form_Load()
    Me.ocxWebBrowser.Object.Navigate CurrentProject.Path & "\NamePicture.gif"
    End Sub
    Private Sub ocxWebBrowser_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Me.ocxWebBrowser.Object.Document.Body.Scroll = "no"
    End Sub

    تذکر:
    بجایNamePictureنام تصویر متحرک خود را وارد نمائید.
    تصویر متحرک هم باید در کنار برنامه باشد.
    موفق باشید

  33. #33
    کاربر تازه وارد آواتار سعید مشکین فر
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    موطن آدمی در قلب کسانی است که دوستش میدارند
    پست
    42

    پرسش از کاربر برای بستن فرم و خروج از برنامه

    کلید خروج را روی فرم یا سویچ برد طراحی کنید و کد ها را در رویداد Click فرم کپی کنید



    Private Sub CmdExit_Click()
    Dim x As String
    x = MsgBoxFa("از برنامه خارج میشود آیا موافقید", vbYesNo + vbQuestion + vbMsgBoxRight, "خروج از برنامه")
    If x = 6 Then
    DoCmd.Quit
    Else
    Exit Sub
    End If
    End Sub
    آخرین ویرایش به وسیله سعید مشکین فر : شنبه 17 فروردین 1387 در 01:14 صبح دلیل: تصحیح

  34. #34
    کاربر تازه وارد آواتار سعید مشکین فر
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    موطن آدمی در قلب کسانی است که دوستش میدارند
    پست
    42

    پرسش از کاربر برای حذف رکورد در فرمها

    کلید حذف رکورد را در فرم مورد نظر طراحی کنید و کد زیر را در رویداد On Click کلیدتان کپی کنید بعد از آن هر بار که کلید حذف را برای رکورد انتخاب کنید برنامه از شما برای حذف آن رکورد اجازه میخواهد و میتوانید از حذف رکورد انصراف دهید
    On Error GoTo Err_DelRec_Click
    i = MsgBoxFa("رکورد جاری حذف میشود آیا اطمینان دارید ؟", vbYesNo, "پیام سیستم")
    If i = 6 Then
    DoCmd.SetWarnings (warningoff)

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    MsgBoxFa "رکورد انتخاب شده حذف شده", vbOKOnly, "پیام سیستم"
    'DoCmd.SetWarnings (warningon)
    Exit_DelRecord_Click:
    Exit Sub

    Err_DelRec_Click:
    MsgBox Err.Description
    آخرین ویرایش به وسیله سعید مشکین فر : شنبه 17 فروردین 1387 در 01:12 صبح دلیل: تصحیح

  35. #35
    کاربر تازه وارد آواتار سعید مشکین فر
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    موطن آدمی در قلب کسانی است که دوستش میدارند
    پست
    42

    اعلام پیام از سیستم برای رکوردهای تکراری

    کد زیر را در رویداد On Error فرم وارد کنید پس از آن هنگام ورود رکوردهای تکرارای سیستم به کاربر پیام تکراری بودن رکورد را خواهد داد . میتوانید پیامها را با جملات مورد نیازتان تعویض کنید.یادآوری میشود Data Source فرم شما باید جدولی با یک فیلد یکتا (PrimaryKey) باشد.
    Dim StMsg As String
    Const ConDupKey = 3022
    If DataErr = ConDupKey Then
    StMsg = " رکورد تکراری است "
    StMsg = StMsg & " ادامه پیام شما "
    StMsg = StMsg & "ادامه پیام شما"
    MsgBoxFa StMsg
    txtPersonID.SetFocus
    Response = acDataErrContinue
    End If

  36. #36
    کاربر دائمی آواتار مهدی قربانی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    2,435
    ضمن تشکر از دوستانی که در این تاپیک شرکت کردن ، سایر عزیزان تمایلی به ارائه مطلب و یا نمونه و .... برای استفاده اعضاء ندارن ؟ به هر حال برای رشد معلومات و توانایی ها لازمه که رفقا همکاری و مساعدت بفرمایند .
    موفق باشید .

  37. #37
    راه حل در زمانیکه برنامه ما MDE نمی شود و هنگ می کند
    https://barnamenevis.org/showthread.php?t=101044

  38. #38
    کاربر دائمی آواتار shaghaghi
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    250

    تغییر رنگ سطرهای ریپورت بصورت یک در میان

    برای خوانایی و زیبایی گزارشات بهتر به نظر می آید با ملاک قراردادن زوج یا فرد بودن عدد فیلد ردیف، سطرهای گزارش را بصورت رنگ های دلخواه (سفید،خاکستری) نمایش دهیم:

    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    Me.Detail.BackColor = IIf(me.txtRow Mod 2 = 0, 16777215, 14671839)
    End Sub
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله shaghaghi : دوشنبه 02 اردیبهشت 1387 در 13:25 عصر دلیل: اضافه نمودن تصویر ضمیمه

  39. #39
    کاربر دائمی آواتار morteza_lll
    تاریخ عضویت
    تیر 1386
    محل زندگی
    ايران / اهواز
    پست
    349

    Question سوال

    نقل قول نوشته شده توسط shaghaghi مشاهده تاپیک
    برای خوانایی و زیبایی گزارشات بهتر به نظر می آید با ملاک قراردادن زوج یا فرد بودن عدد ردیف سطرهای گزارشات را بصورت رنگ های دلخواه (سفید،خاکستری) نمایش دهیم

    سلام دوست عزیز من این کدو استفاده کردم ولی روی کلمه ROW پیغام خطا می دهد


    اگه ممکنه منو راهنمایی کنید ممنون

  40. #40

    نقل قول: تغییر رنگ سطرهای ریپورت بصورت یک در میان

    با سلام
    مطلب خوبی است برای من که مبتدی هستم بیشتر توضیح دهید
    با تشکر..

صفحه 1 از 4 123 ... آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •