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

إضافة سجل جديد برقم تالي للسجل الحالي


nssj

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

الإخوة الكرام

لدي ملفات فيها ترقيم عشري

واستخدمت الترقيم العشري لإمكانية إدراج سجل بين السجلات

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

والمطلوب أن يقوم أكسس بفعل ذلك تلقائيا

فبمجرد الضغط على زر (إضافة سجل)

يضيف سجلاً جديداً بترقيم عشري يزيد عن السجل الحالي الذي أنا فيه بنسبة

0.1

وهل بالإمكان بعد هذا أن يعيد هو ترتيب السجلات تلقائيا بدل أن أقوم أنا بذلك بعد كل مرة أضيف فيها سجلاً بهذه الطريقة

 

ومرفق الملف المطلوب

book0001.accdb

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

السلام عليكم

هل هذا ما تريد

اتفضل اخى جرب ووافنا بالنتيجه

Private Sub ÃãÑ19_Click()
    Dim LastValue As Currency
    Dim LastID As Integer
    
    LastValue = Me.IDX
    LastID = Me.ID
    
    DoCmd.GoToRecord , , acNewRec
    Me.IDX = LastValue + 0.1
    Me.OrderBy = "IDX"
DoCmd.FindRecord LastID, , True, , True
End Sub

بالتوفيق

book0001.accdb

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

شكرا أخي الكريم أحمد

هذا هو المطلوب

ولكن هل يمكن إضافة للكود بحيث يكون المؤشر في الصفحة الجديدة المضافة

سواء في النموذج المتعدد أو النموذج المفرد

 

ولعل هذا الموضوع يكون مفتاحاً لحل مشكلة إضافة سجل خلال السجلات، وإعادة ترقيم ID  بعد كل تحديث

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

الشكر لله ثم لاخواننا واساتذتنا جزاهم الله عنا كل خير

42 دقائق مضت, nssj said:

ولكن هل يمكن إضافة للكود بحيث يكون المؤشر في الصفحة الجديدة المضافة

سواء في النموذج المتعدد أو النموذج المفرد

هل هذا ما تريد

جرب ووافنا بالنتيجه

Private Sub أمر19_Click()
    Dim LastValue As Currency
    Dim x As Integer
    
    x = Me.ID
    LastValue = Me.IDX

    DoCmd.GoToRecord , , acNewRec
    DoCmd.RunCommand acCmdSaveRecord
    
    Me.IDX = LastValue + 0.1
    LastValue = Me.IDX
    Me.OrderBy = "IDX"

    DoCmd.FindRecord x, acAnywhere, , acSearchAll
    DoCmd.GoToRecord , , acNext
    Me.Nass.SetFocus


End Sub

بالتوفيق

book0001.accdb

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

أحسن الله إليك أخي الكريم

جربته على النموذج المتعدد بلا مشاكل

ولكن في النموذج المفرد  book0002 أضاف السجل الجديد كالمطلوب ولم ينتقل إليه وأعطاني رسالة خطأ

فهل بالإمكان تطبيق الأمر في النموذج المفرد أيضا

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

وقد أفلحت هذه الطريقة في المرة السابقة .. أما بعد تعديل الكود فلم تفلح

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

45 دقائق مضت, nssj said:

ولكن في النموذج المفرد  book0002 أضاف السجل الجديد كالمطلوب ولم ينتقل إليه وأعطاني رسالة خطأ

هذا النموذج بيضيف السجل وينتقل لحقل Nass بناء على  Me.Nass.SetFocus

وهذا كوده

Private Sub أمر17_Click()
Dim LastValue As Currency
LastValue = Me.IDX
DoCmd.GoToRecord , , acNewRec
Me.IDX = LastValue + 0.1
Me.Nass.SetFocus
End Sub

وده تعديل للكود بالمشاركه  السابقه

Private Sub أمر19_Click()
    Dim LastValue As Currency
    Dim x As Integer
    
    x = Me.ID
    LastValue = Me.IDX

    DoCmd.GoToRecord , , acNewRec
    DoCmd.RunCommand acCmdSaveRecord
    
    Me.IDX = LastValue + 0.1
    x = Me.ID
    Me.OrderBy = "IDX"

    DoCmd.FindRecord x, acAnywhere, , acSearchAll
    Me.Nass.SetFocus
End Sub

بالتوفيق

book0001.accdb

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

شرا لك أخي الكريم على تجاوبك

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

لذلك فهذا الملف مرة أخرى وليس فيه إلا النموذج المفرد وهو الأهم بالنسبة لي

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

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

إن كان ذلك بالإمكان

book0002.accdb

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

2 ساعات مضت, nssj said:

شرا لك أخي الكريم على تجاوبك

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

لذلك فهذا الملف مرة أخرى وليس فيه إلا النموذج المفرد وهو الأهم بالنسبة لي

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

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

إن كان ذلك بالإمكان

book0002.accdb 440 kB · 1 download

هل استطيع طبق هذا على الترقيم حسب تاريخ المستندات المدخلة 

معتمدا على ترقيم حسب السنه والشهر واليوم للمسند.

والسبب اني عندي عدة اشخاص لديهم مسندات بعضها مرقم والبعض يحتاج ترفيم بواسطة زر خاص بالترقيم 

مثلا

معي  صالح واحمد ومروان و سعيد 

يعملون مشتروات ومصروفات بعضها بفواتير وبعضها استلامات يدويه 

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

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

ادخل مستند لصالح تاريخه 1/12/2020

يمون رقمه 

20121001

ومستند في تاريخ 2/12/2020

يكون رقم المستند 

20122001

وبعد يومين احضر سعيد مصروفاته بعضها بتاريخ 1/12/2020

يتم الترقيم بزر 

20121002

وله مستندات بتاريخ 3/12/2020

يكون الرقم

20123001

وهكذا بقية اللشخاص 

بس في حدث في زر الترقيم 

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

ولكي يطبق اعتقد تكون البرمجه في مودل 

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

12 ساعات مضت, nssj said:

شرا لك أخي الكريم على تجاوبك

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

لذلك فهذا الملف مرة أخرى وليس فيه إلا النموذج المفرد وهو الأهم بالنسبة لي

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

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

إن كان ذلك بالإمكان

book0002.accdb 440 kB · 4 downloads

الشكر لله ولاخواننا واساتذتنا جزاهم الله عنا كل خير

معك عذرك فاننى مثلك احبو عالطريق وليس الاكسس مجالى ايضا

اتفضل ان شاء الله يكون ما تريد

Private Sub أمر17_Click()

    Dim LastValue As Currency
    Dim x As Integer
    
    LastValue = Me.IDX
    x = Me.ID
'MsgBox x
    DoCmd.GoToRecord , , acNewRec
  
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RunCommand acCmdRefresh
    Me.IDX = LastValue + 0.1
      x = Me.ID
    Me.Requery
    Me.OrderBy = "IDX"
'MsgBox x
    DoCmd.FindRecord x, acAnywhere, , acSearchAll
     
    Me.Nass.SetFocus

End Sub

جرب ووافنا بالنتيجه

بالتوفيق

book0002-1.accdb

10 ساعات مضت, طاهر الوليدي said:

بس في حدث في زر الترقيم 

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

ولكي يطبق اعتقد تكون البرمجه في مودل 

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

وان شاء الله اخوانك واساتذتنا ما بيقصروا باذن الله

بالتوفيق

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

أحسن الله إليك أخي الكريم

النتيجة بحمد الله تمام

ثم إن حسن تجاوبك معي يجعلني أطمع بالمزيد

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

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

 

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

أولها .. أنا حاولت التطفل على المتخصصين بالبرمجة وعمل الأكواد فقمت بعدة محاولات قص ولصق من هنا وهناك ونتج معي كود أعطى النتيجة المطلوبة

سوف أضعه هنا لتنظر فيه أخي الكريم وتعطيني رأيك .. ما هو الأفضل في الأداء والأمان والسرعة لاسيما في قاعدة بيانات كبيرة يتجاوز عدد سجلاتها   (100000) وفي كثير منها عدة صفحات وورد في حقل واحد

Untitled.jpg.42f7664c3b78c086ed6a2dc8e970e1ce.jpg

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

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

النتيجة بحمد الله تمام

الحمدلله الذى بنعمته تتم الصالحات

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

يجعلني أطمع بالمزيد

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

4 ساعات مضت, nssj said:

فقمت بعدة محاولات قص ولصق من هنا وهناك ونتج معي كود أعطى النتيجة المطلوبة

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

وطالما مازلت فالبدايه فنصيحتى لك خد كوبى من الملف الاساسى الذى تم تجميعه واحفظه فى مكان خاص

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

وان شاء الله تتعلم وتصل لمبتغاك وتساعد اخوانك

بالتوفيق اخى

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

شكرا لك أخي الكريم على كلامك الطيب المشجع

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

 

 

وبالإضافة إلى ما سبق سأنتقل للاستفسار الثاني

فقد لاحظت أن حقل (ID) يتحول بعد الكود إلى مفتاح أساسي مع أنه في الجدول الأصلي لم يكن كذلك

وقد خشيت بادئ الأمر أن يتسبب ذلك بمشكلة >> لأن المفتاح الأساسي لكل الملفات التي عندي هو حقل لم أدرجه في المثال، وهو حقل (Mno) لكن بعد إدراجه لم تحدث أي مشكلة

 

المشكلة التي طرأت عندما أضفت بعض الحقول التي أرغب أن تكون مطلوبة ولا يسمح بتركها فارغة، وهو في الملف المرفق (Type)

فتظهر رسالة خطأ عند تطبيق الكود بالنظر إلى أنها فارغة

وجربت مؤقتا أن أتخلص من هذه الرسالة بوضع قيمة افتراضية عشوائية (0) وانتهت المشكلة

لكنني أفضل ألا أجعل في مثل هذه الحقول المطلوبة قيمة افتراضية حتى لا أنسى تعبئتها

بحيث لا يتم الحفظ أو الانتقال من الصفحة قبل تعبئتها بالشكل المطلوب

 

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

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

ولا تنسى أخي الكريم في زحمة هذه المطالب المطلب الأول 😀

book77.accdb

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

الشكر لله ثم لاخواننا واساتذتنا جزاهم الله خيرا

بالنسبه للتعليق على الكود باستخدام اعلى قيمه مفيش مشكله

51 دقائق مضت, nssj said:

وبالإضافة إلى ما سبق سأنتقل للاستفسار الثاني

فقد لاحظت أن حقل (ID) يتحول بعد الكود إلى مفتاح أساسي مع أنه في الجدول الأصلي لم يكن كذلك

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

وملحوظتى عليها لا علاقه بالكود الموضوع بتغيير الحقل لمفتاح اساسى نهائى

 

47 دقائق مضت, nssj said:

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

اتفضل اخى جرب ووافنا بالنتيجه

Private Sub txtType_AfterUpdate()
    Me.Nass.SetFocus
End Sub

Private Sub أمر17_Click()
    Dim LastValue As Currency
    Dim LastID As Integer
    
    LastValue = Me.IDX
    LastID = Me.ID
   
  DoCmd.GoToRecord , , acNewRec
    DoCmd.RunCommand acCmdSaveRecord
    
    Me.IDX = LastValue + 0.1
    Me.OrderBy = "IDX"
    LastID = DMax("[ID]", "book0001")
    DoCmd.FindRecord LastID, , True, , True
 
   Me.txtType.SetFocus
        If Me.txtType.DefaultValue = 0 Then
            If MsgBox("اختار احدى هذه القيم", _
                      vbDefaultButton1 + vbInformation + vbMsgBoxRight, "تنبيه") Then
                Me.txtType = ""
                Me.txtType.SetFocus
                Me.txtType.Dropdown
            End If
    End If
    
End Sub

بالتوفيق

book77.accdb

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

جزاك الله خيراً أخي الكريم

تم المطلوب بحمد الله

بهذه الطريقة أستطيع إضافة سجل خلال السجلات

وهي طريقة خطرت في بالي: الاعتماد على الترقيم العشري كترقيم ثانوي

 

لكن لعل هناك طريقة أكثر احترافية لهذا الغرض: إدراج سجل خلال السجلات وليس في آخرها

دون وجود عمود للترقيم العشري

كما هو الحال في برنامج الشاملة

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

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

مشكلة طارئة

 

بعد أن تم المطلوب في هذا الملف التجريبي الصغير قمت بتجربة الأكواد على  ملف كبير وفيه أكثر من (45000) صف ، في نموذج مفرد

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

x = Me.ID

 وفي الكود الذي اخترعته أنا

LastID = DMax("[ID]", "book0001)"

 

فاجتهدت وغيرت

Dim x As Integer  / إلى /   Dim x As Long

وَ

Dim LastID As Integer   / إلى / Dim LastID As Long

 

فاختفت رسالة الخطأ لكنه  أصبح يدرج الصفحة الجديدة في آخر الملف ولا يضعها مكانها

ولما فتحت النموذج في وضع التخطيط وطلبت منه الفرز بناء على (IDX) وأغلقت النموذج بعد الحفظ أصبح يضع الصفحات في موضعها

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

 

هذه هي المشكلة الأولى، ولكنها يسيرة

المشكلة الأكبر أن هذا الملف رغم عدد سجلاته الكبير فهو ملف مصغر للتجارب، مصغر من حيث حجم النص فلم أجعله بخيار (مذكرة) لذلك تم حذف معظم النصوص

لكن لما جربته على الملف الرئيسي حيث النصوص كاملة بخيار (مذكرة)

رجع ليقف عند الصفحة الأولى، مع ملاحظة انه أصبح يأخذ وقتا أطول

 

فهل حجم الداتا له تأثير على الكود .. وهل من حل

وحجم الملف يتجاوز (100) ميجا ولا يمكن رفعه هنا

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

22 ساعات مضت, nssj said:

تم المطلوب بحمد الله

الحمدلله الذى بنعمته تتم الصالحات

11 دقائق مضت, nssj said:

مشكلة طارئة

مفيش مشاكل باذن الله

12 دقائق مضت, nssj said:

فاجتهدت وغيرت

Dim x As Integer  / إلى /   Dim x As Long

وَ

Dim LastID As Integer   / إلى / Dim LastID As Long

نعم حلك صحيح وبورك فى اجتهادك ماشاء الله والسبب لان المتغير من النوع Integer  يقبل الى { 32,767 } to { -32,768 }

 

 

اما المتغير من النوع Long فهو اكبر راجع هذا الرابط لتتعرف عالمتغيرات اكثر وانواعها

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary

 

24 دقائق مضت, nssj said:

فاختفت رسالة الخطأ لكنه  أصبح يدرج الصفحة الجديدة في آخر الملف ولا يضعها مكانها

ولما فتحت النموذج في وضع التخطيط وطلبت منه الفرز بناء على (IDX) وأغلقت النموذج بعد الحفظ أصبح يضع الصفحات في موضعها

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

هذه هي المشكلة الأولى، ولكنها يسيرة

المشكلة الأكبر أن هذا الملف رغم عدد سجلاته الكبير فهو ملف مصغر للتجارب، مصغر من حيث حجم النص فلم أجعله بخيار (مذكرة) لذلك تم حذف معظم النصوص

لكن لما جربته على الملف الرئيسي حيث النصوص كاملة بخيار (مذكرة)

رجع ليقف عند الصفحة الأولى، مع ملاحظة انه أصبح يأخذ وقتا أطول

فهل حجم الداتا له تأثير على الكود .. وهل من حل

وحجم الملف يتجاوز (100) ميجا ولا يمكن رفعه هنا

ارفع الملف عالمديا فاير وضع الرابط لنرى ويشاركنا اخواننا واساتذتنا

وان شاء الله تتحل المشكله بفضل الله ثم اخواننا واساتذتنا جزاهم الله خيرا

بالتوفيق

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

18 ساعات مضت, nssj said:

هذا هو رابط الملف

وقد أضفت فيه مربع نص للسجل الحالي (CurrentRecord)

فهل يمكن أن يفيد في موضوعنا

https://www.mediafire.com/file/20qs7zojbpxrvlt/book07.rar/file

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

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

بالتوفيق

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

أخي الكريم .. هل أفهم من كلامك أنه قد واجهتك نفس المشكلة التي واجهتني في النموذج الذي أرسلته

حتى أعلم هل المشكلة من هذا النموذج بشكل عام أم هي عندي خاصة

هذا أولا ..

 وثانيا .. أنا أيضاً عملت نموذجا آخر وسارت الأمور بشكل جيد

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

فيظهر أن العقدة في الانتقال لهذا السجل

وكلما كان بعيدا كلما احتاج وقتاً أكثر

 ويبدو أن النموذج الأول كسول ولا يجب الحركة 😀😀

 

على كلٍ .. النتيجة مرضية بحمد الله .. لكن إن وجدت طريقة أخرى لينتقل للسجل المضاف فبها ونعمت .. وهل يمكن الاستفادة من (CurrentRecord)

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

12 ساعات مضت, nssj said:

هل أفهم من كلامك أنه قد واجهتك نفس المشكلة التي واجهتني في النموذج الذي أرسلته

نعم واجهتنى المشكله

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

بالتوفيق

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

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