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

Hamdi Edlbi-khalf

الخبراء
  • Posts

    993
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    3

كل منشورات العضو Hamdi Edlbi-khalf

  1. مرحباً أخي @abouelhassan لا أستطيع وصف الحل فالمشكلة غير واضحة، ولا أعلم المكتبة المطلوبة أما عن الإضافة بصورة عامة فمن
  2. السلام عليكم رداً على السؤال التالي: سؤال عن كود البحث في جدولين قمت بعمل محاولة بناء على ما تبين لي من مقصد السائل، وبناء على ملاحظة الأستاذ @د.كاف يار عن كون الفكرة مبتكرة، أعيد رفع المرفقات مع شرح مختزل للفكرة عارٍ من الصور، مع إضافة طريقة أخرى. الفكرة قد تحتاج إلى تهذيب بحكم أنها كانت استجابة عفوية للسائل، أضعها بين أيديكم الغالية، عسى أن يُستفاد منها: أللهم صلِ على سيدنا محمد وعلى آله وصحبه وسلم. تنقسم الطريقة إلى جزئين رئيسيين، الأول منهما ثابت والثاني اقترحت طريقتين له: الجزء الأول: عمل استعلام توحيد بين الجدول الرئيسي والفرعي، يكون فيه من الجدول الفرعي Figlio : 1- الحقل الذي نرغب بالبحث ضمنه. 2- حقل المتسلسل. 3- حقل الربط. ومن الجدول الرئيسي Padre: 1- الحقل الذي نرغب بالبحث ضمنه 2- حقل المتسلسل 3- حقل محسوب قيمته صفر (نستحصل عليها بضرب حقل المتسلسل بالقيمة صفر). بالنسبة لي، قد اخترت أن يكون في نموذج البحث مربع قائمة -على مبدأ (البحث عن الكل) في الإكسل- يكون مصدره الاستعلام الذي سميته في الأنموذج المرفق (SearchQ)، وربطته بفلاتر تُستدعى بناء على معيار حقل البحث (طريقة العرض يمكن تغييرها والتفنن بها وهذه الجزئية ليست موضوع المنشور)، بعد ذلك يتم الانتقال من نموذج البحث إلى نموذج الإدخال (بقسمين الرئيسي والفرعي) بتمرير قيمة حقل الربط وحقل المتسلسل. إلى مربعين غير مرتبطين في نموذج البحث ومن ثم إلى نموذج هدف البحث. (ويمكن ذلك باستخدام المتغيرات). ملحوظة: يوجد في النموذج الفرعي حقل خفي مصدره المتسلسل في الجدول الفرعي. الجزئية الثانية: كيفية تحديد الحقل والسجل الذي يتضمن الهدف! هنا لدينا طريقتان: الأولى: بنقل التركيز إلى الحقل المطلوب : Dim Padre As Integer ' متغير باسم (الأب) لحفظ قيمة معرف السجل في الجدول الرئيسي Dim Figli As Integer ' متغير باسم (الابناء) لحفظ قيمة معر السجل في الجدول الفرعي Padre = Me.id ' حقل خفي في نموذج البحث Figli = Me.ID2 ' حقل خفي في نموذج البحث If Me.ID2 = 0 Then ' هذا الشرط لجعل الكود يتحقق بالانتقال ووقوف في النموذج الرئيسي أو الانتقال ومتابعة البحث في النموذج الفرعي DoCmd.OpenForm "form1" ' إعادة فتح النموذج الهدف لنقل التركيز إليه DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre ' فتح النموذج على السجل المنشود DoCmd.GoToControl "[اسم رب العائلة]" ' التركيز على حقل فيه Else DoCmd.OpenForm "form1" DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre 'Me.id DoCmd.GoToControl "SubForm" ' نقل التركيز إلى النموذج الفرعي DoCmd.GoToControl "[الاسم]" ' نقل التركيز إلى حقل في النموذج الفرعي ' هذا الجزء لنقل التركيز في النموذج الفرعي إلى السجل المطلوب Dim rstt As dao.recordset Dim rstrng As String rstrng = "[id0]=" & Figli 'Forms!search!Figli Set rstt = Forms!form1!Subform.Form.RecordsetClone rstt.FindFirst rstrng Forms!form1!Subform.Form.Bookmark = rstt.Bookmark Set rstt = Nothing End If الثانية: باستخدام التنسيق الشرطي وهي الطريقة الأفضل برأيي. ويزاد فيها وجود معادلة للتنسيق الشرطي لحقل الهدف في النموذج الرئيسي وأخرى لحقل الهدف في النموذج الفرعي ، ووجود حقلين خفيين في النموذج الرئيسي يأخذان قيمتها من المتغيرين (الأب) و(الأبناء)، ستكون قيمتهما هي محددات معادلتي التنسيق الشرطي. ' سيبدو الكود بهذه الطريقة Dim Padre As Integer Dim Figli As Integer Padre = Me.id Figli = Me.ID2 Forms!form1!CondScnd.Value = Figli ' هنا نجعل حقل المعيار للتنسيق الشرطي يأخذ قيمته من المتغيرات المبين معناها في الكود السابق Forms!form1!CondFrst.Value = Padre DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre Forms!form1.Refresh ' مع اختصار المراحل ' وتوفير ضرورة إعادة التركيز إلى نموذج البحث مع كل انتقال إلى الهدف أرجو ممن يعرج على الموضوع التفضل بوضع ملاحظاته أو اقتراحاته أو إضافته. والحمد لله رب العالمين أخيراً المثال من وضع السائل في الرابط المذكور أعلاه (مشكوراً مأجوراً إن شاء الله تعالى) Search in Main form and Sub Form Simultaneously Search_MaiForm_SubFormConditionl.accdb Search_MainF=SubFormSetFocus.accdb
  3. السلام عليكم من الوارد أن الكود متوافق مع نواة دون أخرى 64 بت أو 32 بت
  4. أهلاً حمدي! 🙂 ' هذه الطريقة ستمكنك من نسخ السجل إلى جدول آخر Dim DB as DAO.Database Dim RST1 as DAO.Recordset Dim RST2 as DAO.Recordset Set DB = CurrentDB Set RST1 = DB.Openrecordset(Put Here the name of your Source Query) Set RST2 = DB.Openrecordset(Put Here the name of your Target Table) RST2.AddNew RST2![Name Of The Target Field]= RST1![Name Of Source Field] ' كرر تسجيل الحقول RST2.Update RST1.Close RST2.Close Set RST1 = Nothing Set RST2 = Nothing Set DB = Nothing ' كرر كتابة الكود لكل جدول ترغب بإضافة البيانات له ويمكن عمل ذلك أيضاً باستخدام الاستعلامات، ولعل هذه الطريقة أسهل ولكن أبطأ. مع الانتباه إلى ضرورة وجود معيار في الاستعلام يحدد السجل المطلوب نسخ البيانات منه.
  5. السلام عليكم إليك هذا الملف البسيط قمت بعمله خصيصاً لأجلك ويمكن الاستفادة منه وتوسيعه ليشمل حالات أكثر الغرض من الملف دمج الجداول من قواعد بيانات متطابقة عندما يكون الربط في الحقل الأساسي و الفرعي ذو بيانات متكررة ... نتيجة الاعتماد على حقل الترقيم التلقائي (بصورة أساسية) أو غيره دون الانتباه إلى الحاجة المستقبلية إلى دمج هذه الجداول أللهم صل على سيدنا محمد وعلى آله وصحبه وسلم برنامج إعادة ترتيب الربط.accdb
  6. شكراً لكم سأضع منشوراً مستقلاً عن الفكرة إن شاء رب العالمين وأذن
  7. السلام عليكم هل فتحت المرفق الذي وضعته في مشاركتي السابقة، فقد نفذته كما توقعت طلبكم. وفي حال كان لديكم بعض المتطلبات نبه عليها، حتى نتعاون بتنفيذها. بالتوفيق.
  8. السلام عليكم ترتيب الأفكار: لديك سيارات لنقل الشعير، بمعرف ثابت لكل سيارة، أسماء مربي الماشية الذين يتلقون المواد ثابتة لكل سيارة، الكمية التي تحمله السيارة من الشعير ثابتة دائماً، وبناء عليه فالكمية التي يحصل عليها المربي هي ثابتة مع كل نقلة للسيارة. المطلوب مع كل نقلة جديدة تحديث الكمية التي يتلقاها المربون، وذلك بإضافة الكمية الجديدة إلى القديمة بسجل جديد في النموذج الفرعي، وأن تتم العملية مع كل إضافة نقلة جديدة دون الإدخال اليدوي لكل مربي ماشية. هل هو المطلوب؟
  9. السلام عليكم لنرتب الأفكار: لديك قاعدتا أكسس متماثلتان، أدخلتم بيانات على قاعدة رقم 1 وأدخلتم بيانات على قاعدة رقم 2 والآن ترغبون بدمج الجداول الموجودة في القاعدتين في قاعدة واحدة. ولكن المشكلة وجود جدول فرعي، و حقل الربط في الجدول الفرعي مرتبط بحقل الترقيم التلقائي الذي استخدمتموه كمعرف في الجدول الرئيسي و قد أصبح الدمج متعذراً نظراً لأن حقل الترقيم التلقائي فيه قيم متكررة في الجدولين. هل هذا التصور صحيح للمشكلة؟ وأعتقد أن عدم رفعكم قاعدة البيانات، كونها تحمل بيانات حساسة عن التلقيح كما يبدو من أسماء الحقول في الجدول.
  10. السلام عليكم لعل الإصدار المستخدم في الضغط و الفك هو المشكلة، فقد نزلت الملف وهو يعمل لدي ... Test_Khalf.mdb
  11. السلام عليكم أعتذر على التأخر،- إن شاء الله تعالي- في المرفق بغيتكم. أللهم صلِ على سيدنا محمد وعلى آله وصحبه وسلم Test_Khalf.rar
  12. السلام عليكم في المرفق إحدى الطرق الممكنة للبحث في النموذجين الرئيسي والفرعي -كما فهمت من سؤالكم- يمكن دمج الفكرة مع المحاولات التي تفضل بها الأخوة الأفاضل. مع ملاحظة أن الحل الموجود هو أحد الحلول وهناك بدائل عديدة. Search_MaiForm_SubForm.accdb
  13. مرحباً أخي فراس ... شكراً على المشاركة، لكن ماتفضلت به مختلف عن موضوع المنشور والذي هو عن النماذج المستمرة.
  14. مرحباً في البداية لا ينصح باستخدام الدالة Dlast، كونها تستدعي القيمة من آخر سجل وقد يصدف أن يضطر مدخل البيانات إلى استدراك بيانات مفقودة، هناك عدة طرق لعمل المطلوب الأولى بالكود الذي تفضل به الأستاذ كاف يار، الثانية: Sub BtnDmax() On Error Resume Next Dim db As DAO.Database Dim Rst As DAO.Recordset Dim SqlStr As String Dim X As Integer Set db = CurrentDb SqlStr = "SELECT Examination.[File number], Max(Examination.[visit number]) AS [MaxOfvisit]" & _ "FROM Examination where [File number] = " & Val([Forms]![Examination]![NumFile]) & " GROUP BY Examination.[File number];" Set Rst = db.OpenRecordset(SqlStr) X = Rst![MaxOfvisit]+ 1 [Forms]![Examination]![NewVisit] = X End Sub ضع الكود في حدث بعد التحديث لحقل رقم الملف AfterUpdate مسميات الحقول في الكود افترضتها، ما عليك سوى تغييرها وفقاً لنموذجك.
  15. السلام عليكم هل فعلت خاصية الضغط والإصلاح عند الإغلاق؟
  16. شكراً على أمانيك الطيبة وأعطاكم الله فوقها.
  17. بارك الله بكم، وزادكم من فضله وعلمه ووسع عليكم من رزقه.
  18. جزاكم الله كل خير، وبلغكم مناكم فيما يحب ويرضى.
  19. جزاكم الله كل خير أخوتي وأساتذتي الأفاضل.
  20. أحسن الله إليكم، شكراً على تشجيعكم أخي الفاضل.
×
×
  • اضف...

Important Information