الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المساعده حول global variables

بدأه mtak33 في 26 ديسمبر 2011 · 6 رد · 492 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الاعزاء

سؤال ارجو المساعده فى اجابته

اعمل على قاعده بيانات و بها اكثر من نموذج و تقرير و كلهم مرتبطين ببعض

حيث انه عندما يفتح اى واحد فانه يحمل بداتا معينه يتشارك فيها مع الاخرين

لذا عندما انتقل من اى نموذج للاخر احدد له نوع الداتا او الحقل المرتبط

هناك تقرير مثلا ممكن افتحه من اكثر من نموذج

و هو مبنى على استعلام و على حد علمى لا ينفع ان اجعل الاستعلام يعتمد على كل نموذج شويه

فكرت فى ان اجعل تلك المتغيرات فى global var بداخل وحده نمطيه

و لكنى فشلت بعد بحث فى ان الاستعلام يكون معتمد على متغيرات فى وحده نمطيه

هدانى تفكيرى الى عمل جدول كلما اغلقت فورم يمسح ما سبق بالجدول و يكتب البيانات الجديده به لكى يستفيد منها باقى النماذج و هكذا

هل هناك حل اخر مبسط و هل اسلوب انشاء virtual table مثل جدول عادى او مختلف

جزاكم الله خيرا

كيميائى / محمد طه

#2

هاه :blink:

#3

اخي الفاضل:

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

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

بمعنى آخر بارك الله بك انك قد اتعبت نفسك بعمل الجداول وادخال البيانات بها ثم تتركها وتستخدم متغيرات طبعا هذا الشيء خطأ في قواعد البيانات فنحن لا نحتاج الى عمل المتغيرات إلا في حالات نادره جدا عندما نريد استخدام المعلومه لفترة مؤقتة فقط وتكون مخزنه في الذاكره لحين اإنتهاء منها ثم تذهب مع الريح .

الحل بارك الله بك

اعادة ربط النماذج والتقارير بالجداول الخاصة بها وبالإستعلامات اذا كنت تريد التصفية او البحث او الحسابات وهناك نقطة هامه انه ليس شرطا اننا عندما قمنا بإنشاء الجدول ان نجعل جميع حقول النموذج او التقرير مرتبطه بهذا الجدول بل على العكس قد لا نأخذ من هذا الجدول سوى حقلين او ثلاثه وفي نموذج آخر او تقرير قد نحتاج الى بقية الحقول اي نأخذ من الحقول ما نحتاجه فقط لبناء تقرير او نموذج وبهذا نكون قد وفرنا على انفسنا الدخول في متاهات ليس لها اول ولا آخر بسبب المتغيرات .

بالتوفيق

1
#4

اولا جزاك الله خيرا اختنا الغاليه ام عهود

و بعد كلامك لا يوجد كلام

و انا مقتنع بكلام حضرتك مائه بالمائه

و لكن...

ربما لم اتمكن من العرض بطريقه جيده

المشكله ان عندى حوالى 6 جداول مرتبطه بجدول واحد one to many

و النماذج و التقارير تتطلب مراحل

يعنى نموذج بيسلم نموذج و كنت اريد الا يكون هناك نماذج مفتوحه الا ما يتم العمل عليه (اعمل على نماذج كلها عبارة عن حقول unbound و استخدم adodb لادخال النتائج و حفظها

طبعا هتقولى و ليه الغلبه دى كلها

الموضوع اصله خاص بعملى و هناك محاذير كثيره منها على سبيل المثال تعدد المستخدمين و اقصد به تعدد معرفتهم بالكمبيوتر

فمنهم من له معرفه و منهم من لم يراه الا و هو مقفول

و الغلطه بتساوى كتير اوى (الفرق ما بين 0.1 و 0.15 ممكن يساوى حوالى 35 الف دولار) :(

و الموضوع بصراحه كبير شويه على و انا باعمله تطوع و تحدى لنفسى على حدود امكانياتى فى المعرفه

-------

فكرت بفكرة اخرى

ما رأيك بعمل نموذج ياخذ القيم التى اريدها و يبقى مخفى

و عند عمل استعلام او تقرير نأخذ القيمه التى نريدها منه

و عند الخروج من الـsession نغلقه

اعتقد انها ابسط من virtual table

و لكن تنقصنى كود معرفه اذا كان النموذج مفتوح اصلا فى الخلفيه ام لا

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

مرة اخرى

جزاك الله كل خير

كيميائى / محمد طه

#5

للرفع

كيميائى / محمد طه

#6

تفضل اخي الكريم

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

Private Sub Form_Open(Cancel As Integer)
If CurrentProject.AllForms("frmZahrah").IsLoaded = False Then
MsgBox " النموذج مغلق وسيتم فتحه الآن"
DoCmd.OpenForm "frmZahrah", , , , , acHidden
Else
MsgBox "النموذج مفتوح"
End If
End Sub

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

Private Sub Form_Open(Cancel As Integer)
If CurrentProject.AllForms("frmZahrah").IsLoaded = False Then
DoCmd.OpenForm "frmZahrah", , , , , acHidden
End If
End Sub

احد هذه الأكواد توضع في كل النماذج التي تريد فتحها عدى النموذج الرئيسي الذي تريد ان يكون فتحه مخفي

النموذج frmZahrah في الكود قم بتغييره الى اسم النموذج الرئيسي الخاص بك الذي تريد ان يتم فتحه مخفي

بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 29 ديسمبر 2011 في 09:23

1
#7

جزاكى الله كل خير ام عهود

و لمزيد من الفائده

وجدت ايضا حل مشابهه فى مدونة ابويوسف جزاه الله خيرا

Public Function IsLoaded(ByVal strFormName As String) As Boolean
'Returns false if form is not open or true if Open
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> 0 Then
        If Forms(strFormName).CurrentView <> 0 Then
            IsLoaded = True
        End If
    End If
End Function

و نضع تلك الداله فى وحده نمطيه لنتمكن من استعمالها فى جميع النماذج او التقارير

ثم فى حدث عند الفتح للنموذج نستدعى تلك الداله

If Not IsLoaded("form1") Then "اى شئ نريد ان نفعله سواء رساله تحذير او فتح نموذج او اغلاق "

كيميائى / محمد طه

مواضيع مشابهة