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

متغيرات تعمل طوال البرنامج

بدأه mtak33 في 25 أبريل 2013 · 7 رد · 1,067 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الكرام 

 

سؤال صغير و ارجو ارشادى الى الصواب

 

لدى قاعده بيانات و عند الدخول , يدخل المستخدم عدة متغيرات (ارقام , تواريخ ,....)

 

و تلك المتغيرات يتم الاعتماد عليها طوال عمله داخل البرنامج ( يتم استخدامها لفتح نماذج او تقارير مبنيه عليها , استخدامها داخل استعلامات)

 

و البرنامج كبير جدا و متشعب و الارقام ممكن تتغير داخل البرنامج بناء على طلب المستخدم و بالتالى طلبات النماذج و الاستعلامات تتغير

 

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

 

وجدت امامى ثلاث خيارات 

 

1- عمل متغيرات فى وحده نمطيه (global variable)

 

2- عمل نموذج مخفى و اضع فيه تلك المتغيرات

 

3- عمل جدول و يتم ادخال المتغيرات فيه و عند الخروج يتم مسح كل ما فيه

 

 

 

ايهم افضل من حيث السلاسه فى العمل و القدره على الاستخدام داخل مختلف اجزاء البرنامج

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

#2

صديقي العزيز

 

انا لست مصمم و لكن اسهل شيء هو الجدول حيث عندما يقابلك اي تعقيدات يمكن التحكم به

 

و طبعا لابد ان تأخذ براي الاكثر خبره في هذه الحالات و منهم ام عهود 

 

ربنا يوفقك

تم تعديل هذه المشاركة بواسطة بيكو في 25 أبريل 2013 في 18:33

1
#3

رأيي :)

 

 

>1- عمل متغيرات فى وحده نمطيه (global variable)

صعب ربطه بالاستعلام :(

 

>2- عمل نموذج مخفى و اضع فيه تلك المتغيرات

هذه طريقتي المفضلة :)

 

>3- عمل جدول و يتم ادخال المتغيرات فيه و عند الخروج يتم مسح كل ما فيه

أ- اذا عملت هذا الجدول في البرنامج ، فإن إضافة البيانات ومسحها ، سيضخم البرنامج ، ويجب عليك استخدام Compact and Repair بين الحين والآخر لإسترداد المساحات الفاضية ، وتقليل حجم البرنامج.

ب- اما الطريقة الافضل للجداول المؤقته ، فهي عمل جدول في برنامج آخر خارج برنامجك ، بحيث تطلبه متى شئت وتمسحه متى شئت :)

وقد استعملت هذه الطريقة في احد برامجي كالتالي:

- برنامجي اسمه A.mdb ،

- عملت الجدول في برنامج مؤقت B.mdb ،

- ثم استخدمت كود وحفظت B.mdb  داخل احد جداول A.mdb بصيغة BLOB ،

- وعند فتح A.mdb فإن الكود يستخرج ويحفظ B.mdb في المجلد المؤقت للمستخدم ،

- وعند غلق A.mdb ، فإن كود آخر يمسح B.mdb كذلك :)

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 25 أبريل 2013 في 19:25

1
#4

اخي الفاضل : mtak33

وجميع الأخوة الكرام

 

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

بالنسبة للخوف من تضخم القاعدة فالأمر بسيط وسهل فكل ما عليك فعله هو ان تقوم بإختيار ضغط واصلاح عند اغلاق قاعدة البيانات من خلال الخيارات .

 

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 25 أبريل 2013 في 22:44

1
#5
zahrah كتب:

اخي الفاضل : mtak33

وجميع الأخزة الكرام

 

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

بالنسبة للخوف من تضخم القاعدة فالأمر بسيط وسهل فكل ما عليك فعله هو ان تقوم بإختيار ضغط واصلاح عند اغلاق قاعدة البيانات من خلال الخيارات .

 

 

بالتوفيق

 

 

الغاليه ام عهود , بارك الله لك و طالما كانت تلك اجابتك , فيجب استعمالها فى الحال  :)

 

و لى سؤال بسيط , تلك القاعده ستكون لاكثر من شخص يعملون عليها (ليس فى نفس الوقت- و ستكون على جهاز واحد ) لذا ساجعلها بالمتداد .accdr و سوف اسوى لها الريبون الخاص بها

 

لذا فمسألة الضغط هذه لن تكون من سلطات من يستعملونها , فهل اجعلها اوتوماتيكيه عند كل غلق للبرنامج 

 

و هل فى هذا مضره للبرنامج (حيث انه يفتح و يغلق اكتر من 30 مره فى الـ 24 ساعه )

 

و اذا اعطيتنى الكود الخاص بهذا مع 2007 فهذا كرم اخلاق زائد منك و قد كفيت ووفيت

 

 

 

jjafferr كتب:

رأيي :)

 

 

>1- عمل متغيرات فى وحده نمطيه (global variable)

صعب ربطه بالاستعلام :(

 

>2- عمل نموذج مخفى و اضع فيه تلك المتغيرات

هذه طريقتي المفضلة :)

 

>3- عمل جدول و يتم ادخال المتغيرات فيه و عند الخروج يتم مسح كل ما فيه

أ- اذا عملت هذا الجدول في البرنامج ، فإن إضافة البيانات ومسحها ، سيضخم البرنامج ، ويجب عليك استخدام Compact and Repair بين الحين والآخر لإسترداد المساحات الفاضية ، وتقليل حجم البرنامج.

ب- اما الطريقة الافضل للجداول المؤقته ، فهي عمل جدول في برنامج آخر خارج برنامجك ، بحيث تطلبه متى شئت وتمسحه متى شئت :)

وقد استعملت هذه الطريقة في احد برامجي كالتالي:

- برنامجي اسمه A.mdb ،

- عملت الجدول في برنامج مؤقت B.mdb ،

- ثم استخدمت كود وحفظت B.mdb  داخل احد جداول A.mdb بصيغة BLOB ،

- وعند فتح A.mdb فإن الكود يستخرج ويحفظ B.mdb في المجلد المؤقت للمستخدم ،

- وعند غلق A.mdb ، فإن كود آخر يمسح B.mdb كذلك :)

 

جعفر

 

يا استاذ جعفر , جزاك الله كل خير و فعلا كما ذكرت سيادتك وجدت مشكله فى المتغير عند استخدام الاستعلام

 

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

 

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

 

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

 

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

 

و على كل حال , جزاك الله كل خير

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

#6

اخي الفاضل :

 

الموضوع  يحتاج منك لعمل خطوتين فقط لا غير :

1. عمل استعلام حذف لبيانات الجدول المؤقت  و عند اغلاق قاعدة البيانات تقوم بوضع كود تشغيل استعلام الحذف

 

 

DoCmd.SetWarnings False
DoCmd.OpenQuery "qryDelete"
DoCmd.SetWarnings True
DoCmd.Quit
 
 
2. التأشير على خانة ضغط قاعدة البيانات من خيارات الأكسيس
 
post-15367-0-14750300-1366920219_thumb.g
 
هذه الخطوة إن شاء الله ليس فيها اي ضرر لأنها من صميم قاعدة البيانات
 
بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 25 أبريل 2013 في 23:13

1
#7

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

 

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

 

انما كده تمام جدا

 

بارك الله لك

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

#8

اخي  mtak33 :)

وأختي الفاضلة زهرة :)

 

سأشرح لاحقاً الاسباب التي افضل فيها الخيار 2 :)

لكني الآن ، وبما انك ستستخدم الجدول في إدخال المعلومات واستخراجها من جدول ،

فإني سأشرح لك في الجزء الاول (هذه المشاركة) طرق سهلة لقراءة المعلومات من الجدول :)

 

أحد طرق قراءة المعلومات من الجدول هي DLookup ،

وبدل ان نستخدم المعادلة الطويلة لـ DLookup في كل مرة نريد قراءة معلومة ،

فإني اضع لك بعض الخيارات والطرق السهلة لقراءة معلومة من الجدول ،

اولاً: نعمل الكود:

 

Public Function aRemark(N)

'call the Arabic Remarks in Table tbl_Remarks_A
aRemark = DLookup("[Remark]", "tbl_Remarks_A", "[Remark_ID] = " & N)

End Function

ثانياً: هذه صورة الجدول ببياناته:

post-273849-0-07572400-1367151519_thumb.

 

الصورة التالية تظهر الطرق المتعددة للقراءة من الجدول:

post-273849-0-50235300-1367150629_thumb.

 

والطرق هي:

1. و 2. القراءة من الكود عند حدث فتح النموذج:

Private Sub Form_Load()

'get the titles from tbl_Remarks_a
Me.lbl_Ataba_Name.Caption = aRemark(1)
Me.show_Last_Receipt_Number = aRemark(5)

'maximize
DoCmd.Maximize
DoCmd.RunCommand acCmdAppMaximize

End Sub

 

3. من ضمن خاصيات الخانه ، في القيمة الفرضية:

post-273849-0-88230900-1367151845.jpg

 

4. في Control Source :

post-273849-0-89736000-1367151999.jpg

 

5. عندما تختار التاريخ:الى ويكون اكبر من التاريخ:من ، فالحدث بعد التحديث يكون (لاحظ ، لا توجد كتابة بالعربية في الكود):

Private Sub From_To_Date()

'from should be less than to
If Me.From_Date > Me.To_Date Then
MsgBox aRemark(4) & vbCrLf & _
"Date:From should be Less than Date:To", vbCritical
Exit Sub
End If

End Sub

 

 

تلخيص أعلاه :

عندما تريد القراءة من خانة Remark ، سجل Remark_ID مثلا السجل 5 ،

فكل الذي تدخله في اي من الطرق أعلاه هو:

aRemark(5)

بدلاً عن:

aRemark = DLookup("[Remark]", "tbl_Remarks_A", "[Remark_ID] = " & N)

 

جعفر :)

No_Arabic_In_Code.zip

1

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