• 0
mtak33

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

سؤال

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

7 إجابة على هذا السؤال .

  • 0

صديقي العزيز

 

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

 

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

 

ربنا يوفقك

تم تعديل بواسطه بيكو
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رأيي :)

 

 

>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
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : mtak33

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

 

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

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

 

 

بالتوفيق

تم تعديل بواسطه zahrah
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : mtak33

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

 

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

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

 

 

بالتوفيق

 

 

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

 

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

 

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

 

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

 

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

 

 

 

رأيي :)

 

 

>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 كذلك :)

 

جعفر

 

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

 

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

 

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

 

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

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل :

 

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

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

 

 

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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

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

 

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

 

بارك الله لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي  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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .