alsihran قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 السلام عليكم ورحمة الله وبركاتة يوجد بالمرفق مثال يحتوي على ثلاثة نماذج frm1 و frm2 نقوم من خلالهما فتح النموذج frm وعند فتح النموذج وضعت في الحدث عند النقر Me.Visible = False وعند اغلاق النموذج frm حدث Forms![frm1].Visible = True بما ان النموذج frm يمكن استدعائه من اكثر من نموذج المطلوب : عند اغلاق النموذج frm معرفة النموذج الذي استدعاه ويقوم بعمل Forms![].Visible = True أتمنى يكون المطلوب واضح visbelform.accdb رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 تفضل أخي السهران 🙂 تم تعريف متغير عام في موديول يحفظ اسم النموذج الأخير ، ومن ثم يستدعيه مجددا عند إغلاق النموذج frm visbelform.accdb 4 1 رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 22, 2022 الكاتب مشاركة قام بنشر مايو 22, 2022 33 دقائق مضت, Moosak said: تفضل أخي السهران يعطيك العافية أستاذ رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 وعليكم السلام 🙂 مثل ما يقول المثل: اش لك في البحر واهواله ، و رزق الله على السيف 🙂 فيه طريقة اسهل من طريقة اخوي موسى السهلة 🙂 في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، استعمله في ارسال اسم النموذج الذي تريد تفتحه ، هكذا (لا تغير في السطر شيء ، إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) : DoCmd.OpenForm "frm", , , , , , me.name . وعند اغلاق النموذج frm1 او frm2 ، اكتب : Forms(me.openargs).Visible = True جعفر 4 2 رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 22, 2022 الكاتب مشاركة قام بنشر مايو 22, 2022 39 دقائق مضت, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، انا بالفعل استخدم هذه طريقة في فتح النموذج لكن ما خطر في بالي اني ممكن ارسل اسم النموذج الان نأتي للشق الاهم في هذه الكود 38 دقائق مضت, jjafferr said: إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) : كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 منذ ساعه, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs معلومة جديدة 😄👌🏼 رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 36 دقائق مضت, alsihran said: DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData اولا: اذا كان LisetViewData اسم النموذج الذي انت عليه الآن ، فتقدر تكتب السطر كالتالي (حيث me.name معناه اسم النموذج الذي انت فيه الآن) : DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, me.name ثانيا: منذ ساعه, alsihran said: كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة بالنسبة للتصفية ، فاثناء كتابتك للامر ، سترى ان الاكسس يخبرك المتغير الذ يجب ان تكتبه ، ومنها Filter و Where ، ولاحظ آخر امر هو OpenArgs الذي تكلمت عنه . فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر docmd.OpenForm "frm",,,"[ID]=" & me.lst_1,,acDialog, me.name واذا كان الحقل نص docmd.OpenForm "frm",,,"[ID]='" & me.lst_1 & "'",,acDialog, me.name . جعفر منذ ساعه, Moosak said: معلومة جديدة 😄👌🏼 سترى معلومات اكثر عن هذا المتغير هنا . جعفر 2 رابط هذا التعليق شارك More sharing options...
متقاعد قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 منذ ساعه, Moosak said: معلومة جديدة 😄👌🏼 متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك وطالما تمكنا من تمرير قيمة حقل ممكن تمرير اسم النموذج او تسميته الخ واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل عذرا اخ @jjafferrكتب الرد اوف لاين ولم اشاهد ردك 1 رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 6 دقائق مضت, مبرمج سابق said: متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك لا تلومني العتب على النظر 😂 6 دقائق مضت, مبرمج سابق said: واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل لا هذي يبغالها شرح عملي 😏 رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 22, 2022 مشاركة قام بنشر مايو 22, 2022 ارجع لموضوع امس (انا تركت لك الرابط في مشاركتي السابقة) ، فيه تفاصيل اكثر 🙂 جعفر رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 23, 2022 الكاتب مشاركة قام بنشر مايو 23, 2022 11 ساعات مضت, jjafferr said: فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر الله يعطيك العافية استاذ هذا عامل تحديد السجل في النموذج الذي نستدعية يجلب البيانات من SqlServer وهو يعمل بشكل سليم rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & OpenArgs & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb عند استدعاء النموذج بناء على حقل التصفية والكود الذي وضعته انت يظهر خطأ حيث ان المتغير OpenArgs يقرأ النموذج ولا يقرأ حقل التصفيه كما هو موضح بالصورة رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 20 دقائق مضت, alsihran said: حيث ان المتغير OpenArgs يقرأ النموذج ولا يقرأ حقل التصفيه الله يطول عمرك ، انت خلطت الحابل بالنابل !! احنا استعملنا المتغير OpenArgs لإرسال اسم النموذج ، وهو يعمل بطريقة صحيحة حسب الصورة اعلاه ، ولكنك هنا تحتاج الى: 12 ساعات مضت, jjafferr said: فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر فإذن استعمل الحقل ID هنا (ID هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) 🙂 جعفر 1 رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 23, 2022 الكاتب مشاركة قام بنشر مايو 23, 2022 30 دقائق مضت, jjafferr said: فإذن استعمل الحقل ID هنا (ID هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) نعم استاذ مربع القائمة اول حقل به هو حقل فريد ويعمل مع هذا الكود بشكل سليم DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData هل افهم من هذا ان الأمر لايصلح مع اضافة اسم النموذج لتنفيذ هذا الكود rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & OpenArgs & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 32 دقائق مضت, alsihran said: DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData الامر DoCmd.OpenForm لفتح النموذج frm_QualityEvaluation ، السؤال: ما هو الحقل LisetViewData وما قيمته ؟ سؤالك الاصل كان : 18 ساعات مضت, alsihran said: frm1 و frm2 نقوم من خلالهما فتح النموذج frm لهذا السبب انا اقترحت عليك استعمال المتغير OpenArgs في امر فتح النموذج (لاحظ اننا ارسلنا اسم النموذج الذي نحن عليه الآن me.name كقيمة عن المتغير OpenArgs) : DoCmd.OpenForm "frm", , , , , , me.name وانتهى الكلام عن فتح واغلاق النموذج ---------------------------------------------------------- فتح النموذج على السجل الذي نحن عليه الآن 14 ساعات مضت, alsihran said: كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة . والجواب كان (رجاء التركيز على جملة التصفية فقط ) : docmd.OpenForm "frm",,,"[ID]='" & me.lst_1 & "'",,acDialog, me.name . ولكنك في جملة rs التالية استعملت OpenArgs بدل عن me.lst_1 rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & OpenArgs & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb ======================================================= اعتقد سؤالك كان لازم يكون كالتالي: 1. frm1 و frm2 نقوم من خلالهما فتح النموذج frm ، وعند اغلاق frm اريد ارجع للنموذج الذي تم فتحة منه ، 2. عند فتح النموذج frm عندي جملة SQL لفتح سجل معين في النموذج frm ، وهذا السجل هو السجل الذي يقع عليه التركيز في مربع القائمة في النموذج frm1 او frm2 . رجاء تأكد لي ان مفهومي صحيح علشان اكتب لك الرد ، واذا كان مفهومي غير صحيح ، فرجاء تعطينا الصورة كامله عن قصدك ، لأني الى الآن ما فاهم !! جعفر 1 رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 23, 2022 الكاتب مشاركة قام بنشر مايو 23, 2022 6 دقائق مضت, jjafferr said: اعتقد سؤالك كان لازم يكون كالتالي: هذا صحيح استاذ كان سؤالي بقصد الرجوع للنموذج اللي استدعى النموذج لم وضعت انت الحل لقيت أني استخدم تقريبا نفس الكود في عامل التصفية فقط كان محتاج يضاف إليه اسم النموذج اللي استدعى النموذج للرجوع اليه عند الاغلاق الل هذا هو DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData وعند فتح النموذج يتم طلب الذهاب الى السجل برقم Id الذي يحمله المتغير OpenArgs من خلال هذا الكود rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & OpenArgs & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb مع ملاحظة انه عند استدعاء النموذج من frm1 يتم بدون طلب تصفية سجلات وعند استدعائه من النموذج frm2 يتم طلب تصفية السجلات كنت اتمنى ارفع المثال لتكون الصورة اوضح لكن مشكلة الارتباط ب Sqlserver تجعل الامر معقد ان شاء الله قدرت اوضح الفكرة رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 شو LisetViewData ، وشو القيمة اللي فيه رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 23, 2022 الكاتب مشاركة قام بنشر مايو 23, 2022 12 دقائق مضت, jjafferr said: شو LisetViewData ، وشو القيمة اللي فيه يتم التصفية حسب اول حقل اللي هو المعرف الرقم رابط هذا التعليق شارك More sharing options...
أفضل إجابة jjafferr قام بنشر مايو 23, 2022 أفضل إجابة مشاركة قام بنشر مايو 23, 2022 جميل ، اذن LisetViewData ليس اسم النموذج ، سوف نرسل قيمتين في المتغير OpenArgs ، يجب ان يكون الامر عندك هكذا ، نرسل اسم النموذج وقيمة حقل LisetViewData : DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, me.name & "|" & LisetViewData . عند اغلاق النموذج frm_QualityEvaluation ، اكتب : dim x() as string x=split(me.openargs,"|") Forms(x(0)).Visible = True او Forms(split(me.openargs,"|")(0)).Visible = True . وبالنسبة للسجل: dim x() as string x=split(me.openargs,"|") rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & x(1) & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb او rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE id_Ccallg = '" & split(me.openargs,"|")(1) & "' And Deletrecord =1 ORDER BY tbl_QualityEvaluation.id_Ccallg DESC;", sqldb . جعفر 3 1 رابط هذا التعليق شارك More sharing options...
متقاعد قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 17 دقائق مضت, jjafferr said: as string لماذا استخدمت متغير نصي ماذا لوكانت احدى القيمتين المحملتين مختلفة نصي ورقمي او نصي وتاريخ او او الخ 😎 رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 33 دقائق مضت, مبرمج سابق said: لماذا استخدمت متغير نصي من واقع خبرتي ، كنت استعمل متغير variant ، ولكن صادقتني مشاكل فيه ، فتحولت الى نص ، والحمدلله بدون مشاكل الى اليوم 🙂 طبعا لاحقا ، يمكننا تحويل كل جزء/قيمة الى اصلها عن طريق الاوامر CInt و Cdate . هل فيه اشكال في هذا الاستعمال؟ جعفر 1 1 رابط هذا التعليق شارك More sharing options...
متقاعد قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 42 دقائق مضت, jjafferr said: هل فيه اشكال في هذا الاستعمال؟ لا لايوجد اشكال بعد ردك جربت مع OpenArgs لحقول مختلفة وبعضها null ولم اجد مشكلة اما سبب السؤال فقد اعتدت ان استخدم متغير variant اذا كانت الحقول مختلطة وايضا من تجارب سابقة حصلت على خطا في احد الاكواد عندما استخدمت متغير رقمي وكان الحقل فارغ فغيرت الى variant وعمل الكود تحياتي ايها المعلم الفاضل 1 رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 1 1 رابط هذا التعليق شارك More sharing options...
alsihran قام بنشر مايو 23, 2022 الكاتب مشاركة قام بنشر مايو 23, 2022 4 ساعات مضت, jjafferr said: سوف نرسل قيمتين في المتغير OpenArgs ، اظهر رسالة خطأ مع العلمانه تم قرائة رقم السجل من المتغير بشكل صحيح كماهو في الصورة رابط هذا التعليق شارك More sharing options...
kanory قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 3 ساعات مضت, jjafferr said: لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 مو انت بس .... كلنا راجعنا المعلومات معكم فشكرا لكم جميعا .... 2 رابط هذا التعليق شارك More sharing options...
jjafferr قام بنشر مايو 23, 2022 مشاركة قام بنشر مايو 23, 2022 سيدي الفاضل ، ما اعرف وين المشكلة ، ولكن خلينا نحاول نصيدها ، بتجزئة الكود 🙂 شو نوع الحقل id_Ccallg ، نص او رقم ؟ 1. اوقف عمل الاسطر 1 و 2 و 3 (اعمل الاشارة ' على يسار السطر ، او كلمة Rem) ، والمفروض الكود يعطيك كل النتائج حسب Deletedrecord=1 ، 2. اسمح للاسطر 1 و 3 بالعمل ، والمفروض تحصل على نفس الخطأ السابق (هنا نتعامل مع الحقل id_Ccallg كنص) 2. اوقف السطر 1 ، واجعل السطر 2 يعمل (هنا نتعامل مع الحقل id_Ccallg كرقم) Dim x() As String, myWhere As String x = Split(Me.OpenArgs, "|") myWhere = "[id_Ccallg]='" & x(1) & "'" '1 'myWhere = "[id_Ccallg]=" & CInt(x(1)) '2 myWhere = myWhere & " And" '3 myWhere = myWhere & " [Deletrecord]=1" rs.Open "SELECT * FROM tbl_QualityEvaluation WHERE myWhere ORDER BY id_Ccallg DESC;", sqldb جعفر 3 رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان