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

شخابيط وافكار: أنشئ معرّفًا خاصًا وتحكم بشكل كامل في خصائصه -(Control in Special increment prefix ID)-


ابو جودي

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

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

احيانا نريد عمل معرف خاص بنا برمجيا

طبعا يختلف الكود تبعا لاسم الجدول والحقل ونوع الحقل 

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

-استدعاؤها فى زوايا التطبيق المختلفة بكل سهولة 

-امكانية التحكم اثناء استدعاء الوظيفة فى البادئة ان اردت اضافة بادئة ما

-التحكم فى موعد اعادة التعيين ليبدأ العدد من الرقم 1 مرة أخرى سنويا او شهريا او يوميا

الكوووووود

'|---10/04/2022______________________________________________|
'|___www.officena.net________________________________________|
'|                                                           |
'|           _  +-----------officena-----------+ _           |
'|          /o) |             |||||            | (o\         |
'|         / /  |           @(~O^O~)@          |  \ \        |
'|        ( (_  | _   ----oOo--Moh--oOo----- _ |  _) )       |
'|       ((\ \) +/o)----------3ssam---------(o\+ (/ /))      |
'|       (\\\ \_/ /                          \ \_/ ///)      |
'|        \      /                            \      /       |
'|         \____/________Mohammed Essam________\____/        |
'|                                                           |
'|                         10/04/2022                        |
'|                                                           |
'|_____www.officena.net______________________________________|
'|_____Thank you for visiting https://www.officena.net_______|
'======Control in Special increment prefix ID==============================================================================================================================='
'  ____    __    ____ ____    __    ____ ____    __    ____  ______    _______  _______  __    ______  _______ .__   __.      ___         .__   __.  _______ .___________.  '
'  \   \  /  \  /   / \   \  /  \  /   / \   \  /  \  /   / /  __  \  |   ____||   ____||  |  /      ||   ____||  \ |  |     /   \        |  \ |  | |   ____||           |  '
'   \   \/    \/   /   \   \/    \/   /   \   \/    \/   / |  |  |  | |  |__   |  |__   |  | |  ,----'|  |__   |   \|  |    /  ^  \       |   \|  | |  |__   `---|  |----`  '
'    \            /     \            /     \            /  |  |  |  | |   __|  |   __|  |  | |  |     |   __|  |  . `  |   /  /_\  \      |  . `  | |   __|      |  |       '
'     \    /\    /       \    /\    /       \    /\    / __|  `--'  | |  |     |  |     |  | |  `----.|  |____ |  |\   |  /  _____  \   __|  |\   | |  |____     |  |       '
'      \__/  \__/         \__/  \__/         \__/  \__/ (__)\______/  |__|     |__|     |__|  \______||_______||__| \__| /__/     \__\ (__)__| \__| |_______|    |__|       '
'                                                                                                                                                                           '
'==========================================================================================================================================================================='


Function MySpid( _
                 ByRef strFieldName As String, _
                 ByRef strTableName As String, _
                Optional strPrefixe As String = vbNullString, _
                Optional strResetYYorMMorDD As String = "YY", _
                Optional nDay As Integer = 0, _
                Optional nMonth As Integer = 0, _
                Optional nYear As Integer = 0) As String
  
  Dim strLinkCriteria   As String
  Dim strOldID          As String
  Dim strNxtID          As Long
  
  Dim intLenPrefixe As Integer
  
  Const intNumberOfZeros = 6
  intLenPrefixe = Len(strPrefixe) + 1
  
  
    If nDay = 0 Then nDay = Format(Date, "dd")
    If nMonth = 0 Then nMonth = Format(Date, "mm")
    If nYear = 0 Then nYear = Year(Date) - 2000
    
    Select Case strResetYYorMMorDD
        Case Is = "YY": strLinkCriteria = Nz(Right(Mid(Nz(DLast(strFieldName, strTableName), 0), intLenPrefixe, 6), 2), 0) = nYear     ' Yearly Reset
        Case Is = "MM": strLinkCriteria = Nz(Right(Mid(Nz(DLast(strFieldName, strTableName), 0), intLenPrefixe, 4), 2), 0) = nMonth    ' Monthly Reset
        Case Is = "DD": strLinkCriteria = Nz(Right(Mid(Nz(DLast(strFieldName, strTableName), 0), intLenPrefixe, 2), 2), 0) = nDay     ' Daily Reset
    End Select
    
    strOldID = Nz(DLast("" & strFieldName & "", strTableName, strLinkCriteria), 0)

    strNxtID = CLng(Right(strOldID, intNumberOfZeros))
    strNxtID = strNxtID + 1
    MySpid = strPrefixe & Format(nDay, "00") & Format(nMonth, "00") & Format(nYear, "00") & _
             String(intNumberOfZeros - Len(CStr(strNxtID)), "0") & CStr(strNxtID)

End Function

يتم استدعاء الوظيقة بشكل عام من خلال الكود الاتى

MySpid("FldName", "TblName")

فى هذه الحالة يتم اعادة تعيين الترقيم سنويا 

------------

ولكن للتحكم الكامل ولتغيير الاعدادات

MySpid("FldName", "TblName", "AnyPrefixe", "yy  or  MM  OR  DD","DayDate","MonthDate","YearDate")

AnyPrefixe
البادئة التى تريد أن تبدأ الترقيم بها غيرها كما تريد :wink2:

MySpid("FldName", "TblName", "AnyPrefixe")

 

yy  or  MM  OR  DD

لو اردت اعادة تعيين الترقيم سنويا سوف تكون  yy وبدون استخدام هذا الجزء هذا هو الاحتيار المفضل تبعا للكود

MySpid("FldName", "TblName", "AnyPrefixe", "yy")

لو اردت اعادة تعيين الترقيم شهريا سوف تكون MM  

MySpid("FldName", "TblName", "AnyPrefixe", "MM")

لو اردت اعادة تعيين الترقيم يوميا سوف تكون DD

MySpid("FldName", "TblName", "AnyPrefixe", "DD")

---------

DayDate لتبدأ الترقيم من خلال رقم يوم محدد يعنى مثلا لو اردنا الترقيم يبدا من يوم 23

MonthDate لتبدأ الترقيم من خلال رقم شهر محدد يعنى مثلا لو اردنا الترقيم يبدا من شهر 09

YearDate لتبدأ الترقيم من خلال رقم سنه محدد يعنى مثلا لو اردنا الترقيم يبدا من عام 21

 

اجمل الامنيات بالاستمتاع مع هذا الكود وهذه الافكار :fff:
هذا الاصدار الاول من كتابتى للكود لم اتمكن من التجربة بشكل كبير..
فضلا وكرما موافاتنا بالنتيجة فى حالة حدوث اى خطأ

 

Special increment prefix ID.accdb

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

من روائع ابا جودي .. يضاف الى مكتبة المنتدى

واضح ما تقوم به الوظيفة .. احتواء شامل لعملية الترقيم  

مع ما تختصره من عمليات تكرار كتابة الاكواد

جزاك الله خيرا وكتبه في ميزان حسناتك .

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

2 ساعات مضت, ابوخليل said:

من روائع ابا جودي .. يضاف الى مكتبة المنتدى

واضح ما تقوم به الوظيفة .. احتواء شامل لعملية الترقيم  

مع ما تختصره من عمليات تكرار كتابة الاكواد

جزاك الله خيرا وكتبه في ميزان حسناتك .

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

 

جارى العمل على المرفق الان وفور الانتهاء منه سوف اقوم برفع المرفق فى الموضوع لم يسعفنى الوقت بسبب اقتراب موعد الافطار اثناء كتابة الموضوع

كل عام وانتم بخير

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

دائما تنزل الميدان بقوة باش مهندس @ابو جودي :clapping:

 

رااااااااااااائع كروعتك .. 

حاجة كاملة الدسم وشاملة لكل الاحتياجات 😊

دائما تحاول تحط الحلول النهائية لمشاكل الناس .. الله يوفقك يا باشه 😃:fff:

 

>>>>>> يضاف لمكتبة الأكوااااااااااااد 😁👌🏼

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

3 ساعات مضت, Moosak said:

رااااااااااااائع كروعتك .. 

انتم الأروع باش مهندس @Moosak :fff: بمساندة طلبة العلم ورفع روحهم المعنوية بكلماتكم الرقراقة البراقة

3 ساعات مضت, Moosak said:

حاجة كاملة الدسم وشاملة لكل الاحتياجات 😊

دائما تحاول تحط الحلول النهائية لمشاكل الناس .. الله يوفقك يا باشه 😃:fff:

هذا فضل الله تعالى اولا واخيرا فالعبد الفقير الى الله مجرد سبب سببه الله تعالى .. لله تعالى الحمد والمنة

3 ساعات مضت, Moosak said:

>>>>>> يضاف لمكتبة الأكوااااااااااااد 😁👌🏼

واضع انه سوف نطالب بفرض ضريبة على هذه المكتبة :biggrin:

  • Haha 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.

×
×
  • اضف...

Important Information