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

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

قام بنشر

الأخوة الكرام آمل مساعدتي في ترقيم حقل رقم الحركة داخل نموذج (movement_in) بحيث يبدأ بحرفي (EN) ثم رقم السنة الحالية (22) ثم الشهر الحالي واليوم ليصبح الشكل النهائي كالتالي (EN220408000001)

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

الحركة.accdbFetching info...

قام بنشر
  في 8‏/4‏/2022 at 04:19, أحمد وجيه said:

ولكن لم استطع اضافة الشهر واليوم

Expand  

طيب للسنة استخدم  
 

Format(Date(),"yy")

وللشهر استخدم 

Format(Date(),"mm")

ولليوم استخدم 

Format(Date(),"dd")

 

ولى عودة مرة اخرى للموضوع لتوضيح واضافة بعض الملاحظات داخل قاعدتك:wink2:

ولكن اعطنى قليل من الوقت:yes:

قام بنشر

اتفضل الكود بعد التعديل 

On Error Resume Next
Dim xLast, xNext As Integer
Dim prtyr, prtMt, prtDy, prtTxt As Integer
prtyr = Format(Date, "yy")
prtMt = Format(Date, "mm")
prtDy = Format(Date, "dd")
prtTxt = CLng(Mid(DMax("movement_N", "movement"), 2, 2))
xLast = CLng(Right(DMax("movement_N", "movement", prtTxt = prtyr), 6))
If IsNull(xLast) Then
xNext = 1
Else
xNext = xLast + 1
End If
Me!movement_N = "EN" & prtyr & prtMt & prtDy & Format(xNext, "000000")

 

قام بنشر
  في 8‏/4‏/2022 at 12:11, ابو جودي said:
On Error Resume Next
Dim xLast, xNext As Integer
Dim prtyr, prtMt, prtDy, prtTxt As Integer
prtyr = Format(Date, "yy")
prtMt = Format(Date, "mm")
prtDy = Format(Date, "dd")
prtTxt = CLng(Mid(DMax("movement_N", "movement"), 2, 2))
xLast = CLng(Right(DMax("movement_N", "movement", prtTxt = prtyr), 6))
If IsNull(xLast) Then
xNext = 1
Else
xNext = xLast + 1
End If
Me!movement_N = "EN" & prtyr & prtMt & prtDy & Format(xNext, "000000")
Expand  

عدلت الكود ولكن لاحظت أنه لايتم زيادة الرقم تصاعدي وانه يتكرر نفس الرقم في كل مرة

يعني المفروض اول سجل بيكون كالتالي EN220408001 فالسجل الثاني يكون رقمه EN220408002 وهكذا تصاعدي

الحركة.accdbFetching info...

  • Haha 1
قام بنشر

بالنسبة للملاحظات

وجدتك تستخدم DLookup اكثر من مرة فى نفس الحدث لمجرد احضار بيانات من حقول اخرى لنفس الجدول

اتفضل اهديكم احضار بيانات دفعة واحدة من اكثر من حقل عن طريق المصفوفات من خلال الـ DLookup 
على طريقة استاذى الجليل ومعلمى القدير و والدى الجبيب الاستاذ @jjafferr :fff:

Dim strDLookupFlds  As String
Dim stLinkCriteria  As String
Dim MyVariable      As String
Dim Arry()          As String
Dim ChosFld         As String

    MyVariable = 1
    stLinkCriteria = "[FldCriteria]=" & MyVariable                  '|Numeric
    
    'MyVariable = "Mahmoud"
    'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'"         '|String
    
    'MyVariable = "03/01/1982"
    'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#"         '|Date
    
    strDLookupFlds = DLookup("[Fld1] & '|' & [Fld2] & '|' & [Fld3] & '|' & [Fld4] & '|' & [Fld5] & '|' & [Fld6] & '|' & [Fld7] & '|' & [Fld8]& '|' & [Fld9]", "[tblName]", stLinkCriteria)
    Arry = Split(strDLookupFlds, "|")
        
        Debug.Print strDLookupFlds
        
        ChosFld = Arry(0)
        Debug.Print ChosFld
        
'Arry(0) = Fld1
'Arry(1) = Fld2
'Arry(2) = Fld3
'Arry(3) = Fld4
'Arry(4) = Fld5
'Arry(5) = Fld6
'Arry(6) = Fld7
'Arry(7) = Fld8
'Arry(8) = Fld9

 

  في 8‏/4‏/2022 at 12:29, أحمد وجيه said:

عدلت الكود ولكن لاحظت أنه لايتم زيادة الرقم تصاعدي وانه يتكرر نفس الرقم في كل مرة

 

Expand  

طبعا لن يزيد الان صيام :biggrin:

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

ابشر سوف ارى ما يمكن عمله

قام بنشر

اتفضل 

انا عملت لك الكود بالشكل ده حتى يكون مرن فيمكن استخدامة لاى قاعدة ومع اى جدول :wink2:

Function MyID(ByRef strFieldName As String, ByRef strTableName As String)
    Dim lngNextNumber       As Long
    Dim strNextNumber       As String
    Dim strNewID            As String
    Const intNumberOfZeros = 6
    
    lngNextNumber = Nz(Right(DLast("[" & strFieldName & "]", strTableName), intNumberOfZeros), 0) + 1
    strNextNumber = String(intNumberOfZeros - Len(CStr(lngNextNumber)), "0") & CStr(lngNextNumber)
    strNewID = "EN" & Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd") & strNextNumber
    MyID = strNewID
End Function

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

TextBox= MyID("movement_N", "movement")

 

ملاحظة

ممكن تتحكم فى عدد الاصفار من خلال تغيير الرقم 6  فى السطر تبعا للعد اللى تبغاه انت

Const intNumberOfZeros = 6

 

 

الحركة (3).accdbFetching info...

  • Like 1
قام بنشر

اسمحلي أستاذي الغالي @ابو جودي المشاركة معكم بهذه الطريقة التي عملتها سابقا وعدلتها للتناسب مع طلب الأخ العزيز @أحمد وجيه 🙂 

للعلم أن الكود يعيد الترقيم من 1 بداية كل سنة جديدة 🙂 ويمكن تغيير ذلك إن شئت المواصلة لكل الأعوام ..

image.png.94ffa1beeea9f576bc9252021323597a.png

 

الكود :

Public Function NewID(strFieldinTable As String, strTable As String) As String

'This function returnes Value like This : EN220409000001

Dim T, CY, Y, M, D, OldN, NewN, LID

LID = DMax(strFieldinTable, strTable) ' Brings The last ID from the table

T = "EN"
CY = Mid(LID, 3, 2)
Y = Format(Date, "yy")
M = Format(Date, "mm")
D = Format(Date, "dd")
OldN = Right(LID, 6)
NewN = OldN + 1

If CY = Y Then
    NewID = T & CY & M & D & Format(NewN, "000000")
Else
    NewID = T & Y & M & D & "000001"
End If
End Function

ويتم استدعائه في حدث قبل الادراج هكذا :

Me!movement_N = NewID("movement_N", "movement")

 

 

الحركة.accdbFetching info...

  • Like 1
قام بنشر

شاكر لأستاذنا الغالي  @ابو جودي وأستاذنا الغالي @Moosak على مساهمتكم الرائعة في حل مشكلتي :fff:

بعد تطبيق الطريقتين اكتشفت التالي :

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

يوم 08/04/2022 هيبدأ الرقم بـ EN220408001

ويوم 09/04/2022 مش هيكمل على ترقيم اليوم السابق لأ هيبدأ من الأول ويبقى الرقم كده EN220409001

2 - كان من المفترض ان رقم الحركة في شاشة movement_in بيبدأ بـ EN وفي شاشة movement_OUT بيبدأ بـ EX ودي أنا عدلتها باستخدام نفس الكود 

لكن المطلوب انه في كل حالة رقم الحركة يبقى تسلسلي حسب نوع الحركة اللي هي دخول وبشير لها بـ EN وخروج اللي بشير لها بـ EX وده كالتالي :

EN220409001

EN220409002

EN220409003

EX220409001

EX220409002

EX220409003

وهكذا الى ان يتغير اليوم فيبدأ الترقيم مرة أخرى من رقم 001

مش عارف بقى في حل للموضوه ده ولا لأ 😅

339395278_.JPG.7966f4ee811202d8312d37a873677195.JPG

الحركة.accdbFetching info...

  • Confused 1
  • تمت الإجابة
قام بنشر

تم التعديل أخي أحمد حسب المعطيات الجديدة ..

في المرة القادمة عليك أن تسرد جميع المعطيات من البداية لكي يتم كتابة الكود حسب المعطيات 🙂 

فأنت لم تذكر بأن الترقيم يتجدد يوميا من قبل 😏

الحركة (1).accdbFetching info...

  • Like 1
  • Thanks 1
قام بنشر

 

  في 9‏/4‏/2022 at 12:19, Moosak said:

لكي يتم كتابة الكود حسب المعطيات 🙂 

Expand  

طيب ولماذا نكتب الكود حسب المعطيات

ليه ما نكتب كود ذكى وهو يشتغل لحاله حسب حاجة المستخدم

يعنى بدون لا تعديل فى كتابة الاكواد ولا شئ ويقدر يشتغل مع اى قاعدة او اى جدول او اى حقل مهما كانت الاسماء واختلفت :wink2:

كمان يكون اكثر ذكاء يقدر يبدا الترقيم بالبادئة الى يريدها المستخدم   en  , ex  or  Mossa 

كمان يكون اكثر ذكاء يقدر يقدر يعمل اعادة التعيين للترقيم حسب الحاجة يوميا او شهريا او سنويا 

يعنى يعمل  رسيت لوحدة حسب انت عاوزه يعمل الرسيت امتى من نفسه لوحده بدون ما تدخل تعدل شئ فى الكود

فكر كده شوية يا باش مهندس ودعبس هنا وهناك @Moosak :fff: الاقيش عندك الكود الذكى ده

 

لو مش عتدك اتفضل :wink2:

 

 

  • Thanks 1
قام بنشر
  في 10‏/4‏/2022 at 15:09, ابو جودي said:

فكر كده شوية يا باش مهندس ودعبس هنا وهناك @Moosak :fff: الاقيش عندك الكود الذكى ده

 

لو مش عتدك اتفضل :wink2:

Expand  

هو أنا هلحق أعمل حاجة قبلك وأنت اللي يسموك @ابو جودي  ("قاهر الأكسس")Cstr  حتى إني كتبتهالك في دالة  😂

أنت شخص متفجر بالأفكار ما شاء الله عليك 😄

وأنا كمان حاليا شغال على حاجة كبيرة .. سترى النور قريبا إن شاء الله 😉💪🏼

  • Haha 1
قام بنشر
  في 10‏/4‏/2022 at 20:15, Moosak said:

هو أنا هلحق أعمل حاجة قبلك

Expand  

كلنا واحد والمهم هو الوصول الى الغاية :wink2: واعوذ بالله واياكم من القهر

  في 10‏/4‏/2022 at 20:15, Moosak said:

أنت شخص متفجر بالأفكار ما شاء الله عليك 😄

Expand  

جزاكم الله خيرا :fff:...

لكن والله ان الاجابات والحلول رزق من الله تعالى وفقط يستعملنى الله تعالى لاكون سبب ليس الا 
قاللهم اسأل ان يستعملنى فى الخير دائما وابدا 

 

  في 10‏/4‏/2022 at 20:15, Moosak said:

شغال على حاجة كبيرة .. سترى النور قريبا إن شاء الله

Expand  

ما شاء الله .. اسأل الله لكم التوفيق والسداد

انتظر على أحر من الجمر بزوغ هذا النور ان شاء الله 

 

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

على سبيل المثال 

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

ولكن مع سررد الطلبات تباعا وبعد تقديم الحلول

صالت وجالت بنات افكارى لوضع الكود بشكل وظيفة عامة تلبى كل الاحتياجات دون تكرار الاكواد تبعا لكل حالة فلو لاحظت فى تلك الاقتباسات

  في 9‏/4‏/2022 at 10:54, أحمد وجيه said:

- رقم الحركة مش بيتغير يومي

Expand  

وكذلك 

  في 9‏/4‏/2022 at 10:54, أحمد وجيه said:

2 - كان من المفترض ان رقم الحركة في شاشة movement_in بيبدأ بـ EN وفي شاشة movement_OUT بيبدأ بـ EX ودي أنا عدلتها باستخدام نفس الكود 

لكن المطلوب انه في كل حالة رقم الحركة يبقى تسلسلي حسب نوع الحركة اللي هي دخول وبشير لها بـ EN وخروج اللي بشير لها بـ EX وده كالتالي :

EN220409001

EN220409002

EN220409003

EX220409001

EX220409002

EX220409003

Expand  

وبذلك لابد من كتابة الاكواد اكثر من مرة تبعا لكل جدول ولكل حالة للبادئة

فـ أنا الان أحاول جاهدا ان تكون الأكواد فى وظائف عامة قدر الامكان لتلبى كل الاحتياجات قدر الامكان للتقليل من استخدام الاكواد مستقبلا :yes:

وبفضل الله تعالى والحمد لله الذى هدانا لهذا وما كنا لنهتدى لولا ان هدانا الله عزوجل 
تم الحصول على نتيجة من وجهة نظرى المتواضعة مرنة وشاملة وأحسبها كافية و وافية

  • Like 1
قام بنشر
  في 10‏/4‏/2022 at 21:49, ابو جودي said:

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

Expand  

أنا معاك تمام بشا مهندس محمد في هذي النقطة 👍🏻 ، لكن أحس المنتدى نايم هذي اليومين ، الناس مشغولة بالعبادة واستغلال الشهر الكريم، الله يتقبل من الجميع 🙂 .

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