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

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

قام بنشر

اساذتنا الكرام . .

الكودد يعلم تمام 100 % وقد جربت هذا الكود فى عدد صغير من السجلات ولكن عند نسخ عدد تجاوز 10000 عشرة آلاف سجل تم تنفيذ الكود على كل السجلات ما عاد تقريبا 200 سجل وتظهر هذه الرسالة 

ولم اجد لها على المواقع المختلفة غير تغير اعدادت الرجسترى ولكن تظهر نفس الرسالة .

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

هل لها حل من خلال تجاربكم . . . شكرا استاذتنا الكرام وزاردكم الله من فضله 

Screenshot_5.jpg

قام بنشر

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

 

Private Sub zer1_Click()
Dim rs As DAO.Recordset
Dim i, x As Integer
Dim r As String
Set rs = CurrentDb.OpenRecordset("SELECT Sheet1.cod, Sheet1.nname,Sheet1.num ,Sheet1.mesaha , Sheet1.na_id , Sheet1.date_sdad fROM Sheet1 ORDER BY Sheet1.nname,Sheet1.na_id , Sheet1.date_ezen,Sheet1.date_sdad ")
If rs.RecordCount > 0 Then
rs.MoveFirst
Else
Exit Sub
End If
rs.MoveFirst
r = rs!cod
x = 1
Do While Not rs.EOF
rs.Edit
If rs!cod = r Then
rs!num = x
x = x + 1
Else
x = 1
r = rs!cod
rs!num = x
x = x + 1
End If
rs.Update
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub

Database151.rar

 

قام بنشر

الكود يتعامل مع جدول Sheet1 ومن خلال فرز التاريخ يتم الترقيم

وفي مثالك الجدول cod_id لا يحتوي حقل التاريخ

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

قام بنشر
4 ساعات مضت, ابوخليل said:

الكود يتعامل مع جدول Sheet1 ومن خلال فرز التاريخ يتم الترقيم

 

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

صحيح الجدول الثاني يحتوي اكثر من 47 الف سجل ولكن لا يوجد تاريخ يتم من خلاله الترقيم

جرب هذا الحل لعل وعسى ، وهو جعل الكود يذهب الى آخر سجل  ثم يعود الى اول سجل .. قبل التشغيل

 

Dim rs As DAO.Recordset
Dim x As Integer
Dim r As String
Set rs = CurrentDb.OpenRecordset("SELECT Sheet1.cod, Sheet1.num , Sheet1.na_id , Sheet1.date_sdad fROM Sheet1 ORDER BY Sheet1.nname,Sheet1.na_id , Sheet1.date_ezen ")
If rs.RecordCount > 0 Then
rs.MoveLast
rs.MoveFirst
Else
Exit Sub
End If
r = rs!cod
x = 1
Do While Not rs.EOF
rs.Edit
If rs!cod = r Then
rs!num = x
x = x + 1
Else
x = 1
r = rs!cod
rs!num = x
x = x + 1
End If
rs.Update
rs.MoveNext
Loop
rs.Close: Set rs = Nothing

 

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

شكر لاستاذنا / ابوخليل وجعله الله فى ميزان حسناتك فقد أرهتقك كثيرا . . الكود فعلا يعمل تمام وبكفاءة والنتائج صحيحة بنسبة 100 % ولا تظهر الرسالة السابقة ويتم ترقيم الاقساط.

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

ملحوظة : لقد قمت بسخ 7000 سجل فقط من العشرة آلف واشتغل الكود وتم ترقيم الاقساط فى جميع السجلات كلها , 

ملحوظة : لقد قمت بسخ 9000سجل فقط من العشرة آلف واشتغل الكود وتم ترقيم الاقساط فى جميع السجلات كلها , 

عندما انسخ السجلات انسخ ألف ألف ولكن المشكلة بعد 9000 آلف !!!!!!!

ولكن عند نسخ 10000 عشرة آلف سجل تقريبا اخر الفين لا يتم ترقيم أقساط للسجلات  . . . . . . . هل المشكلة تكمن فى عدد السجلات ؟ ؟ ؟ ؟ !!!!!!

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

المتغيرات في الكود ليس لها علاقة بعدد الارقام  فالمتغير x  يمثل رقم  صحيح مع انه لا يتجاوز بضعة ارقام  فهو يتراوح بين 1 وآخر قسط للعميل

طيب سوف نغير دالة الدوران ونرى هل يعطي نتيجة كاملة ام لا

اذا لم يعطي نتيجة فانت ملزم برفع البيانات كاملة للتطبيق عليها عن قرب ... الاسماء وبقية البيانات لا تهم  ، فقط حقلبن كود العميل وتاريخ السداد وحقل فارغ للترقيم

Dim rs As DAO.Recordset
Dim i As Long
Dim x As Integer
Dim r As String
Set rs = CurrentDb.OpenRecordset("SELECT Sheet1.cod, Sheet1.num , Sheet1.na_id , Sheet1.date_sdad fROM Sheet1 ORDER BY Sheet1.nname,Sheet1.na_id , Sheet1.date_ezen ")
If rs.RecordCount > 0 Then
rs.MoveLast
rs.MoveFirst
Else
Exit Sub
End If
r = rs!cod
x = 1
For i = 1 To rs.RecordCount
rs.Edit
If rs!cod = r Then
rs!num = x
x = x + 1
Else
x = 1
r = rs!cod
rs!num = x
x = x + 1
End If
rs.Update
rs.MoveNext
Next
rs.Close: Set rs = Nothing

 

قام بنشر

شكرا وجزاك الله خير اخونا الكريم . . بهذا الكود تقريبا 177 سجل لم يتم ترقيم الاقساط وأرفق لك البيانات فى ملف اكسيل به الكود وتاريخ السداد . . 

وفقك الله أخى الكريم وكل كلمات الشكر لا توفيك قدرك وجهدك معى . 

Book1.xlsx

قام بنشر

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

المصنف يحتوي اكثر من 10600 سجل منها اكثر من 2000 بدون تاريخ

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

قام بنشر

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

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

Database12mar.rar

قام بنشر

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

مازال تاريخ التسديد ناقص 2000 سجل ولكني اعتمدت تاريخ الأذن

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

DAO.DBEngine.SetOption dbMaxLocksPerFile, 45000

انا جعلتها 45000 يمكنك انقاص الرقم او زيادته

ليصبح الكود هكذا :

Dim rs As DAO.Recordset
Dim i As Long
Dim x As Integer
Dim r As String
DAO.DBEngine.SetOption dbMaxLocksPerFile, 45000
Set rs = CurrentDb.OpenRecordset("SELECT Sheet1.cod, Sheet1.num , Sheet1.date_ezen fROM Sheet1 ORDER BY Sheet1.nname,Sheet1.cod , Sheet1.date_ezen ")
If rs.RecordCount > 0 Then
rs.MoveLast
rs.MoveFirst
Else
Exit Sub
End If
r = rs!cod
x = 1
For i = 1 To rs.RecordCount
rs.Edit
If rs!cod = r Then
rs!num = x
x = x + 1
Else
x = 1
r = rs!cod
rs!num = x
x = x + 1
End If
rs.Update
rs.MoveNext
Next
rs.Close: Set rs = Nothing

تفضل المثال بعد التعديل

افتح الاستعلام بعد عملية الترقيم لترى النتيجة

  • Thanks 1
قام بنشر

شكرا اخي العزيز خالد على المرور والتعقيب

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

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

ههههههههه

انا اكتب وانت تعمل

قام بنشر (معدل)
3 دقائق مضت, ابوخليل said:

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

وهذا ما اشرت اليه في ملف الفيديو ☝️

ممكن يكون ملف req او ملف دفعي bat او cmd

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

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

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

ملحوظة : تاريخ السداد يعتمد على سداد القسط فاذا لم يسدد فلا يوجد تاريخ للسداد

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

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

تفضل الآن الترقيم بناء على تاريخ التسديد باستخدام استعلام الذي سيحصر المسدد فقط

وعملت لك استعلامين لاظهار المسدد / وغير المسدد

Database14mar.rar

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

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

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

Important Information