اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

يوجد بالمرفق 

مثال يحتوي على ثلاثة نماذج 

frm1   و frm2  نقوم من خلالهما فتح النموذج frm 

وعند فتح النموذج وضعت في الحدث عند النقر 

        Me.Visible = False

وعند اغلاق النموذج frm 

حدث 

Forms![frm1].Visible = True

 

بما ان النموذج frm يمكن استدعائه من اكثر من نموذج 

المطلوب :

عند اغلاق النموذج frm 

معرفة النموذج الذي استدعاه ويقوم بعمل 

Forms![].Visible = True

أتمنى يكون المطلوب واضح 

visbelform.accdbFetching info...

قام بنشر

وعليكم السلام 🙂

 

مثل ما يقول المثل: اش لك في البحر واهواله ، و رزق الله على السيف 🙂

فيه طريقة اسهل من طريقة اخوي موسى السهلة 🙂

 

في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs ، 

استعمله في ارسال اسم النموذج الذي تريد تفتحه ، هكذا (لا تغير في السطر شيء ، إلا اذا اردت ان تضيف امر تصفية ، او ارسال معلومات اخرى في المتغير OpenArgs) :

DoCmd.OpenForm "frm", , , , , , me.name

.

وعند اغلاق النموذج frm1 او frm2 ، اكتب :

Forms(me.openargs).Visible = True

 

جعفر

  • Like 4
  • Thanks 2
قام بنشر
  في 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

 

قام بنشر
  في 22‏/5‏/2022 at 15:02, jjafferr said:

في امر فتح النموذج ، في آخر متغير في هذا الامر ، هناك متغير اسمه OpenArgs

Expand  

معلومة جديدة 😄👌🏼

قام بنشر
  في 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 الذي تكلمت عنه

image.png.07dac34a652d003eb3a163fbdd7d3855.png

.

فإذا اردت تصفت النموذج 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  

سترى معلومات اكثر عن هذا المتغير هنا

.

 

جعفر

  • Like 2
قام بنشر
  في 22‏/5‏/2022 at 16:18, Moosak said:

معلومة جديدة 😄👌🏼

Expand  

:wallbash:

متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك

وطالما تمكنا من تمرير قيمة حقل ممكن تمرير اسم النموذج او تسميته الخ

واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول

مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ

مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل

 

عذرا اخ @jjafferrكتب الرد اوف لاين ولم اشاهد ردك

  • Like 1
قام بنشر
  في 22‏/5‏/2022 at 17:28, مبرمج سابق said:

متأكد استاذ موسى 😄 بالامس تحدثنا عن ذلك

Expand  

لا تلومني العتب على النظر 😂

  في 22‏/5‏/2022 at 17:28, مبرمج سابق said:

واحيانا نستخدم ارقام محددة مثلا يكون لدينا نموذج نرغب في استخدامة لعرض بيانات لعدة جداول

مثلا اذا كان الرقم المحمل 1 يكون النموذج خاص بجدول التدريب 2 يكون النموذج لجدول المؤهلات 3 يعرض اسماء المدن الخ

مع امكانية التحكم بالحقول والتسميات والتنسيق كل ذلك بناء على الرقم المحمل

Expand  

لا هذي يبغالها شرح عملي 😏

قام بنشر
  في 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  يقرأ النموذج  ولا يقرأ حقل التصفيه 

كما هو موضح بالصورة 

image.png.3e1f5a7c03503359ab826f8d22d8e076.png

 

قام بنشر
  في 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 هو عبارة عن حقل فيه قيمة فريدة تميز السجلات) 🙂

 

جعفر

  • Like 1
قام بنشر
  في 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

 

قام بنشر

 

  في 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  

.

والجواب كان (رجاء التركيز على جملة التصفية فقط  image.png.64d1d78df39a375dbb0d9ac82287c8e2.png ) :

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 .

 

رجاء تأكد لي ان مفهومي صحيح علشان اكتب لك الرد ،

واذا كان مفهومي غير صحيح ، فرجاء تعطينا الصورة كامله عن قصدك ، لأني الى الآن ما فاهم !!

 

جعفر

  • Like 1
قام بنشر
  في 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 تجعل الامر معقد 

ان شاء الله قدرت اوضح الفكرة 

قام بنشر
  في 23‏/5‏/2022 at 07:15, jjafferr said:

شو LisetViewData ، وشو القيمة اللي فيه

Expand  

image.png.e6fafe962b5e6bcb55d8be535bfdc59b.png

يتم التصفية 

حسب اول حقل  اللي هو المعرف الرقم 

  • تمت الإجابة
قام بنشر

جميل ،

اذن 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

.

جعفر

  • Like 3
  • Thanks 1
قام بنشر
  في 23‏/5‏/2022 at 08:21, مبرمج سابق said:

لماذا استخدمت متغير نصي

Expand  

من واقع خبرتي ، كنت استعمل متغير variant ، ولكن صادقتني مشاكل فيه ، فتحولت الى نص ، والحمدلله بدون مشاكل الى اليوم 🙂

طبعا لاحقا ، يمكننا تحويل كل جزء/قيمة الى اصلها عن طريق الاوامر CInt و Cdate .

 

هل فيه اشكال في هذا الاستعمال؟

 

جعفر

  • Like 1
  • Thanks 1
قام بنشر
  في 23‏/5‏/2022 at 09:46, jjafferr said:

هل فيه اشكال في هذا الاستعمال؟

Expand  

لا لايوجد اشكال

بعد ردك جربت مع OpenArgs لحقول مختلفة وبعضها null ولم اجد مشكلة

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

وايضا من تجارب سابقة حصلت على خطا في احد الاكواد عندما استخدمت متغير رقمي وكان الحقل فارغ فغيرت الى variant وعمل الكود

تحياتي ايها المعلم الفاضل

  • Like 1
قام بنشر
  في 23‏/5‏/2022 at 08:02, jjafferr said:

سوف نرسل قيمتين في المتغير OpenArgs ،

Expand  

اظهر رسالة خطأ

مع العلمانه تم قرائة رقم السجل من المتغير بشكل صحيح كماهو في الصورة 

image.png.c4d31a41ae288d4f5e9d8ee9218c34c5.png

قام بنشر
  في 23‏/5‏/2022 at 10:41, jjafferr said:

لي الشرف في انك تراجع معلوماتي القديمة ، واشوف انها لا تزال صحيحة 🙂

 

Expand  

مو انت بس .... كلنا راجعنا المعلومات معكم فشكرا لكم جميعا .... 

  • Like 2
قام بنشر

سيدي الفاضل ، ما اعرف وين المشكلة ، ولكن خلينا نحاول نصيدها ، بتجزئة الكود 🙂

 

شو نوع الحقل 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

 

جعفر

  • Like 3

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