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

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

قام بنشر

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

من () إلى ()

والترقيم من حقل (Tno)

Tab02.accdb

قام بنشر

شكراً لك أخي الكريم husamwahab

ولكن رغبة في التعلم اسمح لي بسؤال: لماذا لم تستخدم استعلام الحذف

أنا بالنظر لكوني مبتدئاً أشعر أن التعامل مع الاستعلام أسهل، لا سيما وهو في وضع التصميم، حيث أستطيع تغيير الجداول والحقول حسب الحاجة دون اللجوء للغة البرمجة (SQL)

قام بنشر

شكراً لك على الإفادة أخي الكريم husamwahab

وتطبيقا لما فهمته عدلت على استعلام الحذف بحيث أكتب فيه مباشرة أرقام الحذف المطلوبة، فأصبح بهذه الصورة

 2021-04-09_20h05_53.gif.b5f4c97ce45e612e5c7dc25b144f12a1.gif

وإلى هنا تم المطلوب بحمد الله، فجزاك الله خيراً وأحسن إليك

ولكن .. أطمع بإجراء آخر إن كان بالإمكان

وهو تحويل الكود الذي تفضلت به إلى وحدة نمطية ذكية أو كود ذكي، يتم استدعاؤه من أي نموذج، فيخرج هذا المربع [حذف من () إلى ()] وبمجرد كتابة الأرقام يقوم بالمهمة، دون الحاجة لكتابة كود لكل نموذج أو تغيير اسم النموذج، فهو يغير اسم النموذج بالنظر للنموذج الذي تم استدعاؤه منه، وفي جميع النماذج الأرقام المطلوبة هي تحت حقل باسم موحد (TNO)

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

Tab05.accdb

قام بنشر (معدل)
5 ساعات مضت, nssj said:

شكراً لك على الإفادة أخي الكريم husamwahab

وتطبيقا لما فهمته عدلت على استعلام الحذف بحيث أكتب فيه مباشرة أرقام الحذف المطلوبة، فأصبح بهذه الصورة

 2021-04-09_20h05_53.gif.b5f4c97ce45e612e5c7dc25b144f12a1.gif

وإلى هنا تم المطلوب بحمد الله، فجزاك الله خيراً وأحسن إليك

ولكن .. أطمع بإجراء آخر إن كان بالإمكان

وهو تحويل الكود الذي تفضلت به إلى وحدة نمطية ذكية أو كود ذكي، يتم استدعاؤه من أي نموذج، فيخرج هذا المربع [حذف من () إلى ()] وبمجرد كتابة الأرقام يقوم بالمهمة، دون الحاجة لكتابة كود لكل نموذج أو تغيير اسم النموذج، فهو يغير اسم النموذج بالنظر للنموذج الذي تم استدعاؤه منه، وفي جميع النماذج الأرقام المطلوبة هي تحت حقل باسم موحد (TNO)

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

Tab05.accdb 528 kB · 3 downloads

السلام عليكم

مشاركة مع استاذى الجليل واخى الحبيب @husamwahab :fff:

ضع الكود الاتى فى موديول 

Function SpDelRec(ByVal strTableName As String, ByVal strFieldName As String)
On Error GoTo ErrorHandler

  Const MyMsg = "Are you sure you wish to delete the records?"
    
    If MsgBox(MyMsg, vbYesNo + vbQuestion, "Confirm") = vbYes Then
      DoCmd.SetWarnings False
        DoCmd.RunSQL "DELETE [" & strTableName & "].* FROM [" & strTableName & "] WHERE ((([" & strTableName & "].[" & strFieldName & "]) Between [start delete from] And [To]))"
      DoCmd.SetWarnings True
    Else
      Exit Function
    End If

ExitHere:
  On Error GoTo 0
  Exit Function

ErrorHandler:
  Select Case Err.Number
    Case Is = 2001, 3167
      MsgBox "Action Aborted . "
    Case Else
      MsgBox Err.Description, , "ERROR " & Err.Number
      GoTo ExitHere
  End Select
 
End Function

 

وقم بعمل زر امر فى النموذج الذى تريد

وضع الكود الاتى فى حدث عند النفر على الزر
 

  'Call SpDelRec("Table Name", "Field Name")
  Call SpDelRec("TAB_RMZ", "TNO")

وطبعا لأنك طلبت

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

وحدة نمطية ذكية أو كود ذكي

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

طبعا لا انسى أخص بالشكر استاذى الجليل ومعلمى القدير الأستاذ @jjafferr :fff: من أجل هذة الجزئية تحديدا  [" & strTableName & "] :wink2:
جزاه الله هو وكل اساذتى الكرم كل الخيـر 

تقبل تحياتى :fff:

تم تعديل بواسطه ابا جودى
  • Like 1
  • Thanks 1
قام بنشر

شكرا أخي الكريم ابا جودى على الإفادة

ومن باب التطفل على موائد الكرام أضفت للكود عبارة (Me.Requery) حتى لا تظهر الصفوف المحذوفة # # ، فأصبح الكود هكذا

Call SpDelRec("TAB_RMZ", "TNO")
Me.Requery

 

فهل هذا هو التصرف السليم

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

 لكن أيضاً رغبة في التعلم وحتى لا يبقى في ذهني تساؤلات: في مثل هذه الحالة التي يكون اسم حقل الترقيم وهو مجال عمل الكود موحدا في جميع الجداول والنماذج (TNO)، والمتغير الوحيد هو اسم الجدول، فهل يمكن في مثل هذه الحالة أن يعرف الكود بنفسه اسم الجدول الذي سيجري عليه العملية، يعني أن يأخذ اسم الجدول من مصدر بيانات النموذج الذي تم استدعاؤه منه

قام بنشر

لا انت كده عاوز مصباح علاء الدين واعتقد كمان عاوز كود يعرف انت ناوى تمسح فبل ما يخطر على بالك انت هتمسح ايه :biggrin: مهو كود زكى بقه :yes:

انتظر لما يجى لك مبرمج زكى يقول لك الحل لان انا لا مبرمج ولا زكى:jump:

قام بنشر
22 دقائق مضت, ابا جودى said:

انا لا مبرمج ولا زكى:jump:

لأ هيك كثييير .. إذا كنت إنت مش مبرمج يعني أنا لسه مش مبتدئ 😁

والطلب اللي طلبتو .. طلبتو لأني شفت أكواد فيها نفس الفكرة .. أو نفس الذكاء  .. بتجيب اسم الجدول لحالها بدون ما حدا يحكيلها

ما تسألني وين هاي الأكواد .. لأني نسيت 🙃

 

  • Haha 1
  • أفضل إجابة
قام بنشر

مشاركة مع استاذي العزيز ابا جودى

كود جميل جدا عاشت ايدك استاذ ابا جودى

 بالنسبة لطلبك استاذ nssj 

تفضل هذا الكود

Call SpDelRec(Me.RecordSource, "TNO")

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

لان الاستعلام يحتاج الى كود لاستخراج اسم الجدول

  • Like 2
  • Thanks 1
قام بنشر
13 دقائق مضت, husamwahab said:

كود جميل جدا عاشت ايدك ابا جودى

 

جزاكم الله خيـرا

13 دقائق مضت, husamwahab said:

لان الاستعلام يحتاج الى كود لاستخراج اسم الجدول

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

قام بنشر
34 دقائق مضت, nssj said:

لأ هيك كثييير .. إذا كنت إنت مش مبرمج يعني أنا لسه مش مبتدئ 😁

والطلب اللي طلبتو .. طلبتو لأني شفت أكواد فيها نفس الفكرة .. أو نفس الذكاء  .. بتجيب اسم الجدول لحالها بدون ما حدا يحكيلها

ما تسألني وين هاي الأكواد .. لأني نسيت 🙃

 

ماشى حظك حلو ماشاء الله جالك الأستاذ @husamwahab ومعاه مصباح علاء الدين حقق امانيك:biggrin:

  • Like 1
قام بنشر
20 دقائق مضت, ابا جودى said:

ماشى حظك حلو ماشاء الله جالك الأستاذ @husamwahab ومعاه مصباح علاء الدين حقق امانيك:biggrin:

الحمد لله .. ومصباح علاء الدين هذا إلك فيه دور أخي الكريم ابا جودى

وكل الشكر للأخوين الكريمين   husamwahab   &  ابا جودى

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

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

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

Call SpDelRec(Me.RecordSource, "TNO")
Me.Requery

أما إذا كان مصدر البيانات استعلام فأستخدم الأمر التالي

Call SpDelRec("TAB_RMZ", "TNO")
Me.Requery

مع تغيير اسم الجدول حسب المطلوب

  • Haha 1
قام بنشر
1 ساعه مضت, nssj said:

الحمد لله .. ومصباح علاء الدين هذا إلك فيه دور أخي الكريم ابا جودى

وكل الشكر للأخوين الكريمين   husamwahab   &  ابا جودى

ههههههههه اى اناا عفريت المصباح  :jump::biggrin:

قام بنشر (معدل)
3 hours ago, ابا جودى said:

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

تفضل هذه المحاولة استاذ ابا جودى وانا الممنون

ملاحظة : في الملف المرفق نموذج وفيه ثلاث ازرار كل زر يمثل مصدر سجلات افتراضي

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

 

استاذ nssj 

لو تكرمت تعديل افضل اجابة للاستاذ ابا جودى 

DB.rar

تم تعديل بواسطه husamwahab
  • Like 2
قام بنشر (معدل)
5 دقائق مضت, husamwahab said:

تفضل هذه المحاولة استاذ ابا جودى وانا الممنون

ملاحظة : في الملف المرفق نموذج وفيه ثلاث ازرار كل زر يمثل مصدر سجلات افتراضي

استاذ nssj 

لو تكرمت تعديل افضل اجابة لـ ابا جودى 

جزاكم الله خيـــــرا استأذى الجليل:fff:

عاجز هن شكركم كما تستحقون:jump:
سأفحص المرفق الان

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

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

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

استاذ العزيز ابا جودى

اولا رحم الله والديك على هذا الدعاء لاني محتاج دعاء جميع اخوتي جزاكم الله خير الجزاء

ثانيا وعلى قول استاذنا الحبيب احمد انا تلميذ وبالكاد يحبو

  

  • Thanks 1
قام بنشر
53 دقائق مضت, husamwahab said:

تفضل هذه المحاولة يا ابا جودى 

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

استاذى الجليل ومعلمى القدير @husamwahab :fff:

ولان الاستاذى الفاضل الكريم @nssj طلب كود ذكى هاهاهاهاها عجباني قوى كود ذكى دى :biggrin:

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

الكود داخل الموديول 

Public Function RcrdSrc(ByVal RecordSource As String)
On Error GoTo ErrorHandler

Dim FirstChar    As Long
Dim SecondChar   As Long
Dim XCount       As Long

  RecordSource = Replace(RecordSource, ";", " ")
  
  FirstChar = InStr(RecordSource, "from") + 5
  SecondChar = InStr(FirstChar, RecordSource, " ")
  XCount = SecondChar - FirstChar
  
  RcrdSrc = Mid(RecordSource, FirstChar, XCount)

ExitHere:
  On Error GoTo 0
  Exit Function

ErrorHandler:
  Select Case Err.Number
    Case Is = 5
      RcrdSrc = (RecordSource)
    Case Else
      MsgBox Err.Description, , "ERROR " & Err.Number
      GoTo ExitHere
  End Select
End Function

ولجلب مصدر البيانات يتم استخدام الكود الاتى 

MsgBox (RcrdSrc(RecordSource))

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

 

DB(2).mdb

  • Like 1
قام بنشر

مع إني مش فاهم إشي من الكود 🙄 ..

بس برضو أنا إلي دور في الموضوع ..

بسبب السطر السحري إللي أضفتو

Me.Requery

😂 😂 😂

  • Haha 1
قام بنشر
2 ساعات مضت, nssj said:

مع إني مش فاهم إشي من الكود 🙄 ..

بس برضو أنا إلي دور في الموضوع ..

بسبب السطر السحري إللي أضفتو


Me.Requery

😂 😂 😂

طيب ايه بس ياللى مش فاهمه ؟ :eek2:

قام بنشر
6 دقائق مضت, ابا جودى 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