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

بداية كل سنة ترقيم جديد


إذهب إلى أفضل إجابة Solved by jjafferr,

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

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

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

المرفق يحتاج ترقيم جديد بداية كل سنة ( حقل الرقم ليس مفتاحا ) وفتح جدول جديد اي يتم خزن بيانات كل سنة بجدول منفصل ضمن القاعدة .

تحياتي وشكرا لكم .

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

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

وعليكم السلام:smile:

 

11 ساعات مضت, عذاب الزمان said:

المرفق يحتاج ترقيم جديد بداية كل سنة ( حقل الرقم ليس مفتاحا ) وفتح جدول جديد اي يتم خزن بيانات كل سنة بجدول منفصل ضمن القاعدة .

 

وبدون انزال برنامجك ، فالفكرة ليست صحيحة في عالم قاعدة البيانات:blink:

فكرة قاعدة البيانات هي ، ادخال بيانات ، فرز وتصفية ، اخراج تقارير:smile:

فالطريقة الصحيحة هي ان يكون جدول واحد لجميع السنوات ، والفرز والتصفية يكون بحقل فيه تاريخ السنه التي تريدها (مثل تاريخ الصادر او الوارد) ، او اذا كلا ولابد ، فاضافة حقل للسنه:smile:

 

جعفر

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

استاذ جعفر 

تحية خاصة مني لشخصكم الكريم

البرنامج هو ذات البرنامج الذي سبق وان ساعدتني في تعديل كود التقارير الصادر والوارد  ولم ارفقه لظني بعدم الحاجة اليه ...

استاذي لو كام ممكنا ان تكون كل سنة في جدول فهي افضل بلاشك وان كان ذلك معقدا فليكن جدولا واحدا 

تحياتي اخي المحترم 

 

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

العفو ، الظاهر اني لم استطع توصيل المعلومة:blink:

ورايت المرفق في مشاركتك الاولى ، ولم انزله ، لأن فكرة عمل جدول مستقل لكل سنة هي فكرة غير صحيحة:blink:

 

أخونا العود ابوخليل ، عنده مشاركه للترقيم السنوي ، وان شاء الله تستفيد مناقشات الموضوع الثريّة بالفائدة ، وبالاساليب المختلفة للترقيم ، ومن مرفقاته كذلك:

 

جعفر

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

استاذي العزيز

سبق وان اطلعت على كود الاستاذ الكبير ابو خليل

جربت الكود ولم اجد تغيرا بالترقيم

ارجو معاينة المرفق 

مع التقدير

 

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

تم تعديل بواسطه عذاب الزمان
رابط هذا التعليق
شارك

تفضل:smile:

 

1. الحقل no في جدولك هو حقل ترقيم تلقائي ، فلا يمكنك ان تعطيه التسلسل الذي تريد ،

2. اضف حقل Seq الى جدولك ، بنوع رقم ، وسنستخدمه للتسلسل السنوي ،

3. اسم زر الامر في النموذج تم تغييره الى cmd_New_Number ،

 

عليه وبعد تعديل كود أخي ابو خليل ليتماشى مع مسميات جدولك ، ضع هذا الكود على نقر الزر:

Private Sub cmd_New_Number_Click()

    On Error Resume Next

    Dim xLast, xNext As Integer
    Dim prtyr, prtTxt As Integer
    
    prtyr = Right(DatePart("yyyy", date), 2)
    prtTxt = Left(DMax("Seq", "tb1"), 2)
    xLast = DMax("Seq", "tb1", prtTxt = prtyr)

    If IsNull(xLast) Then
        xNext = 1
    Else
        xNext = Val(Mid(xLast, 3, 5)) + 1
    End If

    Me!Seq = prtyr & Format(xNext, "00000")
    
End Sub

 

جعفر

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

استاذي الغالي

عدلت الجدول كما اردت ووضعت الكود في زر الامر فلم يحصل شيء ووضعته في حدث الفورم قبل الادراج ولم يحدث شي جديد ... 

حيث اصبح ادخال نفس الرقم الصادر اكثر من مرة في نفس اليوم !!!!! وهذه مشكلة طبعا .

ارجو تعديل المرفق استاذي الغالي

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

تم تعديل بواسطه عذاب الزمان
رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل برنامجي:smile:

 

واضفت سطر في الكود لكي يتأكد من عدم وجود رقم تسلسلي في حقل النموذج

 

جعفر

679.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip

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

استاذي الغالي

اولاً اسف لازعاجك 

ثانياً البرنامج يعطي نفس الرقم لنفس اليوم ونفس الشهر ونفس السنة !!!!! وهذه غير صحيحة في كتب الصادر والوارد اذ لكل صادر او الوارد رقم ثابت لايتكرر على مدار السنة وهذا امر معلوم ومفهوم .

ثالثاً ان ما اردته هو ترقيم جديد كل بداية سنة جديدة يعني رقم الصادر 1 في 1/1/2016  ويصعد التسلسل دون تكرار خلال سنة كاملة الى اخر يوم ويبدأ الترقيم من جديد 1 في 1/1/2017 وهكذا .

علماً اني لا اريد ظهور الرقم بهذه الصيغة 1400001 بل بالترقيم الاعتيادي 1 او 01 ليس اكثر من ذلك .

ان الكود المرافق بالمثال لايحقق المراد من الموضوع في ( ثانياً) بل زاده تعقيداً كما في (اولاً ) لكون الترقيم اصبح ترقيمها مكرراً لنفس التاريخ  !!!!!!

اتمنى ان تكون الفكرة قد وصلت استاذي العزيز 

وبانتظار مساعدتكم اساتذتي واخوتي الاعزاء فلم يبق لي على اكمال برنامجي غير ( موضوع الترقيم) و ( موضوع السكنر) .

679.ترقيم جديد كل سنة جديدة وبجداول جديدة.rar

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

أخي الفاضل:smile:

 

المشكلة عندك انك مستخدم احد اسماء الاكسس المحجوزة ، الحقل date ،

والكود يشير الى الامر date (يعني تاريخ اليوم) ،

فالبرنامج بدل ان يأخذ القيمة من الامر ، كان يأخذ قيمة الحقل:blink:

 

انا غيّرت اسم الحقل في الجدول الى date1 ، ومشى الحال ،

اما موضوع التنسيق وعدد الاصفار ، فإذا اردته بدون اصفار ، استعمل الكود التالي ليصبح ترقيمك 171 ، 172 ... ، 1710 ، وهكذا:

Private Sub cmd_New_Number_Click()

        
    If Len(Me.Seq & "") <> 0 Then Exit Sub
    
    On Error Resume Next

    Dim xLast, xNext As Integer
    Dim prtyr, prtTxt As Integer
    
    prtyr = Right(DatePart("yyyy", date), 2)
    prtTxt = Left(DMax("Seq", "tb1"), 2)
    xLast = DMax("Seq", "tb1", prtTxt = prtyr)

    If IsNull(xLast) Then
        xNext = 1
    Else
        xNext = Val(Mid(xLast, 3)) + 1
    End If

    'Me!Seq = prtyr & Format(xNext, "00000")
    Me!Seq = prtyr & xNext
    
End Sub

 

جعفر

679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip

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

استاذ جعفر

سحبت المرفق الي حضرتك عدلت عليه 

قمت بتجربته لم يتغيير شيء ... ولاحظ فيه قد ادخلت رقم 1 بنفس التاريخ اكثر من مرة ولاحظ الجدول ستجد كم حقل رقم 1 بذات التاريخ 

ايضاً قمت بتعطيل كل الكود وقمت بالادخال كان يعمل بنفس الطريقه !!!!!  وكأن الكود في وادي والحقول في واد اخر :biggrin:

اعرف اني ازعجتك كثيرا لكن اين المفر :jump: يا استاذ جعفر .

 

679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.rar

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

همممم

اسمح لي اعمل بخور وارجع لك ، محتاج مساعدة:wink2:

 

طيب خلينا نشوف اللي تشوفه انت:

انزل مرفقي في مشاركتي رقم 10 اعلاه (علشان انا وانت نكون نشتغل على نفس البيانات) ، واخرج الملف من accdb. من الملف المضغوط وانزله في اي مجلد ، ثم افتح البرنامج ،

وعندما يأتيك الشريط الاصفر ، اضغط على الزر اللي في النص "تمكين المحتوى"

679.1.Clipboard04.jpg

.

1. ادخل في الكود ، واضغط على مكان النقطة ، وستجد ان السطر اصبح لونه بُني

679.1.Clipboard01.jpg.0e432be997fac6c7c51191ba8dbc73ad.jpg

.

2. اذهب الى النموذج ، وانتقل الى سجل لا يوجد فيه رقم تسلسلي ، وانقر على زر الامر ،

3. ستجد ان الاكسس ادخلك في الكود ، واصبح لون السطر اصفر

679.1.Clipboard02.jpg.5ca0522e50eb022b12034ffff3e432a7.jpg

.

4. اضغط على زر F8 على الكيبورد ، والذي المفروض ان ينقلك الى السطر التالي ويظلله باللون الاصفر (معناه انه لم يتم القيام بأمر هذا السطر بعد) ،

5. يمكنك وضع الفأرة (وبدون نقر) على اي من المتغيرات ، وستظهر لك قيمة المتغير (الاسطر التي فوق اللون الاصفر) ،

6. لما توصل الى السطر End Sub ويصبح لونه اصفر ، ضع الفأرة على متغيرات السطر الذي قبله ، على هذه المتغيرات Me!Seq ، prtyr ، xNext واخبرنا قيمة كل واحدة منها

679.1.Clipboard03.jpg.a1aaa6bff6975d81d1b52d323da7735d.jpg

 

 

جعفر

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

استاذ جعغر

كل كلمات الشكر فليلة بحقك

اشتغل البرنامج وتمام التمام

الله يوفقك ويرحم والديك 

وشكرا للمنتدى واعضاءه الكرام

وساعود لاحقا للسؤال عن موضوع السكنر بموضوع جديد  ... وما تخلص مني استاذي الغالي .

:wavetowel::jump::biggrin:

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

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

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

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

Private Sub date1_AfterUpdate()
    If Len(Me.Seq & "") = 0 Then Me.Seq = Nz(DMax("[Seq]", "tb1", Left(DMax("[Seq]", "tb1"), 2) = Right(Year([date1]), 2)), Right(Year([date1]), 2) & 0) + 1 Else Exit Sub
End Sub

 

679.ترقيم جديد كل سنة جديدة.rar

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

22 دقائق مضت, Shivan Rekany said:

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

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

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


Private Sub date1_AfterUpdate()
    If Len(Me.Seq & "") = 0 Then Me.Seq = Nz(DMax("[Seq]", "tb1", Left(DMax("[Seq]", "tb1"), 2) = Right(Year([date1]), 2)), Right(Year([date1]), 2) & 0) + 1 Else Exit Sub
End Sub

 

679.ترقيم جديد كل سنة جديدة.rar

حياك الله اخوي شفان:smile:

 

اشوفك عملت الكود مثل اخونا رمهان ، كود مقتضب:smile:

انا ما احب هذا النوع من الكود ، لأنه مو سهل فهمه ، والاسوء هو محاولتك تغييره بعد حوالي شهر ، حيث تكون نسيت تفاصيله:blink:

والأهم هو شبه استحالة تغييره/تعديله/تضبيطه من صاحب السؤال:blink:

 

ولكن الكود بهذه الطريقة لا يأتي إلا من محترف:clapping:

 

جعفر

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

استاذ جعفر

المشكلة كانت في نسخة اكسس على الحاسب عندي ولم تكن المشكلة بالكود ...

وشكرا لك اخي شفان على مشاركتك ومحاولة مساعدتي ، والاستاذ جعفر ماقصر .

 

 

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

وعليكم السلام:smile:

 

سؤال:

1. هل قصدك ان الرقم المسلسل يبدأ من اليوم الى ما لا نهاية من السنوات ، او

2. الرقم المسلسل يبدأ سنويا؟

 

اذا جوابك كان رقم 2 ، فيجب وجود حقل في الجدول فيه معلومة عن تاريخ ادخال السجل ،

وانا دائما يكون عندي حقلين في جميع الجداول اللي اعملها:

Auto_ID : ترقيم تلقائي ،

Auto_Date : نوع تاريخ ، ونضع القيمة الافتراضية التالية في الجدول: Now

بهذه الطريقة ، يكون كود الترقيم:

    If Len(Me.Seq & "") <> 0 Then Exit Sub
    
    Me.Seq = Nz(DMax("[Seq]", "tb1", "year([Auto_Date])=" & Year(Now)), 0) + 1

 

جعفر

679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip

  • Like 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