alsihran قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 السلام عليكم ورحمة الله وبركاتة يوجد بالمرفق مثال يحتوي على ثلاثة نماذج frm1 و frm2 نقوم من خلالهما فتح النموذج frm وعند فتح النموذج وضعت في الحدث عند النقر Me.Visible = False وعند اغلاق النموذج frm حدث Forms![frm1].Visible = True بما ان النموذج frm يمكن استدعائه من اكثر من نموذج المطلوب : عند اغلاق النموذج frm معرفة النموذج الذي استدعاه ويقوم بعمل Forms![].Visible = True أتمنى يكون المطلوب واضح visbelform.accdbFetching info...
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 تفضل أخي السهران 🙂 تم تعريف متغير عام في موديول يحفظ اسم النموذج الأخير ، ومن ثم يستدعيه مجددا عند إغلاق النموذج frm visbelform.accdbFetching info... 4 1
alsihran قام بنشر مايو 22, 2022 الكاتب قام بنشر مايو 22, 2022 في 22/5/2022 at 14:13, Moosak said: تفضل أخي السهران Expand يعطيك العافية أستاذ
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 في 22/5/2022 at 15:02, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، Expand انا بالفعل استخدم هذه طريقة في فتح النموذج لكن ما خطر في بالي اني ممكن ارسل اسم النموذج الان نأتي للشق الاهم في هذه الكود في 22/5/2022 at 15:02, jjafferr said: إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) : Expand كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 في 22/5/2022 at 15:02, jjafferr said: في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs Expand معلومة جديدة 😄👌🏼
jjafferr قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 في 22/5/2022 at 15:44, alsihran said: DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData Expand اولا: اذا كان LisetViewData اسم النموذج الذي انت عليه الآن ، فتقدر تكتب السطر كالتالي (حيث me.name معناه اسم النموذج الذي انت فيه الآن) : DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, me.name ثانيا: في 22/5/2022 at 15:44, alsihran said: كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة Expand بالنسبة للتصفية ، فاثناء كتابتك للامر ، سترى ان الاكسس يخبرك المتغير الذ يجب ان تكتبه ، ومنها 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 . جعفر في 22/5/2022 at 16:18, Moosak said: معلومة جديدة 😄👌🏼 Expand سترى معلومات اكثر عن هذا المتغير هنا . جعفر 2
متقاعد قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 في 22/5/2022 at 16:18, Moosak said: معلومة جديدة 😄👌🏼 Expand متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك وطالما تمكنا من تمرير قيمة حقل ممكن تمرير اسم النموذج او تسميته الخ واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل عذرا اخ @jjafferrكتب الرد اوف لاين ولم اشاهد ردك 1
Moosak قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 في 22/5/2022 at 17:28, مبرمج سابق said: متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك Expand لا تلومني العتب على النظر 😂 في 22/5/2022 at 17:28, مبرمج سابق said: واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل Expand لا هذي يبغالها شرح عملي 😏
jjafferr قام بنشر مايو 22, 2022 قام بنشر مايو 22, 2022 ارجع لموضوع امس (انا تركت لك الرابط في مشاركتي السابقة) ، فيه تفاصيل اكثر 🙂 جعفر
alsihran قام بنشر مايو 23, 2022 الكاتب قام بنشر مايو 23, 2022 في 22/5/2022 at 17:18, jjafferr said: فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر Expand الله يعطيك العافية استاذ هذا عامل تحديد السجل في النموذج الذي نستدعية يجلب البيانات من 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 في 23/5/2022 at 04:57, alsihran said: حيث ان المتغير OpenArgs يقرأ النموذج ولا يقرأ حقل التصفيه Expand الله يطول عمرك ، انت خلطت الحابل بالنابل !! احنا استعملنا المتغير OpenArgs لإرسال اسم النموذج ، وهو يعمل بطريقة صحيحة حسب الصورة اعلاه ، ولكنك هنا تحتاج الى: في 22/5/2022 at 17:18, jjafferr said: فإذا اردت تصفت النموذج frm بحقل الرقم ID مثلا واسم مربع القائمة lst_1 ، فيصبح الامر Expand فإذن استعمل الحقل ID هنا (ID هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) 🙂 جعفر 1
alsihran قام بنشر مايو 23, 2022 الكاتب قام بنشر مايو 23, 2022 في 23/5/2022 at 05:22, jjafferr said: فإذن استعمل الحقل ID هنا (ID هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) Expand نعم استاذ مربع القائمة اول حقل به هو حقل فريد ويعمل مع هذا الكود بشكل سليم 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 في 23/5/2022 at 05:52, alsihran said: DoCmd.OpenForm "frm_QualityEvaluation", , , , , acDialog, LisetViewData Expand الامر DoCmd.OpenForm لفتح النموذج frm_QualityEvaluation ، السؤال: ما هو الحقل LisetViewData وما قيمته ؟ سؤالك الاصل كان : في 22/5/2022 at 12:08, alsihran said: frm1 و frm2 نقوم من خلالهما فتح النموذج frm Expand لهذا السبب انا اقترحت عليك استعمال المتغير OpenArgs في امر فتح النموذج (لاحظ اننا ارسلنا اسم النموذج الذي نحن عليه الآن me.name كقيمة عن المتغير OpenArgs) : DoCmd.OpenForm "frm", , , , , , me.name وانتهى الكلام عن فتح واغلاق النموذج ---------------------------------------------------------- فتح النموذج على السجل الذي نحن عليه الآن في 22/5/2022 at 15:44, alsihran said: كيف اضيف عامل التصفية حسب السجل الذي يقع عليه التركيز في مربع القائمة Expand . والجواب كان (رجاء التركيز على جملة التصفية فقط ) : 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 في 23/5/2022 at 06:46, jjafferr said: اعتقد سؤالك كان لازم يكون كالتالي: Expand هذا صحيح استاذ كان سؤالي بقصد الرجوع للنموذج اللي استدعى النموذج لم وضعت انت الحل لقيت أني استخدم تقريبا نفس الكود في عامل التصفية فقط كان محتاج يضاف إليه اسم النموذج اللي استدعى النموذج للرجوع اليه عند الاغلاق الل هذا هو 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 في 23/5/2022 at 07:15, jjafferr said: شو LisetViewData ، وشو القيمة اللي فيه Expand يتم التصفية حسب اول حقل اللي هو المعرف الرقم
تمت الإجابة 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 في 23/5/2022 at 08:02, jjafferr said: as string Expand لماذا استخدمت متغير نصي ماذا لوكانت احدى القيمتين المحملتين مختلفة نصي ورقمي او نصي وتاريخ او او الخ 😎
jjafferr قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 في 23/5/2022 at 08:21, مبرمج سابق said: لماذا استخدمت متغير نصي Expand من واقع خبرتي ، كنت استعمل متغير variant ، ولكن صادقتني مشاكل فيه ، فتحولت الى نص ، والحمدلله بدون مشاكل الى اليوم 🙂 طبعا لاحقا ، يمكننا تحويل كل جزء/قيمة الى اصلها عن طريق الاوامر CInt و Cdate . هل فيه اشكال في هذا الاستعمال؟ جعفر 1 1
متقاعد قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 في 23/5/2022 at 09:46, jjafferr said: هل فيه اشكال في هذا الاستعمال؟ Expand لا لايوجد اشكال بعد ردك جربت مع OpenArgs لحقول مختلفة وبعضها null ولم اجد مشكلة اما سبب السؤال فقد اعتدت ان استخدم متغير variant اذا كانت الحقول مختلطة وايضا من تجارب سابقة حصلت على خطا في احد الاكواد عندما استخدمت متغير رقمي وكان الحقل فارغ فغيرت الى variant وعمل الكود تحياتي ايها المعلم الفاضل 1
jjafferr قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 1 1
alsihran قام بنشر مايو 23, 2022 الكاتب قام بنشر مايو 23, 2022 في 23/5/2022 at 08:02, jjafferr said: سوف نرسل قيمتين في المتغير OpenArgs ، Expand اظهر رسالة خطأ مع العلمانه تم قرائة رقم السجل من المتغير بشكل صحيح كماهو في الصورة
kanory قام بنشر مايو 23, 2022 قام بنشر مايو 23, 2022 في 23/5/2022 at 10:41, jjafferr said: لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂 Expand مو انت بس .... كلنا راجعنا المعلومات معكم فشكرا لكم جميعا .... 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.