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

بخصوص استخدام خاصية Lookup في الجداول .. ما هو البديل وهل هناك استثناءات؟


nssj
إذهب إلى أفضل إجابة Solved by jjafferr,

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

كنت أستخدم خاصية Lookup (مربع قائمة – قائمة تحرير وسرد) بكثرة في الجداول عندما كنت أريد حصر البيانات المدخلة ضمن قائمة معينة .. وتعلمت استخدامها من مقاطع الفيديو المنتشرة على النت

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

وطبقت ما فهمته من مشاركات الإخوة الكرام على حقلين في الجدول الرئيسي (TAB) وهما (TYPE! – TYPE2) فأرجو أن أكون قد وفقت للإجراء المناسب

 ولكن .. هل الوصية بعدم استخدام خاصية Lookup هي في جميع الحالات والجداول بلا استثناء؟ وإن كان كذلك فما هو البديل في هاتين الحالتين:

1- حقل (LVL)   في الجدول الرئيسي (TAB)  استخدمت قائمة من عمود واحد على اعتبار أن المشكلة في قائمة من عمودين، لأن المطلوب في هذا الحقل اختيار أحد هذه الأرقام (1 – 2 - 3) فقط ولا يقبل الحقل إدخال غيرها .. ولم أعرف كيف أفعل ذلك حتى بمراجعتي للمواضيع المتعلقة بقناع الإدخال .. فإن كان استخدام خاصية Lookup في هذه الحالة غير موصى به أيضاً فما هو البديل ؟

2- جدول (TAB_Msaneed) هو جدول صممته بناء على كلام أحد الإخوة، وهو جدول مغلق أو ثابت ليس لإدخال البيانات، هو أشبه بالفهرس، حقوله متفرعة عن بعض، لذلك تم استخدام خاصية القوائم فيه، قائمة من احتمالين، لكل احتمال احتمالين .. وهكذا ، وبالنظر في الملف المرفق تتضح الصورة بإذن الله .. فهل كونه جدولا مغلقا وليس مصمما لإدخال البيانات يعني أنه لا بأس من استخدام خاصية Lookup فيه، وإن لم يكن فما هو البديل في هذه الحالة ؟

هذا (أولا) وبعد الانتهاء منه بعون الله ننتقل إلى (ثانيا) ولكن في موضوع آخر كما اتفقنا 🙂

MusndWZwayid.rar

رابط هذا التعليق
شارك

هذه محاولة جديدة بخصوص حقل (LVL)

في الجدول استخدمت خاصية (قاعدة التحقق من الصحة) وحصرت الإدخال بالأرقام المطلوبة

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

هل هذا هو التصرف السليم في مثل هذه الحقول حيث المطلوب إدخال رقم من قائمة معينة فقط ؟

MusndWZwayid01.rar

رابط هذا التعليق
شارك

  • أفضل إجابة

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

 

في ١٣‏/٣‏/٢٠٢١ at 12:57, nssj said:

كنت أستخدم خاصية Lookup (مربع قائمة – قائمة تحرير وسرد) بكثرة في الجداول ....

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

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

حيث انه:

  1. لا يُسمح للمستخدم ادخال البيانات مباشرة في الجدول ، تحت اي ظرف كان ،
  2. عادة يكون البرنامج مستخدم من مجموعة مستخدمين في شبكة واحدة ، او من مستخدمين في مواقع ومدن/دول مختلفة ، ليس من السهولة الوصول اليهم لعمل التعديل ،

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

فإذا كان البرنامج مقسوم واجهة وجداول ، فيمكننا التعديل على الواجهة ، وارسالها للمستخدم ، فيقوم البرنامج بربط نفسه مع الجداول بطريقة تلقائية (طبعا برمجيا نقوم بهذه العملية) ، ويعمل البرنامج بالتعديل ،

ولكن السؤال ، كيف ممكن ان نعمل تعديل على الجداول؟

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

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

 

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

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

 

الطريقة الصحيحة لتعوضنا عن Lookup الجداول ، هي وضع هذه القيم في جدول آخر ، ثم بالاستعلام نربط الجدولين لنحصل على اسم القيمة بدل عن رقمها ،

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

هكذا يكون الجدول

image.png.ce1e96f77191c7205102e0daf1b9b24c.png

.

ولما نريد بيانات Type1 ، نعمل الاستعلام ، سواء استعلام بحد ذاته وله اسم ، او استعلام في اعدادات مصدر الصف ، حقل مربع التحرير والسرد ComboBox أو مربع القوائم ListBox

image.png.b860660f8e058669feb8fac475a1dbc5.png

.

فنحصل على (وطبعا يمكنك اخفاء حقل الاسم لأنه غير لازم)

image.png.7c2e25742510a1f959e193c9e6cd756a.png

.

وهنا في النموذج/التقرير ، نستعمل حقل مربع التحرير والسرد 🙂

 

جعفر

1359.MusndWZwayid.accdb.zip

  • Like 2
رابط هذا التعليق
شارك

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

1- الاستفسار الأول: ما فائدة حقل (c_Option_2)  في جدول (tbl_C)

2- ثانيا: توجد لدي بعض الحقول بنفس الاسم في عدة جداول، مثلا حقل (LVL) وهو يعبر عن المستوى وهو مجرد بضعة أرقام، أضعه بهذه الاسم في كل جدول أحتاجه فيه، ولا يوجد في جدول (tbl_C) خانة لاسم الجدول فكيف تميز هذه الحقول التي بنفس الاسم .. أم أن وجود حقول بنفس الاسم في أكثر من جدول خطأ ؟

تم تعديل بواسطه nssj
رابط هذا التعليق
شارك

12 دقائق مضت, nssj said:

لأنه قد يكون لها تأثير

لا تأثير 🙂

 

12 دقائق مضت, nssj said:

1- الاستفسار الأول: ما فائدة حقل (c_Option_2)  في جدول (tbl_C)

2- ثانيا: توجد لدي بعض الحقول بنفس الاسم في عدة جداول، مثلا حقل (LVL) وهو يعبر عن المستوى، أضعه بهذه الاسم في كل جدول أحتاجه فيه، ولا يوجد في جدول (tbl_C) خانة لاسم الجدول فكيف تميز هذه الحقول التي بنفس الاسم ..

3. أم أن وجود حقول بنفس الاسم في أكثر من جدول خطأ ؟

1. صحيح انك حاليا لا تحتاج اليه ، ولكن قد تحتاج اليه في المستقبل ،

2. لا توجد علاقة بين كم مرة هذا الحقل موجود في الجداول ، مثلا: معلومات الحقل LVL تكتبها مرة واحدة في الجدول tbl_C ، ثم تستعملها لأكثر من جدول. لا تنسى انت فقط تقرأ/تختار من هذا الجدول ، ولكنك تحفظ المعلومة التي تم اختيارها في بقية الجداول ، واذا بعد تجربتك لازلت تحتاج الى توضيح ، ارفق مثال فيه نفس الحقل مكرر في اكثر من جدول 🙂

3. مافي اي مشكلة 🙂

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

12 ساعات مضت, jjafferr said:

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

 

1- تمام .. ولكن من باب الفضول هل لك أن تبين لي ما هي الفائدة التي قد تلزمني في المستقبل؟

16 ساعات مضت, jjafferr said:

سواء استعلام بحد ذاته وله اسم ، او استعلام في اعدادات مصدر الصف

2- كونك أخي الكريم قلت (أو) يعني أنك ترى أن الاحتمالين بنفس الأداء، فهل ما فهتمه صحيح؟ .. فإن كان كذلك فأنا بنظرتي السطحية أفضل الاستعلام الداخلي يعني (استعلام إعدادات مصدر الصف) حتى لا تكثر الاستعلامات في الواجهة

12 ساعات مضت, jjafferr said:

معلومات الحقل LVL تكتبها مرة واحدة في الجدول tbl_C ، ثم تستعملها لأكثر من جدول

 

3- الإشكالية التي عندي بسبب أن حقل (LVL) في بعض الجداول من رقمين وفي بعضها من ثلاثة، وقد يضاف مستقبلا في جدول آخر من خمسة أرقام مثلاً .. فكيف يتم التمييز بين قيمته في كل جدول

مثلا حقل (LVL)  في جدول (TAB) من ثلاثة أرقام، وهو في جدول الرموز (TAB_RMZ) من رقمين .. فاجتهدت وجعلت مصدر الصف في نموذج الرموز (FRM_RMZ) استعلام ووضعت في خانة المعيار (1 or 2) وزبطت معي .. أصبح يعرض قائمة من رقمين فقط .. بينما في النموذج الرئيسي (Frm1) يعرض الأرقام الثلاثة .. فهل هذا تصرف صحيح ؟

 4- وعندي اقتراح آخر بخصوص حقل (LVL) وأمثاله حيث المطلوب اختيار رقم من قائمة .. أقصد قائمة من عمود واحد وليس من عمودين، أن تكون قائمة الأرقام هذه في النموذج ، في [نوع مصدر الصف] (قائمة القيم) وفي [مصدر الصف] أضع الأرقام المطلوبة، فبذلك تظهر قائمة الأرقام المطلوبة دون اللجوء لجدول (tbl_C) كما فعلت ذلك في نموذج (FRM_EH)

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

 

وعندي استفسار آخر في هذا الموضوع سأطرحه بعد أن أستوعب المعلومات السابقة .. فهي معلومات دسمة بالنسبة لي 😁 

MusndWZwayid03.rar

رابط هذا التعليق
شارك

7 ساعات مضت, nssj said:

كما فعلت ذلك في نموذج (FRM_EH)

ممكن ، مافي مانع ، المهم انه ليس في الجدول ، 

 

9 ساعات مضت, nssj said:

مثلا حقل (LVL)  في جدول (TAB) من ثلاثة أرقام، وهو في جدول الرموز (TAB_RMZ) من رقمين

في الجدول tbl_C ، تقدر تعمل LVL2 لمجموعة الاثنين و LVL3 لمجموعة الثلاثة ،

 

9 ساعات مضت, nssj said:

أنا بنظرتي السطحية أفضل الاستعلام الداخلي

يمكنك استعمال اياً من الاستعلامين ،

 

9 ساعات مضت, nssj said:

ولكن من باب الفضول هل لك أن تبين لي ما هي الفائدة التي قد تلزمني في المستقبل؟

22 ساعات مضت, nssj said:

أنا المستخدم الوحيد الذي له الحق في إدخال البيانات والتعديل عليها

وهنا يأتي دور التوضيح للمستخدم ، 

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

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

شكراً أخي الكريم على توضيحاتك .. ويناء على كل ما سبق سأبني جدول (TAB_Msaneed) بنفس الطريقة، حقوله الأربعة التي كانت قوائم من عمودين أجعلها أرقاما فقط، وترجمة هذه الأرقام لمعانيها في الجدول المخصص (tbl_C)

واستفسار أخير بخصوص حقول (LVL) ذات القائمة الواحدة من عدة أرقام، أنا في الجدول أضع لها خاصية (قاعدة التحقق من صحة) وأحصر الإدخال بالأرقام المطلوبة (1 or 2 or 3)، من باب الأمان وضمان ألا يتم إدخال غيرها تحت أي ظرف .. هل هذا مناسب؟

رابط هذا التعليق
شارك

2 ساعات مضت, nssj said:

أضع لها خاصية (قاعدة التحقق من صحة) وأحصر الإدخال بالأرقام المطلوبة (1 or 2 or 3)، من باب الأمان وضمان ألا يتم إدخال غيرها تحت أي ظرف .. هل هذا مناسب

مافي مانع ،

ولكنك لن تحتاج لها اذا كان ادخال البيانات عن طريق النموذج ، واختيار القيم فيها 🙂

وفي النموذج تعمل كود للتأكد ان الحقل غير فارغ.

 

جعفر

رابط هذا التعليق
شارك

في ١٩‏/٣‏/٢٠٢١ at 13:16, nssj said:

ولكن من باب الفضول هل لك أن تبين لي ما هي الفائدة التي قد تلزمني في المستقبل؟

ولو ان هذا المثال لا علاقة له ببرنامجك :

- اذا عندك حقل للعملة ، فيجب ان يكون عندك حقل لإسم الدولة (c_Option_1) وحقل لرمز العملة (c_Option_2)

- او اذا عندك حقل للمدينة ، فيجب ان يكون عندك حقل لإسم الدولة/المنطقة (c_Option_1) وحقل لإسم المدينة (c_Option_2)

 

وفي يوم من الايام ، ولتصفية معينة ، قد تحتاج الى ان تعمل حقل آخر بإسم c_Option_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