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

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

قام بنشر

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

عند توزيع ملف الاكسس على اكثر من جهاز على الشبكة.. تظهر مشكلة تعارض الترقيم
عند انشاء المستخدمين فاتورة في نفس الوقت يظهر الرقم نفسة وعند بدء ادخال البيانات تظهر هذه الرسالة 

 

400797318_01.png.cfa8faec7c5a125394ca1499260a6eac.png

 

علماً يتم أستخدام ترقيم كل حركة عبر دالة في المديول
فمثلاً يبداء ترقيم فاتورة بيع  A1001 و شراء M1001 .. ألخ وذلك عبر القيمة الافتراضية لحقل رقم الفاتورة

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

=IIf(IsNull(DMax("[id]";"items")+1);1;DMax("[id]";"items")+1)

فما حل  المشكلة ؟؟؟

 

مرفق ملف للتعديل:

InvoiceSale_6.accdb

قام بنشر

وعليكم السلام 🙂

 

الحل بأن تضع هذا الكود في حدث ، وبعد اخذ الرقم التالي مباشرة تحفظ السجل ، وعلى افتراض ان اسم الحقل هو Sinf ، يصبح الكود هكذا :

بدلا عن
=IIf(IsNull(DMax("[id]";"items")+1);1;DMax("[id]";"items")+1)

استخدم

if len(me.Sinf & "")=0 then
  me.Sinf = nz(DMax("[id]","items"),0) +1
  docmd.runcommand accmdsaverecord
end if  

.

 

جعفر

  • Like 4
قام بنشر

أهلا وسهلا بك أستاذنا الكبير @jjafferr 

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

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

 

وبارك الله فيك استاذا الغالي

قام بنشر

اعذرني اخوي القاضي ، بس خلينا نشوف ايش بالضبط اللي عملته ، وايش هذه الرسائل 🙂

لأني انا شخصيا صادفت هذه المشكلة في احد برامجي (من ايام زمان 🙂 ) والحل اللي اعطيتك كان الحل 🙂

 

جعفر

  • Like 2
قام بنشر (معدل)

أستاذي الغالي  @jjafferr  تفضل 

03.PNG.37a836d6c95c1f1bc33e9687c32ea71e.PNG

02.PNG.d5b4da663a02fead13d49f24f8c8d31d.PNG

 

9 ساعات مضت, qathi said:

علماً يتم أستخدام ترقيم كل حركة عبر دالة في المديول
فمثلاً يبداء ترقيم فاتورة بيع  A1001 و شراء M1001 .. ألخ وذلك عبر القيمة الافتراضية لحقل رقم الفاتورة

 

وحتى لا انسى

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

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

بهذه الطريقة الطبخة تخترب !!

انا عملت على الكود اللي ارفقته انت ، ولكن الآن يجب ان ارى الكود بالكامل ، مع المودل ، وبتسلسل الاحداث ، حتى تتضح الصورة بالكامل 🙂

 

جعفر

  • Like 1
قام بنشر

الخطوات اللي اتبعتها :

1. إلغاء اخذ القيمة الافتراضية من اعدادات الحقل :

image.png.f4c6e7e4582a2f5460a9c5273ec58148.png

.

2.

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

image.png.2db21ba0eaf9e7846ce9f23e999a6488.png

.

3.

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

image.png.827506d0a2a9e1043d239bebf9fd7bdc.png

.

جعفر

1282.InvoiceSale_6.accdb.zip

  • Like 4
قام بنشر (معدل)

تفضل هذه المشاركة اخي الكريم لعلها تحل المشكلة

فقط نسخ هذا الكود الصقه في حدث ازرار الحفظ

Dim rs As DAO.Recordset
    
    Set rs = CurrentDb.OpenRecordset("SELECT Max(InvoiceNum) FROM InvoiceHT;")
    
         InvoiceNum = "A" & Format(Nz(rs.Fields(0), 0) + 1, "1000")
    rs.Close
    Set rs = Nothing

 

تم تعديل بواسطه د.كاف يار
  • Like 2
قام بنشر (معدل)

أستاذي الغالي  @jjafferr  اشكرك فلك كل الاجلال و التقدير

للأسف فحتى لا اتعجل بالرد حاولت كل المحاولات ولكن دون فائدة

تظهر هذه الرسالة ...
01.PNG

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

حينها يتم إنشاء ترقيم جديد

≠=======

 

6 ساعات مضت, د.كاف يار said:

تفضل هذه المشاركة اخي الكريم لعلها تحل المشكلة

فقط نسخ هذا الكود الصقه في حدث ازرار الحفظ

 

اشكرك أخي د.كاف يار على ردك والكود 

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

 

تم تعديل بواسطه qathi
قام بنشر (معدل)

أستاذي الغالي  @jjafferr 

طبعاً المثال الذي وضعته بالمشاركة ليس كامل

فلذلك أقوم بتطبيق الكود في ملفي الكامل

وبه نموذج فرعي لادخال الأصناف

 

أقوم بفتح الملف بنسختين وقاعدة االبيانات خلفية واحدة

وحسابين مستخدمين مختلفين

وضعت الكود مباشرة بعد أدراج اسم العميل

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

 

المستخدم الأول في الملف الأول يتم أدراج الترقيم بسلاسة

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

 

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

مشاركة مع اساتذتي الاجلاء

قم بتاخير رقم الفاتورة بعد اختيار اسم العميل 

Private Sub CustomerNum_AfterUpdate()
Me.InvoiceNum = Next_Seq("A")
DoCmd.RunCommand acCmdSaveRecord
Me.OutNum = Me.InvoiceNum
End Sub

استخدم هذا الكود مع حذف القيمة الافتراضية لرقم الفاتورة

  • Like 2
قام بنشر (معدل)

السلام عليكم اعتذر منك استاذي العزيز qathi  ومن استاذنا الغالي استاذ jjafferr

حيث ان الحل الذي قدمته مشابه لحل استاذ جعفر لكن لم الاحظ ذلك

ارجو المعذرة اساتذتي الكرام

تم تعديل بواسطه husamwahab
  • Like 2
قام بنشر

جرب هذا الكود 

هذا الكود يلغي الخطا ويعيد ترقيم الفاتورة ويقوم بالحفظ

Private Sub Form_Error(DataErr As Integer, Response As Integer)
  If DataErr = 3022 Then
    Me.InvoiceNum = Next_Seq("A")
    DoCmd.RunCommand acCmdSaveRecord
    Response = 0
    DoCmd.Close
  End If
End Sub

 

  • Like 2
قام بنشر (معدل)
24 دقائق مضت, husamwahab said:

جرب هذا الكود

 

اشكرك اخي واستاذي حسام

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

لكن تظهر بعد محاولة أدراج الأصناف

وبالنسبة لتغيير الترقيم فنفس المشكلة

يظهر في كلا الملفين نفس الترقيم

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

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

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

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

لكن الافضل ارسال كامل الملف للوقوف على كامل العملية

وان شاء الله استاذتنا سيجدون الحل   

  • Like 2
قام بنشر

أهلا بالاستاذ @ابو عارف وشكرا لردك الطيب .. اعتذر عن تاخر الرد

19 ساعات مضت, ابو عارف said:

جرب أمر Refrish في حدث في الحالي اوقم بتقليل مدة الفاصل الزمني  للتحديث في اعدادات عميل

بالنسبة Refrish تم عملها من قبل وكذلك Requery دون فائدة

وبالنسبة الفاصل الزمني تم تجربته  قبل ايام دون فائدة

  • Like 1
قام بنشر

هناك طريقة قد تكون مفيدة لك وهي 

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

في الحاسبة الاولة مثلا رقم الفاتورة A1 ونوع الحركة B1

وفي الحاسبة الثانية A2 ونوع الحركة B2 وهكذا

ثم نقوم بادخال البيانات بالطريقة المتبعة وفي اخر اجراء او حركة  كان يكون زر حفظ نضع كود يجعل نوع الحركة النوع المطلوب ورقم الفاتورة هو كود الترقيم

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

  • Like 1
قام بنشر
20 ساعات مضت, husamwahab said:

هناك طريقة قد تكون مفيدة لك وهي 

اشكرك اخي واستاذي حسام .. على تفاعلك .. واعطائي الحلول الممكنة

فجزاك الله عني خيرا

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

 

أحاول بكل الطرق الممكنة حاليا حل المشكلة .. وانتظر نتائج تجربة أستاذنا الغالي والكبير  @jjafferr 

ولعلي اجد منكم حل لهذه المشكلة

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

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

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

Important Information