• 0
alalal

وداعا للاستعلامات في برامجنا الى الابد

سؤال

بسم الله الرحمن الرحيم

والصلاة والسلام على أشرف الخلق والمرسلين سيدنا وحبيبنا وشفيعنا ورسولنا محمد صلوات ربي وسلامه عليه

وعلى ال بيته الكرام الطيبين وعلى صحبه الغر الميامين

أخوتي الكرام مشرفين وأعضاء منتدى الفريق العربي

اليوم أن شاء الله نتعلم سويا كيف نتخلص الى الابد من مشكلة الاستعلامات في برامجنا

وقبل أن نبدأ بالشرح مستعينين بالله رب العالمين دعونا نوضح أمر هام جدا

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

فكلنا يعلم أنه لو لم يعلمنا غيرنا ما تعلمنا

والان أخوتي في الله هيا بنا نرفع أيدينا عاليا ونقول معا وبأعلى صوت – وداعا للاستعلامات في برامجنا الى الابد

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

كلنا يعلم أن الطريقه الوحيده للحماية والتي لم يتم أختراقها الى الان هي تأمين الفيجول بيسك عن طريق تحويل قاعدة البيانات الى نوع mde وبعدها لن يستطيع أي شخص أن يرى الاحداث الموجوده في برامجنا

وهنا يجب أن نتوقف قليلا

لما يجب علينا أن نجعل الاستعلامات موجوده بشكل دائم في برامجنا وكلنا يعلم أنه من السهل جدا

أن يتلاعب بها أحد ويسبب تلفها وتلف برامجنا معها

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

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

لانشاء الاستعلام وفتح النموذج أو التقرير ومن ثم حذف الاستعلام مره أخرى قد تصل الى ثانية واحده

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

وهذا من المستحيلات إذا تم تحويل قاعدة البيانات الى نوع mde

والان تتبع أخي الخطوات معي لنعرف كيف نصنع الاستعلام برمجيا

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

أولا- في حالة كان مصدر النموذج أو التقرير أستعلام واحد فقط

1 – أنشأ الاستعلام بالطريقه العادية ثم أنقر بزر الماوس الايمن وأحتر عرض SQL كما في الصوره

1.GIF

2 – انسخ جملة SQL الخاصه بالاستعلام والتي سوف نستخدمها في الحدث الخاص بانشاء الاستعلام برمجيا كما في الصوره

2.GIF

2 – في زر الامر أنسخ الكود التالي

[left] [right]Dim استعلام1 As Object[/left]

[right]Set استعلام1 = CurrentDb.CreateQueryDef("استعلام1", "هنا يتم لصق جملة SQL;")[/right]

[right]وهذا هو الجزء الذي سوف يقوم بأنشاء استعلام اسمه استعلام1 ومكوناته هي جملة SQL [/right]

[right]وبعد ان يتم أنشاء الاستعلام نفتح النموذج أو التقرير الذي سوف يتم عرض البيانات به عن طريق الكود التالي[/right]

[right]DoCmd.OpenForm " استعلام واحد"[/right]

[right]وبعد فتح النموذج نقوم بوضع كود لحذف الاستعلام فقد أنتهت حاجتنا اليه الان عن طريق الكود التالي[/right]

[right]CurrentDb.QueryDefs.Delete "استعلام1"[/right]

[/right]

و يصبح الحدث في شكله النهائي بعد لصق جملة SQL به على النحو التالي

[left] [right]Dim استعلام1 As Object[/left]

[right]Set استعلام1 = CurrentDb.CreateQueryDef("استعلام1", "SELECT البيانات.الاسم, البيانات.[تاريخ الميلاد], البيانات.العمر, البيانات.الجنسية FROM البيانات;")[/right]

[right]DoCmd.OpenForm "استعلام واحد"[/right]

[right]CurrentDb.QueryDefs.Delete "استعلام1"[/right]

[/right]

ثانيا – في حالة كان مصدر النموذج أو التقرير استعلام مركب بمعنى ان الاستعلام مبني على استعلام أخر

هنا سوف نقوم بانشاء الاستعلام الاول برمجينا كما شرحنا ثم الاستعلام الثاني ثم الاستعلام الثالث وهكذا

كما في نموذج استعلام مركب الموجود في المثال المرفق فمصدر النموذج هو استعلام3 واستعلام3 مبني

على استعلام2 واستعلام2 مبني على استعلام1 واستعلام1 مبني على جدول البيانت

والان أترككم مع المرفق حتى نتعرف على المثال بوضوح

ولا تنسا أخي قبل أغلاق البرنامج أن تقول وبصوت عالي – وداعا للاستعلامات في برامجنا الى الابد

وأخيرا – لا تنسونا من صالح دعاكم

أخيكم أبو مريم - ALALAL

__________________.rar

تم تعديل بواسطه alalal
0

شارك هذا الرد


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

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

  • 0

جزاك الله كل خير أخي أبو مريم

شكراً لك على هذا المجهود .... وجعل الله ما تقدمه في ميزان حسناتك ...

0

شارك هذا الرد


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

بارك الله بك اخي ابو مريم

فكرة جميلة جدا"

0

شارك هذا الرد


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

بارك الله فيك أخي الحبيب أبو رهف جزاك الله خيرا

وبارك الله فيك أخي كارم على مرورك الكريم

0

شارك هذا الرد


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

السلام عليكم

ان شاء الله تكون الفكرة جميلة بارك الله فيك

0

شارك هذا الرد


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

مشكور أبو مريم

نفع الله بعلمك

0

شارك هذا الرد


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

اخي ابو مريم

ماشاء الله عليك

وبارك الله فيك

0

شارك هذا الرد


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

أخي أبو مريم: فكرة جميلة جداً ولكن اسمح لي بتعليق بسيط ألا هو أن هذه الطريقة تعتبر مثالية لكل محترفي الاكسس وكتابة الاكواد والاجراءات، ومنا الكثير يعتفمد على الاستعلامات التي يتيحها الاكسس حتى لا يتعرض بسبب خطا في كتابة الكود إلى توقف البرنامج. حتى أننا بعد إحتراف البرمجة الاساسية للأكسس نريد معرفة كيفية كتابة أكواد الاستعلامات بطريقة صحيحة داخل الكود. هل تعلم أن هناك بعض البرامج تم بنائها بالكامل باستخدام الماكرو وليس الاكواد؟ وأتذكر أنني قد قرأت كتاباً في الكسس منذ زمن بعيد أسمه No Code وقد أعجبتني فكرته جداً.

على العموم نبدأ من الأن بالتطوير واستخدام طريقتك الجميلة في التخلص من الاستعلامات ولكن علينا أن نبدأ أولاً في تعلم كيفية كتابة الاستعلامات داخل الاكواد.

طبعاً أنا بتتكلم عن نفسي من حيث أنني ما زلت مبتدئ.

شكراً جزيلاً أخي الكريم وفتح الله عليك من بركاته.

0

شارك هذا الرد


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

مشكور أخي ابو مريم على هذه المشاركة وجعلها الله في ميزان حسناتك.

تقبل تحياتي

0

شارك هذا الرد


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

مشكور أخي أبو مريم

لكن لي وجهة نظر

أن الكود غالبا ما يكون أبطأ من الاستعلام

لذا اذا كان المبرمج من شيمه البطء فعليه أن يكثر من الاكواد

أما من هو ممن يبغى السرعه فعليه بالاستعلامات

هذه وجهة نظري

ارجوا ان تتقبلها

ولكن في النهايه مثال جميل من أخ عزيز

أسأل الله أن يوفقك في ما تبغي

الله المستعان

أبو مروان

0

شارك هذا الرد


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

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

جزاك الله خير أخي ابو مريم وبارك الله بك ومثله للاخ الكريم الذي زودنا بهذا المثال الجميل المرفق الذي يقوم بتحويل عبارة Sql الى VBA....

واسمح لي بملاحظة بسيطة أو بالأخرى إضافة لما تفضل به الأخ team2000 , واذا لا بد من عمل هذا فلا يضر ان نحتفظ بأصول هذه الإستعلامات في نسخ جانبية وذلك لزوم التعديل فكما تعلم ان أكثرنا يصعب عليه التعديل مباشرة على sql كحالي أنا مثلا .

تقبل تحياتي وشكرا لك ..

أبو عدنان

SqltoVBA.rar

0

شارك هذا الرد


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

وهذه أيضاً ملاحظة جميلة من أخينا أبو عدنان وهي التعديل على الاستعلامات إذا دعت الحاجة. شكراً للأخوة الكرام على تفاعلهم الكريم.

0

شارك هذا الرد


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

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

بارك الله فيكم جميعا أخوتي الكراك

shamal وMR ACCESS وroan27 وteam2000 وdbprog و أبو مروان و أبو عدنان

أخي أبو مريم: فكرة جميلة جداً ولكن اسمح لي بتعليق بسيط ألا هو أن هذه الطريقة تعتبر مثالية لكل محترفي الاكسس وكتابة الاكواد والاجراءات، ومنا الكثير يعتفمد على الاستعلامات التي يتيحها الاكسس حتى لا يتعرض بسبب خطا في كتابة الكود إلى توقف البرنامج. حتى أننا بعد إحتراف البرمجة الاساسية للأكسس نريد معرفة كيفية كتابة أكواد الاستعلامات بطريقة صحيحة داخل الكود. هل تعلم أن هناك بعض البرامج تم بنائها بالكامل باستخدام الماكرو وليس الاكواد؟ وأتذكر أنني قد قرأت كتاباً في الكسس منذ زمن بعيد أسمه No Code وقد أعجبتني فكرته جداً.

على العموم نبدأ من الأن بالتطوير واستخدام طريقتك الجميلة في التخلص من الاستعلامات ولكن علينا أن نبدأ أولاً في تعلم كيفية كتابة الاستعلامات داخل الاكواد.

طبعاً أنا بتتكلم عن نفسي من حيث أنني ما زلت مبتدئ.

أخي الكريم الطريقه ليست لمحترفي الاكسس فقط ولكنها أيضا للمبتدأين من هم مثلي ومثلك

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

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

	Dim  استعلام1 As Object
Set استعلام1= CurrentDb.CreateQueryDef("استعلام1", "هنا يتم لصق جملة sql;")

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

	DoCmd.OpenForm "استعلام واحد"

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

	CurrentDb.QueryDefs.Delete "استعلام1"

فكما ترى أخي أن الاكواد صغيره جدا ولا تحتاج الى محترف في الاكسس

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

بدلا من جملة ( هنا يتم لصق جملة sql ; ) في الكود الاول

وبالنسبه للاخ العزيز علينا أبو مروان وملاحظته التاليه

أن الكود غالبا ما يكون أبطأ من الاستعلام

لذا اذا كان المبرمج من شيمه البطء فعليه أن يكثر من الاكواد

أما من هو ممن يبغى السرعه فعليه بالاستعلامات

هذه وجهة نظري

ارجوا ان تتقبلها

ولكن في النهايه مثال جميل من أخ عزيز

أسأل الله أن يوفقك في ما تبغي

أخي أبو مروان من حيث السرعه أخي فأن العكس هو الصحيح

أن كثرة الاستعلامات والنماذح والتقارير يؤثر بشكل كبير جدا جدا على حجم قاعدة البيانات

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

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

أن نجعل قاعدة البيانات عند أصغر حجم ممكن حتى نتجنب حدوث المشكله التي ذكرتها لنا

وبالنسبه لملاحظه أخونا الفاضل أبو عدنان والخاصه بالتعديل

واسمح لي بملاحظة بسيطة أو بالأخرى إضافة لما تفضل به الأخ team2000 , واذا لا بد من عمل هذا فلا يضر ان نحتفظ بأصول هذه الإستعلامات في نسخ جانبية وذلك لزوم التعديل فكما تعلم ان أكثرنا يصعب عليه التعديل مباشرة على sql كحالي أنا مثلا .

بالنسبه أخي الفاضل للتعديل وأنك تفضل الاحتفاظ بأصول هذة الاستعلامات لديك فليس هناك داعي لذلك

لانك تستطيع بكل سهوله استخراج الاستعلام من الكود السابق فقط كل ما عليك أن تقوم بتظليل الجزء الخاص

بالاستعلام من الكود ومن ثم نسخه والذهاب الى قائمة الاستعلامات وفتح استعلام جديد

عندها سوف يظهر لك مربح حوار لتختار مصدر الاستعلام الجديد

لا تختار اي شيء فقط أغلق مربع الحوار

ثم كلك يمين ثم عرض sql

سوف يفتح معك الاستعلام الجديد وتجد به كلمه واحده SELECT

أحذفها والصق الجزء الخاص بالاستعلام القديم الذي قمت بنسخه من الكود الخاص بأنشاء الاستعلام

وبعدها أعد عرض الاستعلام بالصوره العادية وعدل عليه كيفما تشاء وفي أي وقت وهكذا

الموضوع كله أخوتي الكرام عباره عن نسخ ولصق لا أكثر

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

أستودعكم الله - أخيكم أبو مريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الموضوع كله أخوتي الكرام عباره عن نسخ ولصق لا أكثر

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

على كل خال شوف هذه اول مشكلة ظهرت عندي بعد كوبي وبيست ..

post-139265-1257961607_thumb.png

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

0

شارك هذا الرد


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

مرحبا أخي الفاضل أبو عدنان

هذة المشكله تظهر لان المسميات باللغه العربيه

عندما تقوم بتصميم برنامج أجعل اسماء الحقول بالجدول واسماء الجداول واسماء الاستعالامات باللغه الانجليزيه

ولن تحدث هذة المشكله معك مره أخرى أن شاء الله

وللعلم أخي استخدام مسميات باللغه العربيه يحدث معه مشكلات كثيره جدا جدا

ولكني صممت المثال بالعربي حتى يكون اسهل في الفهم

ولي ملاخظه على الصوره أخي لا تقم بنسخ علامة التنصيص الاخيره ( " )

وأرجوا أن تسامحونا أن كنا قصرنا في شيء

أخيك أبو مريم

تم تعديل بواسطه alalal
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
هذة المشكله تظهر لان المسميات باللغه العربيه

عندما تقوم بتصميم برنامج أجعل اسماء الحقول بالجدول واسماء الجداول واسماء الاستعالامات باللغه الانجليزيه

ولن تحدث هذة المشكله معك مره أخرى أن شاء الله

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

وأرجوا أن تسامحونا أن كنا قصرنا في شيء

والله ما قصرت ويعطيك العافية وبارك الله بك اخا عزيز كريما ...

أبو عدنان ..

0

شارك هذا الرد


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

بارك الله فيك أخي أبو عدنان جزاك الله خيرا

أخيك أبو مريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
وبالنسبه للاخ العزيز علينا أبو مروان وملاحظته التاليه

أخي أبو مروان من حيث السرعه أخي فأن العكس هو الصحيح

أن كثرة الاستعلامات والنماذح والتقارير يؤثر بشكل كبير جدا جدا على حجم قاعدة البيانات

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

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

أن نجعل قاعدة البيانات عند أصغر حجم ممكن حتى نتجنب حدوث المشكله التي ذكرتها لنا

أخي alalal: شكرا على هذا الطرح الجميل،

ولكن الأخ أبو مروان يتكلم عن السرعة،

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

والأخ أبو مروان لم يجافي الصواب،

تنفيذ جمل SQL بواسطة VBA يقلل سرعة وأداء قاعدة البيانات،

وهذا ليس كلامي وكلام أبو مروان فقط،

بل هذا أيضا ما تؤكد عليه Microsoft نفسها،

الأمر الثاني أن الاستعلامات لا تزيد حجم قاعدة البيانات،

لأنها عبارة عن مرآة للبيانات الموجودة في الجداول،

وأنا كاختصاصي تطبيقات معتمد من Microsoft أتحمل مسئولية إثبات هذا الأمر لك إذا طلبت ذلك،

نعم نشكرك على جهدك وعلى طرحك،

ولكن أرجو رجاء أخويا أن لا تطرح معلومات خاطئة أو معلومات أنت غير متأكد منها.

بالتوفيق إن شاء الله.

0

شارك هذا الرد


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

بارك الله فيك اخي ابو مريم

وبخصوص الاخ kuwait10

ارجو منك توضيح الاتي

انا لم افهم قصدك

من الاسرع الاستعلام ام الكود؟

0

شارك هذا الرد


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

بسم الله الرحمن الرحمن الرحيم

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

بارك الله فيكم جميعا

0

شارك هذا الرد


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

أخواني أسمحوا لي بتكملة النقاش

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

إنما الكود يسهل عليك الكثير و انما استجابته للأمر بطيئة و ليس البطء ملحوظ لدى المستخدمين و انما ملحوظ من قبل المبرمجين

لذا لا توجد مشكله من استخدام ذلك أو ذلك طالما يعطي نفس النتيجه

إنما الافضل في طرق الحمايه و الاثبت على الدقه هو الكود ...

أشكركم و أشكر أخي المدثر (أبو مريم) الذي سمح لنا بالنقاش في هذا الموضوع و أشكره على فكرته الرائعه و طرحه لاسم الموضوع الرائع الذي سيساعد الكثير من المبتدئين

وأستأذن أخي المدثر بوضع شرح فيديو لهذا الشرح لكي يتمكن المبتدئين مثلنا التعلم من هذه الاكواد التي كلما تعاملنا معها كلما تمكنا منها :)

أبو مروان

تم تعديل بواسطه ahmedtharwat19
0

شارك هذا الرد


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

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

أخي الفاضل kuwait10 بارك الله فيك وذادك من علمه

بخصوص الاتي

أخي alalal: شكرا على هذا الطرح الجميل،

ولكن الأخ أبو مروان يتكلم عن السرعة،

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

والأخ أبو مروان لم يجافي الصواب،

تنفيذ جمل SQL بواسطة VBA يقلل سرعة وأداء قاعدة البيانات،

وهذا ليس كلامي وكلام أبو مروان فقط،

بل هذا أيضا ما تؤكد عليه Microsoft نفسها،

الأمر الثاني أن الاستعلامات لا تزيد حجم قاعدة البيانات،

لأنها عبارة عن مرآة للبيانات الموجودة في الجداول،

وأنا كاختصاصي تطبيقات معتمد من Microsoft أتحمل مسئولية إثبات هذا الأمر لك إذا طلبت ذلك،

نعم نشكرك على جهدك وعلى طرحك،

ولكن أرجو رجاء أخويا أن لا تطرح معلومات خاطئة أو معلومات أنت غير متأكد منها.

بالتوفيق إن شاء الله.

أولا أخي نحن نتشرف بأن يكون شخص مثلك متخصص من شركة ميكروسوفت بيننا ويشاركني الرأي مع الاخوه الاعضاء

فمرحبا بك بيننا أخ عزيزا ومعلما فاضلا

ولكن أخي بخصوص السرعه فأنا أعلم جيدا أن حجم قاعدة البيانات سبب رئيسي في سرعة تنفيز الاحداث الموجوده بالبرنامج

أو عمل أو توقف البرنامج نفسه

وذلك من كلام أيضا شركة مايكروسوفت أوفيس حيث أكدت أن قاعدة البيانات تتوقف نهائيا ولا تعمل بالمره

إذا وصل حجمها بالبيانات الموجوده الى 2 جيجا بايت

ثانيا بالنسبه لان الاستعلامات لا تؤثر على حجم قاعدة البيانات فلن أقول أن ما تفضلت به أخي غير صحيح

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

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

فسوف تلاحظ أخي أن القاعدة الاولى حجمها 208 كيلو بايت والثانية 224 كيلو بايت وذلك لوجود الاستعلام بها

فلو فرضنا أخي أن لديك بالبرنامج 50 استعلام أو أكثر أو أقل - لا يهم العدد هنا

وهذة الاستعلامات موجوده بشكل دائم في برنامج هل يكون هذا أفضل من أن يتم انشاء الاستعلام عند الحاجة اليه

وبدلا من ان يكون هناك 50 استعلام باستمرار يكون هناك استعلام واحد

اثنين أو ثلاثه على الاكثر ويتم أنشائهم عند الحاجة اليهم

أخي الكريم أنا قد لا أكون متخصص مثلكم ولكني لا أقدم معلومات خاطأه

ولو كنت أخي ترا أنني فعلت ذلك فأرجوا أن تلتمس العزر لي فأنا لست خبير في هذا المجال

ولكنني تعلمت القليل من أهل الاختصاص وحاولت أن أساعد به المبتدأين من أمثالي

ونشكر أخونا الفاضل hema212006 والاخ sx1

والاخ الفاضل والعزيز علينا أبو مروان

جزاكم الله عني خير الجزاء

وتقبلوا جميعا خالص تحيات أخيك أبو مريم

alalal.rar

0

شارك هذا الرد


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

أخي الحبيب ابو مريم أخواني الأحباء .. السلام عليكم ورحمة الله وبركاته ..

في البداية اقول لك اخي الحبيب ابو مريم الله يعينك على مشارك متعب من الدرجة الأولى مثلي ... معليش تحملني شوي ، فالموضوع يستحق البحث والتدقيق ...

أكيد كل منا له وجهة نظر مختلفة عن الآخر وأنا هنا سأقول وجهة نظري واذا كانت خطأ ارجو التنبيه لذلك فالأمر هنا به بيانات وبرامج ومسؤولية وليس هناك مجال للمجاملة أبدا.

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

ثانيا : قبل البدء بما لدي من جديد بخصوص هذا المثال حدث معي شئ سأذكره لكي لا يقع به أحد ، لقد قمت بتعديل المثال المرفق ومسمياته الى اللغة الانكليزية وحدث مع هذا الأمر Query3 حاول نسخه من الاستعلام فيكون هكذا

SELECT Query2.EName, Query2.BDate, Query2.Age, Query2.Nash FROM Query2 WHERE (((Query2.EName)="ناصر"));

وعند لصقه بالكود يجب أن يكون هكذا والا حدث خطأ .. ..

SELECT Query2.[EName], Query2.BDate, Query2.Age, Query2.Nash FROM Query2 WHERE (((Query2.EName)=""ناصر""));

ما الفرق ؟؟ كلمة ناصر بين عدد 2 كوتيشن بيمنا الأصل عدد واحد كوتيشن ..

ثالثا : اذا كان لا بد والحالة يلزمها استخدام هذه الطريقة وكما قلت بغرض الحمايه فلا بأس ولكن بشرط عرض هذه الاستعلامات عندما اريد ذلك كيف ولماذا ؟

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

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

مرفق صورة للتوضيح أكثر ..

post-139265-1258013175_thumb.png

لمشاهدة الاستعلامات كل ما علينا عمله التالي نختار من الاشاشة الرئيسية ومن مربع القائمة عرض الاستعلامات وننفذ الشاشات التي نريد بناء استعلام لها فقط ثم نخرج الى القاعدة لنرى الاستعلامات التي نريد هذا كل ما في الأمر .

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

خامسا : اعتقد اننا بذلك قد غطينا جميع الملاحظات الذي اقترحها السادة المشاركين هنا وبقيت المشاركة الاخير لاخي الحبيب كويت 10واخي الحبيب احمد ثروت ، اخواني الكرام ... اولا ارجو ان تتقبلوا من اخوكم الصغير هذه الملاحظ فالموضوع بسيط جدا نحن لم نغير شئ في الاحوال الطبيعة ، وبدون استخدام هذا المثال او هذه الطريقة نستخدم الاستعلام ونقرأ منه مباشرة واما الجديد بالامر فإننا فقط سوف نبني ونلغي نفس الاستعلام ونقرأ منه ولن نقرأ عن طريق الكود .... لا ادري اذا كان هذا سيؤثر سلبيا على سرعة البرنامج ام لا ؟ واذا كان نعم فللحماية ثمن واذا كان لا وارجو ذلك فممتاز جدا ...

وفي الختام كلنا نريد ان نصل الى النتيجة ولن نصل اليها الا عبر المناقشات والاقتراحات ..

مرفق المثال بعد التعديل .... وارجو منك اخي الكريم ابو مريم ان تتقبل مني هذه الملاحظات ....

تقبلوا مني جميعا فائق الاحترام والتقدير ..

أبو عدنان ..

alalal_msak_up.rar

0

شارك هذا الرد


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

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

أخي الفاضل والمتميز دائما أبو عدنان

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

بالنسبه للملاحظه الاولى فهي صحيحه أخي الهدف منها ضمان الحمايه القصوى لبرامجنا حتى لا تصل اليها

يد غير متخصصه فتسبب ضياع مجهودنا

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

أما النصوص سواء عربيه أو أنجليزيه فهي تحتاج الى علامات تنصيص فب الاستعلام

قمثلا في حالة الارقام كان الكود كالاتي

SELECT Query1.EName, Query1.BDate, Query1.Age, Query1.Nash FROM Query1 WHERE (((Query1.Age)=26 Or (Query1.Age)=27 Or (Query1.Age)=28));

وتلاحظ انه لم يوضع اي علامات تنصيص لارقام

أما في حالة النصوص فيوضع بالاستعلام علامتين تنصيص لها حتى يستطيع الاستعلام التعرف عليها مثل

"ناصر"

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

فتصبح ( علامتين للاستعلام + علامتين للكود ) وتظهر في الشكل التالي

""ناصر"" حتى يستطيع الكود التعرف على النصوص

وبالنسبه لثالثا أخي

ثالثا : اذا كان لا بد والحالة يلزمها استخدام هذه الطريقة وكما قلت بغرض الحمايه فلا بأس ولكن بشرط عرض هذه الاستعلامات عندما اريد ذلك كيف ولماذا ؟

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

نعم أخي بغرض الحماية فعنوان الموضوع - وداعا للاستعلامات في برامجنا الى الابد

أما بخصوص التعديل على الاستعلام ورغبتك في الوصول اليه

فهنا أوضح أمرين

الاول إذا كانت قاعدة البيانات من نوع mdb فالكل سوف يستطيع ان يدخل على الاستعلامات

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

وهنا أعتقد أن الموضوع كله لم يكن له داعي بالمنتدى

وثانيا إذا كانت قاعدة البيانات الموجوده من نوع mde فحتى ولم تم أظهار الاستعلام والتعديل عليه

فلن تسري التعديلات الجديده

ويمكنك أن تعدل بالاستعلام الثالث اسم ناصر الى محمد مثلا

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

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

كما في الكود

DoCmd.OpenQuery "Query3"

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

وهنا أعتقد أيضا أن الموضوع كله لم يكن له داعي بالمنتدى

وأنا أعتقد أن الحل الوحيد هو أن تكون قاعدة البيانات من نوع mde

ويكون لديك نسخه منها أحتياطيه من نوع mdb حتى تستطيع تعديل اي شيء بها

وبالنسبه للتعديلات الاخيره التي تفضلت بها أخي أبو عدنان فهي بالفعل ممتاذه جدا

جعلها الله في ميزان حسناتك

وأخيرا أخوتي في الله

أرجوا أن لا أكون أثقلت عليكم كثيرا ولا يسعني ألا أن أدعوا الله لكم جميعا

===========================

اللهم أن ذنوبهم اليك لا تضرك ورحمتك إياهم لا تنقصك

فللهم أغفر لهم ما لا يضرك وهب لهم ما لا ينقصك

أخيكم أبو مريم

0

شارك هذا الرد


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

الاول إذا كانت قاعدة البيانات من نوع mdb فالكل سوف يستطيع ان يدخل على الاستعلامات

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

وهنا أعتقد أن الموضوع كله لم يكن له داعي بالمنتدى

اخي ابو مريم لا ترفع الراية البيضاء وانتظر قليلا حتى نتمكن من عمل اقصى ما يمكن عمله بملف Mdb او Mde ...

حاول اختراق نفس ملفك ولكن بعد الحماية حاول قراءة البيانات او التصميم وخبرني وهذا أقصى ما يمكن عمله لحماية ملف Mdb على حد علمي ... والله أعلم ..

تقبلوا جميعا تحياتي .. والموضوع مطروح للمناقشة وارجو ان نصل الى صيغة ما للحماية بهذه الطريقة ..

أبو عدنان ...

Test_msak_up1.rar

0

شارك هذا الرد


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

فكرة جميلة جداً

بارك الله فيك اخي وجعله في ميزان حسناتك

0

شارك هذا الرد


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

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

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



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

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

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