alsihran قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 السلام عليكم ورحمة الله وبركاتة يوجد بالمرفق مثال يحتوي على ثلاثة نماذج frm1 و frm2 نقوم من خلالهما فتح النموذج frm وعند فتح النموذج وضعت في الحدث عند النقر Me.Visible = False وعند اغلاق النموذج frm حدث Forms![frm1].Visible = True بما ان النموذج frm يمكن استدعائه من اكثر من نموذج المطلوب : عند اغلاق النموذج frm معرفة النموذج الذي استدعاه ويقوم بعمل Forms![].Visible = True أتمنى يكون المطلوب واضح visbelform.accdb
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 تفضل أخي السهران 🙂 تم تعريف متغير عام في موديول يحفظ اسم النموذج الأخير ، ومن ثم يستدعيه مجددا عند إغلاق النموذج frm visbelform.accdb 4 1
alsihran قام بنشر مايو 22, 2022 الكاتب قام بنشر مايو 22, 2022 33 دقائق مضت, Moosak said: تفضل أخي السهران يعطيك العافية أستاذ
jjafferr قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 وعليكم السلام 🙂 مثل ما يقول المثل: اش لك في البحر واهواله ، و رزق الله على السيف 🙂 فيه طريقة اسهل من طريقة اخوي موسى السهلة 🙂 في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، استعمله في ارسال اسم النموذج الذي تريد تفتحه ، هكذا (لا تغير في السطر شيء ، إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) : DoCmd.OpenForm "frm", , , , , , me.name . وعند اغلاق النموذج frm1 او frm2 ، اكتب : Forms(me.openargs).Visible = True جعفر 4 2
alsihran قام بنشر مايو 22, 2022 الكاتب قام بنشر مايو 22, 2022 39 دقائق مضت, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، انا بالفعل استخدم هذه طريقة في فتح النموذج لكن ما خطر في بالي اني ممكن ارسل اسم النموذج الان نأتي للشق الاهم في هذه الكود 38 دقائق مضت, jjafferr said: إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) : كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 منذ ساعه, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs معلومة جديدة 😄👌🏼
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
متقاعد قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 منذ ساعه, Moosak said: معلومة جديدة 😄👌🏼 متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك وطالما تمكنا من تمرير قيمة حقل ممكن تمرير اسم النموذج او تسميته الخ واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل عذرا اخ @jjafferrكتب الرد اوف لاين ولم اشاهد ردك 1
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 6 دقائق مضت, مبرمج سابق said: متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك لا تلومني العتب على النظر 😂 6 دقائق مضت, مبرمج سابق said: واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل لا هذي يبغالها شرح عملي 😏
jjafferr قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 ارجع لموضوع امس (انا تركت لك الرابط في مشاركتي السابقة) ، فيه تفاصيل اكثر 🙂 جعفر
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 يقرأ النموذج ولا يقرأ حقل التصفيه كما هو موضح بالصورة
jjafferr قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 20 دقائق مضت, alsihran said: حيث ان المتغير OpenArgs يقرأ النموذج ولا يقرأ حقل التصفيه الله يطول عمرك ، انت خلطت الحابل بالنابل !! احنا استعملنا المتغير OpenArgs لإرسال اسم النموذج ، وهو يعمل بطريقة صحيحة حسب الصورة اعلاه ، ولكنك هنا تحتاج الى: 12 ساعات مضت, jjafferr said: فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر فإذن استعمل الحقل ID هنا (ID هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) 🙂 جعفر 1
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
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
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 تجعل الامر معقد ان شاء الله قدرت اوضح الفكرة
alsihran قام بنشر مايو 23, 2022 الكاتب قام بنشر مايو 23, 2022 12 دقائق مضت, jjafferr said: شو LisetViewData ، وشو القيمة اللي فيه يتم التصفية حسب اول حقل اللي هو المعرف الرقم
أفضل إجابة 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
متقاعد قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 17 دقائق مضت, jjafferr said: as string لماذا استخدمت متغير نصي ماذا لوكانت احدى القيمتين المحملتين مختلفة نصي ورقمي او نصي وتاريخ او او الخ 😎
jjafferr قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 33 دقائق مضت, مبرمج سابق said: لماذا استخدمت متغير نصي من واقع خبرتي ، كنت استعمل متغير variant ، ولكن صادقتني مشاكل فيه ، فتحولت الى نص ، والحمدلله بدون مشاكل الى اليوم 🙂 طبعا لاحقا ، يمكننا تحويل كل جزء/قيمة الى اصلها عن طريق الاوامر CInt و Cdate . هل فيه اشكال في هذا الاستعمال؟ جعفر 1 1
متقاعد قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 42 دقائق مضت, jjafferr said: هل فيه اشكال في هذا الاستعمال؟ لا لايوجد اشكال بعد ردك جربت مع OpenArgs لحقول مختلفة وبعضها null ولم اجد مشكلة اما سبب السؤال فقد اعتدت ان استخدم متغير variant اذا كانت الحقول مختلطة وايضا من تجارب سابقة حصلت على خطا في احد الاكواد عندما استخدمت متغير رقمي وكان الحقل فارغ فغيرت الى variant وعمل الكود تحياتي ايها المعلم الفاضل 1
jjafferr قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 1 1
alsihran قام بنشر مايو 23, 2022 الكاتب قام بنشر مايو 23, 2022 4 ساعات مضت, jjafferr said: سوف نرسل قيمتين في المتغير OpenArgs ، اظهر رسالة خطأ مع العلمانه تم قرائة رقم السجل من المتغير بشكل صحيح كماهو في الصورة
kanory قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 3 ساعات مضت, jjafferr said: لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 مو انت بس .... كلنا راجعنا المعلومات معكم فشكرا لكم جميعا .... 2
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
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.