نمایش نتایج 1 تا 2 از 2

نام تاپیک: خطا در شماره گذاری

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    آبادان
    پست
    466

    خطا در شماره گذاری

    سلام بر همگی من یک جدول دارم شمال شماره طبقه و شماره اتاق است کد زیر را نوشتم و می خواهم اگر طبقه یک نوشتم در باکس شماره اتاق بفرض A101 بشه و اگر در هر همان طبقه هر چند تا اتاق بشه A 102 و A103 بشه و و طبقه دوم بفرض B103 و ...... در باکس طبقه (FLOOR) خطا میگیرد و اجازه هیچگونه عملیاتی را نمی دهد ممنون میشم کمک کنید
    Dim floorNo As Long
    Dim roomPrefix As String
    Dim lastRoomNum As Variant
    Dim nextRoomNum As Long
    Dim finalRoomNumber As String

    On Error GoTo ErrorHandler

    If IsNull(Me.Floor) Or Me.TXTFloor = 0 Then
    MsgBox "تست شکست: طبقه خالي است.", vbCritical
    Cancel = True
    Exit Sub
    Else
    floorNo = CLng(Me.TXTFloor)
    End If


    Select Case floorNo
    Case 1: roomPrefix = "A"
    Case 2: roomPrefix = "B"
    Case 3: roomPrefix = "C"
    Case 4: roomPrefix = "D"
    Case 5: roomPrefix = "E"
    Case 6: roomPrefix = "F"
    Case 7: roomPrefix = "G"
    Case 8: roomPrefix = "H"
    Case 9: roomPrefix = "I"
    Case 10: roomPrefix = "J"
    Case Else
    MsgBox "تست شکست: Floor خارج از محدوده است (" & floorNo & ").", vbCritical
    Cancel = True
    Exit Sub
    End Select

    lastRoomNum = DMax("[RoomNumber]", "Tbl_Rooms", "Left([RoomNumber], 1) = '" & roomPrefix & "'")

    If IsNull(lastRoomNum) Then
    nextRoomNum = 1
    finalRoomNumber = roomPrefix & "001"
    Else
    ' براي اطمينان، فرض مي‌کنيم که عدد بعد از کاراکتر اول قرار دارد.
    lastNumStr = Mid(lastRoomNum, 2)
    nextRoomNum = CLng(lastNumStr) + 1
    finalRoomNumber = roomPrefix & Format(nextRoomNum, "000")
    End If

    ' ************************************************** ***************
    ' *** تغيير مهم: نمايش نتيجه به جاي تخصيص ***
    MsgBox "مقدار توليد شده براي RoomNumber: " & finalRoomNumber, vbInformation, "تست موفقيت آميز توليد"

    ' *** خط تخصيص را کامنت کنيد يا حذف نماييد ***
    ' Me.RoomNumber = finalRoomNumber

    Cancel = True ' لغو ذخيره براي جلوگيري از تداخل با تست
    Exit Sub


    ErrorHandler:
    MsgBox "خطاي غيرمنتظره در تست: " & err.Description, vbCritical
    Cancel = True

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,684

    نقل قول: خطا در شماره گذاری

    سلام و روز خوش
    این کد هوش ساختگی هست؟
    در هر صورت خواسته چندان گویا و کد هم ظاهرا کامل نیست،
    فعلا کد رو در تگ VB گذاشتم تا خوانا باشه شاید دیگران بتونن کمک کنن.

    Dim floorNo As Long
    Dim roomPrefix As String
    Dim lastRoomNum As Variant
    Dim nextRoomNum As Long
    Dim finalRoomNumber As String

    On Error GoTo ErrorHandler

    If IsNull(Me.Floor) Or Me.TXTFloor = 0 Then
    MsgBox "تست شکست: طبقه خالي است.", vbCritical
    Cancel = True
    Exit Sub
    Else
    floorNo = CLng(Me.TXTFloor)
    End If


    Select Case floorNo
    Case 1: roomPrefix = "A"
    Case 2: roomPrefix = "B"
    Case 3: roomPrefix = "C"
    Case 4: roomPrefix = "D"
    Case 5: roomPrefix = "E"
    Case 6: roomPrefix = "F"
    Case 7: roomPrefix = "G"
    Case 8: roomPrefix = "H"
    Case 9: roomPrefix = "I"
    Case 10: roomPrefix = "J"
    Case Else
    MsgBox "تست شکست: Floor خارج از محدوده است (" & floorNo & ").", vbCritical
    Cancel = True
    Exit Sub
    End Select

    lastRoomNum = DMax("[RoomNumber]", "Tbl_Rooms", "Left([RoomNumber], 1) = '" & roomPrefix & "'")

    If IsNull(lastRoomNum) Then
    nextRoomNum = 1
    finalRoomNumber = roomPrefix & "001"
    Else
    ' براي اطمينان، فرض مي‌کنيم که عدد بعد از کاراکتر اول قرار دارد.
    lastNumStr = Mid(lastRoomNum, 2)
    nextRoomNum = CLng(lastNumStr) + 1
    finalRoomNumber = roomPrefix & Format(nextRoomNum, "000")
    End If

    ' ************************************************** ***************
    ' *** تغيير مهم: نمايش نتيجه به جاي تخصيص ***
    MsgBox "مقدار توليد شده براي RoomNumber: " & finalRoomNumber, vbInformation, "تست موفقيت آميز توليد"

    ' *** خط تخصيص را کامنت کنيد يا حذف نماييد ***
    ' Me.RoomNumber = finalRoomNumber

    Cancel = True ' لغو ذخيره براي جلوگيري از تداخل با تست
    Exit Sub


    ErrorHandler:
    MsgBox "خطاي غيرمنتظره در تست: " & err.Description, vbCritical
    Cancel = True

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

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