اذهب الي المحتوي
أوفيسنا

خطأ فى استعلام الرقم القومى


إذهب إلى أفضل إجابة Solved by ابو جودي,

الردود الموصى بها

السلام عليكم ورحمة الله وبركاته 

فى هذا الملف عند وجود رقم  القومى فى الخلية فارغ يحدث خطأ 94 فى الاستعلام

وجزاكم الله كل خير

 

قاعدة بيانات موظفين.rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

أخى @عمر طاهرهو حضرتك كده لو فيه خطأ مش هيظهر فى الخلية استأذنك ممكن 
اذا كان هناك خطأ فى تاريخ الميلاد يضع كلمة خطأ فى تاريخ الميلاد

اذا كان هناك خطأ فى النوع يضع كلمة خطأ فى النوع

اذا كان هناك خطأ فى المحافظة يضع كلمة خطأ فى المحافظة  😇

رابط هذا التعليق
شارك

أخى @عمر طاهر شكراً لحضرتك إحنا بنساعد على قد معلومتنا 😁
أستاذى @ابو جوديجميل جداً و بارك الله فيك ونفع بك و وحفظك

 

                                               أستأذنك إن أمكن 

إذا كان هناك خطأ فى تاريخ الميلاد يضع كلمة خطأ فى تاريخ الميلاد

إذا كان هناك خطأ فى النوع يضع كلمة خطأ فى النوع

إذا كان هناك خطأ فى المحافظة يضع كلمة خطأ فى المحافظة  .  :signthankspin:
لمعرفة ان كان هناك خطأ

رابط هذا التعليق
شارك

  • أفضل إجابة
منذ ساعه, محمد احمد لطفى said:

إن أمكن 

إذا كان هناك خطأ فى تاريخ الميلاد يضع كلمة خطأ فى تاريخ الميلاد

إذا كان هناك خطأ فى النوع يضع كلمة خطأ فى النوع

إذا كان هناك خطأ فى المحافظة يضع كلمة خطأ فى المحافظة  .  :signthankspin:
لمعرفة ان كان هناك خطأ

اتفضل يا سيدى :fff:

لا تنسى وضع افضل اجابة :wink2:

 

وهذه هى الاكواد المستخدمة 

Dim CalcAge As String

Public Function IDData(IDNumber As Variant, Optional stype As Integer = 1) As Variant

  If IsNull(IDNumber) Or IDNumber = "" Or IDNumber = "" Or IDNumber = Empty Or IDNumber = vbNullString Or Len(IDNumber) = 0 Then
    IDData = ""
  Exit Function
  ElseIf Len(IDNumber) < 14 Then
    IDData = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1608") & ChrW("1605") & ChrW("1609") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1589") & ChrW("1581") & ChrW("1610") & ChrW("1581") & ChrW("32") & ChrW("40") & ChrW("32") & ChrW("1571") & ChrW("1589") & ChrW("1594") & ChrW("1585") & ChrW("32") & ChrW("1605") & ChrW("1606") & ChrW("32") & ChrW("49") & ChrW("52") & ChrW("32") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("41")
  Exit Function
  ElseIf Len(IDNumber) > 14 Then
    IDData = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1608") & ChrW("1605") & ChrW("1609") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1589") & ChrW("1581") & ChrW("1610") & ChrW("1581") & ChrW("32") & ChrW("40") & ChrW("32") & ChrW("1571") & ChrW("1603") & ChrW("1576") & ChrW("1585") & ChrW("32") & ChrW("1605") & ChrW("1606") & ChrW("32") & ChrW("49") & ChrW("52") & ChrW("32") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("41")
  Exit Function
  ElseIf Not IsNumeric(IDNumber) Then
    IDData = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1608") & ChrW("1605") & ChrW("1609") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1589") & ChrW("1581") & ChrW("1610") & ChrW("1581") & ChrW("32") & ChrW("40") & ChrW("32") & ChrW("1604") & ChrW("1575") & ChrW("1576") & ChrW("1583") & ChrW("32") & ChrW("1605") & ChrW("1606") & ChrW("32") & ChrW("1573") & ChrW("1587") & ChrW("1578") & ChrW("1582") & ChrW("1583") & ChrW("1575") & ChrW("1605") & ChrW("32") & ChrW("1571") & ChrW("1585") & ChrW("1602") & ChrW("1575") & ChrW("1605") & ChrW("32") & ChrW("1601") & ChrW("1602") & ChrW("1591") & ChrW("32") & ChrW("41")
  Exit Function
  ElseIf Not IsDate(Format(IIf(Left(IDNumber, 1) = 3, Mid(IDNumber, 2, 2) + 2000, Mid(IDNumber, 2, 2) + 1900) & "/" & Mid(IDNumber, 4, 2) & "/" & Mid(IDNumber, 6, 2), "yyyy/mm/dd")) Then
    IDData = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1608") & ChrW("1605") & ChrW("1609") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1589") & ChrW("1581") & ChrW("1610") & ChrW("1581") & ChrW("32") & ChrW("40") & ChrW("32") & ChrW("1582") & ChrW("1591") & ChrW("1571") & ChrW("32") & ChrW("1601") & ChrW("1609") & ChrW("32") & ChrW("1578") & ChrW("1575") & ChrW("1585") & ChrW("1610") & ChrW("1582") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1605") & ChrW("1610") & ChrW("1604") & ChrW("1575") & ChrW("1583") & ChrW("32") & ChrW("41")
  Exit Function
  Else
    If stype = 1 Then
      Dim DateOfBirth As Date: DateOfBirth = Format(IIf(Left(IDNumber, 1) = 3, Mid(IDNumber, 2, 2) + 2000, Mid(IDNumber, 2, 2) + 1900) & "/" & Mid(IDNumber, 4, 2) & "/" & Mid(IDNumber, 6, 2), "yyyy/mm/dd")
      IDData = DateOfBirth
      Dim strYear As String: strYear = ChrW("1587") & ChrW("1606") & ChrW("1607")
      Dim strMnth As String: strMnth = ChrW("1588") & ChrW("1607") & ChrW("1585")
      Dim strDy   As String: strDy = ChrW("1610") & ChrW("1608") & ChrW("1605")
      CalcAge = CalcAgeY(DateOfBirth, Date) & " " & strYear & " " & "," & CalcAgeM(DateOfBirth, Date) & " " & strMnth & " " & "," & CalcAgeD(DateOfBirth, Date) & " " & strDy
    ElseIf stype = 2 Then
      Dim strRegionCode As String: strRegionCode = Mid(IDNumber, 8, 2)
        Select Case strRegionCode
          Case Is = "01": IDData = ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1575") & ChrW("1607") & ChrW("1585") & ChrW("1577")
          Case Is = "02": IDData = ChrW("1575") & ChrW("1604") & ChrW("1573") & ChrW("1587") & ChrW("1603") & ChrW("1606") & ChrW("1583") & ChrW("1585") & ChrW("1610") & ChrW("1577")
          Case Is = "03": IDData = ChrW("1576") & ChrW("1608") & ChrW("1585") & ChrW("1587") & ChrW("1593") & ChrW("1610") & ChrW("1583")
          Case Is = "04": IDData = ChrW("1575") & ChrW("1604") & ChrW("1587") & ChrW("1608") & ChrW("1610") & ChrW("1587")
          Case Is = "11": IDData = ChrW("1583") & ChrW("1605") & ChrW("1610") & ChrW("1575") & ChrW("1591")
          Case Is = "12": IDData = ChrW("1575") & ChrW("1604") & ChrW("1583") & ChrW("1602") & ChrW("1607") & ChrW("1604") & ChrW("1610") & ChrW("1577")
          Case Is = "13": IDData = ChrW("1575") & ChrW("1604") & ChrW("1588") & ChrW("1585") & ChrW("1602") & ChrW("1610") & ChrW("1577")
          Case Is = "14": IDData = ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1604") & ChrW("1610") & ChrW("1608") & ChrW("1576") & ChrW("1610") & ChrW("1577")
          Case Is = "15": IDData = ChrW("1603") & ChrW("1601") & ChrW("1585") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1588") & ChrW("1610") & ChrW("1582")
          Case Is = "16": IDData = ChrW("1575") & ChrW("1604") & ChrW("1594") & ChrW("1585") & ChrW("1576") & ChrW("1610") & ChrW("1577")
          Case Is = "17": IDData = ChrW("1575") & ChrW("1604") & ChrW("1605") & ChrW("1606") & ChrW("1608") & ChrW("1601") & ChrW("1610") & ChrW("1577")
          Case Is = "18": IDData = ChrW("1575") & ChrW("1604") & ChrW("1576") & ChrW("1581") & ChrW("1610") & ChrW("1585") & ChrW("1577")
          Case Is = "19": IDData = ChrW("1575") & ChrW("1604") & ChrW("1573") & ChrW("1587") & ChrW("1605") & ChrW("1575") & ChrW("1593") & ChrW("1610") & ChrW("1604") & ChrW("1610") & ChrW("1577")
          Case Is = "21": IDData = ChrW("1575") & ChrW("1604") & ChrW("1580") & ChrW("1610") & ChrW("1586") & ChrW("1577")
          Case Is = "22": IDData = ChrW("1576") & ChrW("1606") & ChrW("1610") & ChrW("32") & ChrW("1587") & ChrW("1608") & ChrW("1610") & ChrW("1601")
          Case Is = "23": IDData = ChrW("1575") & ChrW("1604") & ChrW("1601") & ChrW("1610") & ChrW("1608") & ChrW("1605")
          Case Is = "24": IDData = ChrW("1575") & ChrW("1604") & ChrW("1605") & ChrW("1606") & ChrW("1610") & ChrW("1575")
          Case Is = "25": IDData = ChrW("1571") & ChrW("1587") & ChrW("1610") & ChrW("1608") & ChrW("1591")
          Case Is = "26": IDData = ChrW("1587") & ChrW("1608") & ChrW("1607") & ChrW("1575") & ChrW("1580")
          Case Is = "27": IDData = ChrW("1602") & ChrW("1606") & ChrW("1575")
          Case Is = "28": IDData = ChrW("1571") & ChrW("1587") & ChrW("1608") & ChrW("1575") & ChrW("1606")
          Case Is = "29": IDData = ChrW("1575") & ChrW("1604") & ChrW("1571") & ChrW("1602") & ChrW("1589") & ChrW("1585")
          Case Is = "31": IDData = ChrW("1575") & ChrW("1604") & ChrW("1576") & ChrW("1581") & ChrW("1585") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1571") & ChrW("1581") & ChrW("1605") & ChrW("1585")
          Case Is = "32": IDData = ChrW("1575") & ChrW("1604") & ChrW("1608") & ChrW("1575") & ChrW("1583") & ChrW("1610") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1580") & ChrW("1583") & ChrW("1610") & ChrW("1583")
          Case Is = "33": IDData = ChrW("1605") & ChrW("1591") & ChrW("1585") & ChrW("1608") & ChrW("1581")
          Case Is = "34": IDData = ChrW("1588") & ChrW("1605") & ChrW("1575") & ChrW("1604") & ChrW("32") & ChrW("1587") & ChrW("1610") & ChrW("1606") & ChrW("1575") & ChrW("1569")
          Case Is = "35": IDData = ChrW("1580") & ChrW("1606") & ChrW("1608") & ChrW("1576") & ChrW("32") & ChrW("1587") & ChrW("1610") & ChrW("1606") & ChrW("1575") & ChrW("1569")
          Case Is = "88": IDData = ChrW("1605") & ChrW("1608") & ChrW("1575") & ChrW("1604") & ChrW("1610") & ChrW("1583") & ChrW("32") & ChrW("1582") & ChrW("1575") & ChrW("1585") & ChrW("1580") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1580") & ChrW("1605") & ChrW("1607") & ChrW("1608") & ChrW("1585") & ChrW("1610") & ChrW("1577")
          Case Else: IDData = ChrW("1575") & ChrW("1604") & ChrW("1585") & ChrW("1602") & ChrW("1605") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1602") & ChrW("1608") & ChrW("1605") & ChrW("1609") & ChrW("32") & ChrW("1594") & ChrW("1610") & ChrW("1585") & ChrW("32") & ChrW("1589") & ChrW("1581") & ChrW("1610") & ChrW("1581") & ChrW("32") & ChrW("40") & ChrW("32") & ChrW("1582") & ChrW("1591") & ChrW("1571") & ChrW("32") & ChrW("1601") & ChrW("1609") & ChrW("32") & ChrW("1603") & ChrW("1608") & ChrW("1583") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1605") & ChrW("1581") & ChrW("1575") & ChrW("1601") & ChrW("1592") & ChrW("1577") & ChrW("32") & ChrW("41")
        End Select
    ElseIf stype = 3 Then
      Dim GenderCode As Long: GenderCode = Mid(IDNumber, 13, 1)
        Select Case GenderCode
          Case Is = 1, 3, 5, 7, 9: IDData = ChrW("1584") & ChrW("1603") & ChrW("1585")
          Case Is = 0, 2, 4, 6, 8: IDData = ChrW("1571") & ChrW("1606") & ChrW("1579") & ChrW("1609")
          Case Else: IDData = ""
        End Select
    ElseIf stype = 4 Then
      IDData = CalcAge
    End If
  End If
End Function


Function CalcAgeY(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeY = vYears
End Function

Function CalcAgeM(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeM = vMonths
End Function

Function CalcAgeD(vDate1 As Date, vdate2 As Date) As String
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If Day(vDate1) = 31 Then vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) - 1
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAgeD = vDays
End Function

على اعتبار أن xxx = الرقم القومى

IDData(xxx, 1)   او    IDData(xxx)   >>--->  تاريخ الميلاد
IDData(xxx, 2)                             >>--->  محافظة الميلاد
IDData(xxx, 3)                             >>--->  النوع
IDData(xxx, 4)                             >>--->  حساب العمر

قاعدة بيانات موظفين - (3).accdb

  • Like 4
  • Thanks 3
رابط هذا التعليق
شارك

أستاذى @ابو جودي
هستأذن حضرتك ممكن الخطا يبقى فى عمود لوحده ماعداً المحافظة 👀

قاعدة بيانات موظفين - (3).rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

4 ساعات مضت, محمد احمد لطفى said:

ممكن الخطا يبقى فى عمود لوحده ماعداً المحافظة

حقيقة آثار فضولي ان اري مرفق اخي وأستاذي @ابو جودي بعد ان اطلعت علي الكود بمشاركته الأولي 

ومن باب الفضول ايضا قمت بوضع رقمي القومي لأنظر هل سيصل الكود الي الصعيد ام لا :rol:

ولا ادري لماذا اتجهت عيني مباشرة الي العمر ولن ما ادهشني ان عمري قد اصبح 12 عاما فقط :blink: 

حقيقة قد شككت في حساباتي انا ولم اشك بكود استاذنا ابو جودي  :biggrin: -

واخذت ادعو له بظهر الغيب ان نبهني ان العمر لم يمضي وشمرت عن ساعد الجد لادرك ماظننت انه قد فات في عمر الشباب - ولات حين ادراك 😔 - 

ولكن قد قمت بالعبث بكود استاذنا وقام بحساب العمر صحيحا علي ما اعتقد :blink: وعدلت بعزل نوع الخطأ بعمود مستقل حسب ما فهمت من كلام الاستاذ محمد صاحب الموضوع

وهذا المرفق بعد كل هذه الثرثرة 

 

قاعدة بيانات موظفين - (3).accdb

ملاحظة قمت بحذف بياناتي الشخصية حتي لا يطلع احد علي العمر الحقيقي :biggrin:

  • Like 2
  • Haha 1
رابط هذا التعليق
شارك

أستاذى @أبو عبدالله الحلوانىربنا يبارك فيك و يحفظك 
وأسف انى مش دقيق فى كلامى 
ممكن يتمسح الخطأ فى الخلايا ماعدا الخلية الاخيرة الى فيها تجميع الأخطاء:signthankspin:

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

في 28‏/5‏/2022 at 00:54, أبو عبدالله الحلوانى said:

عمري قد اصبح 12 عاما فقط 

الا ليت الشباب يعود يوما :biggrin:

بعد جزاكم الله خيرا 

وبعد اعتذراى لاتقطاعى 

انا مش فاهم هو كان فى خطأ فى خساب العمر 

انا للعم كنت تأمد من ارقام حقيقية وكانت الحسابات وكل شئ مضبوط

لو كان هناك اى خلل اعتذر ان العمل على المرفق وانا مريض قد أكون فقد تركيزى بعض الشئ

  • Thanks 1
رابط هذا التعليق
شارك

2 ساعات مضت, محمد احمد لطفى said:

ممكن يتمسح الخطأ فى الخلايا ماعدا الخلية الاخيرة الى فيها تجميع الأخطا

لازم نعمل فكشن ثاني خاص بحقل الاخطاء

هذا جزء من طلبك ...والبقية انت اعملها لانها تحتاج تتبع الاخطاء وماشاء الله كود اخينا ابو جودي يزغلل العيون

قاعدة بيانات موظفين - (3).rar

  • Thanks 1
رابط هذا التعليق
شارك

أستاذى @Eng.Qassim 
جزاك الله خيراً 

أستاذ أبو عبدالله الحلوانى وجد خطأ فى حساب تاريخ الميلاد وتم ضبط الاخطاء فقط أريدها فى اخر عمود فى هذه المشاركة بالاعلى

 

اقتباس

 

 

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

أريد التعديل فى هذا الملف 
 

ممكن يتمسح الخطأ فى الخلايا ماعدا الخلية الاخيرة الى فيها تجميع الأخطاء:signthankspin:

 

قاعدة بيانات موظفين.accdb

رابط هذا التعليق
شارك

12362.png.f901427665c5da5b815f39de7ad98fd9.png

في 10‏/6‏/2022 at 17:17, محمد احمد لطفى said:


أستاذ أبو عبدالله الحلوانى وجد خطأ فى حساب تاريخ الميلاد وتم ضبط الاخطاء

 

12 ساعات مضت, محمد احمد لطفى said:

ممكن يتمسح الخطأ فى الخلايا ماعدا الخلية الاخيرة الى فيها تجميع الأخطاء:signthankspin:

 

في 28‏/5‏/2022 at 00:54, أبو عبدالله الحلوانى said:

وعدلت بعزل نوع الخطأ بعمود مستقل حسب ما فهمت من كلام الاستاذ محمد صاحب الموضوع

قمت بالفعل بجعل الاخطاء تظهر بعمود مستقل وجعلت للخطأ كود مستقل وهو 5 

وما ظننت ان هذا الأمر مازال مطروحا حتي الآن - 

قمت ببعض التعديلات الطفيفة علي الكود بمرفقي السابق واظن ان هذا هو مطلبك

نصيحة صغيرة - والتناصح حق بين المسلمين - وارجو ان لا يزعجك هذا - 

حاول اخي ان تعبث بالكود الذي يقدم اليك بحل موضوعاتك وتنظر ان حذفنا هذه الجملة ماذا سيحدث او غيرنا هنا بهذه الكلمة ماذا سيحدث 

وقم بالبحث عن الكلمة التي تظن انك لا تعرفها - او اطرح سؤالا عنها هنا مثلا - هكذا تعلمت عن نفسي بعض الأشياء - علي قلة ما لدي:yes:

بتحليل الكود ومحاولة تقسيمه وفهم جزئياته سيفتح عليك الكثير من المعرفة والاستنتاجات وفهم منطقية عمل الكود الكثير والكثير بإذن الله 

وأخيرا - اعتذر علي الاطالة وارجو ان لا يزعجك كلامي

وحتي لا يكون ردي مجرد كلام فقط :biggrin: اليك هذا المرفق ارجو ان يوافي طلبك

 

 

جلب البيانات من الرقم القمي ابو جودي.rar

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

أستاذ @أبو عبدالله الحلوانىحاولت العبث بالكود بالفعل لكن ليس لى دراية كافية بالاكواد لم ادرسها و لكن استخدم البرنامج فى عملى 

وفهمت منكم بعض الاشياء جزاكم الله خيراُ

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information