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

مشكلة في علوق نتائج الاستعلام في قاعدة البيانات .


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

السلام عليكم

لقد تكررت هذه المشكلة مع استخدام الدالة 

Dmin

و مثيلاتها في جمل طويلة  

و علقت النتائج في السجلات .. 

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

هل هو bug

أم أن الاستعلام في أكسس لا يقبل الجمل الطويلة بشروط مركبة ؟

لم أعد أبحث عن حل لقاعدة البيانات التي اعمل عليها 

و لكنه تساؤل بات   يؤرقني و خاصة مع إحجامكم - إخوتي - عن التفاعل مع السؤال السابق .

 

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

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

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

السلام عليكم ...

في القاعدة المرفقة

الجدول : قاعدة البيانات ، و هو جدول يتضمن أسماء الفروعو هو مصدر النموذج الرئيسي عن طريق الاستعلام : قاعدة البيانات استعلام 1

الجدول : tblm و هو جدول يتضمن أسماء أعضاء مجالس الإدارة ، عن طريق الاستعلام : TBLM1

في الاستعلام tblm1 عدد من الحقول المحسوبة التي اضطررت لعملها لإظهار إشعار بازدواجية العضوية و السبب في عملهم هو المشكلة التي واجهت العمل " علوق نتائج الاستعلام في بعض السجلات دون الأخرى ".

الاستعلام tqwarr : وهو استعلام تحديث يحدث حقل الانتهاء في الجدول tblm1 بحيث يأخذ قيمة بداية ولاية المجلس الجديد و يطرح منها واحد و يجعلها قيمة نهاية انتخاب ولاية المجلس الجديد .

هذه الجداول و الاستعلامات التي يدور السؤال حولها .

 

النموذج الرئيسي :

فيه زر لإضافة سجلات في النموذج الفرعي بناء على قيمة حقل عدد الأعضاء ، و زر لتحديث حقل الانتهاء .

 

السؤال :

في الفرع رقم 9

ستجد أن نتائج الاستعلام قدعلقت في السجلات بيحث يعطي نتيجة خاطئة بحيث تكون قيمة حقل الانتهاء = قيمة حقل المناصب - 1 لذات السجل بينما يجب أن تكون قيمة حقل المناصب -1 لأصغر سجل يكون فيه قيمة المناصب أكبر من المناصب في الحقل الحالي و ذلك بالدالة dmin .

طبعاً تكررت المشكلة كثيراً إلا أني أبقيت فقط على هذا السجل من بين جميع السجلات التي ظهرت فيها المشكلة .

الملف على ميديا فاير نظراً لحجمه ..

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

4 ساعات مضت, Khalf said:

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

عذراً نهاية المجلس القديم و ليس الجديد .

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

السلام عليكم اخوي خلف:smile:

 

كان عندك خطأ في الاستعلام tblm1 والاستعلام tqwarr (مسافة زائدة ومسافة ناقصة وتغيير الاسم الى *) ، فقمت بتعديلهم وارفاقهم لك ،

استوردهم الى برنامجك وشوف اذا بيغير النتيجة او لا !!

 

واستعمال اكثر من احتمال في جملة iif يبطئ الاستعلام ، لأن الاستعلام يجب ان ينظر في جميع الاحتمالات ، وخصوصا جميع احتمالاتك Dcount !!

فالافضل ان تكتب وحدة نمطية ، وتستخدم فيها if او Seclect case ، وتضع جمل Dcount فيها ، فسيكون الكود اسرع ، لأنك ستستخد جلة واحدة منهم فقط .

 

كما اعتقد بأن سؤالك غير واضح ، فاذا ممكن ترفق مثال يكون اسهل لفهمنا:smile:

 

طبعا هذه مجرد ملاحظاتي ، وفي انتظار روائع الزعيم شيفان:smile:

 

جعفر

972.accdb.zip

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

لقد سرني كل السرور اهتمامكما أستاذَي @Shivan Rekany @jjafferr

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

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

و عند وصولي إلى الجهاز الذي عليه قاعدة البيانات سأستورد  الاستعلام عسى تكون النتيجة المطلوبة .

فالاستعلام يعمل بصورة عادية ضمن معظم السجلات عدا بعضها .. دون سبب واضح .

الان, jjafferr said:

واستعمال اكثر من احتمال في جملة iif يبطئ الاستعلام ، لأن الاستعلام يجب ان ينظر في جميع الاحتمالات ، وخصوصا جميع احتمالاتك Dcount !!

فالافضل ان تكتب وحدة نمطية ، وتستخدم فيها if او Seclect case ، وتضع جمل Dcount فيها ، فسيكون الكود اسرع ، لأنك ستستخد جلة واحدة منهم فقط .

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

الان, jjafferr said:

كما اعتقد بأن سؤالك غير واضح ، فاذا ممكن ترفق مثال يكون اسهل لفهمنا:smile:

هو المسألة في أصلها معقدة بعض الشيء ....

 

أبحث عن طريقة لإيجاد الممد الزمنية المتقاطعة و التي من خلالها أجد

الأعضاء المزدجين بين الفروع المختلفة .

هذه المدد ...

تحسب بـ :

1- إذا وقعت بداية الفترة الزمنية بين طرفي فترة زمنية أخرى

2- إذا وقعت نهاية الفترة الزمنية بين طرفي فترة زمنية أخرى

3- إذا وقع طرفا مدة زمنية بين طرفي مدة زمنية أخرى ( هي فعلياً نفس الحالتين السابقتين )

الحالة الثانية إذا كان عندنا فترة زمنية غير مغلقة النهاية و فترة مغلقة الطرفين .

ففي حال وقعت بداية الفترة الزمنية غير مغلقة النهاية قبل بداية الفترة مغلقة الطرفين

- إذا كان لدينا فترة زمنية غير مغلقة النهاية ... تقع قبل بداية الفترة المغلقة الطرفين

إذا كان لدينا فترتين غير مغلقتي النهاية ..

- فتحسب فترة تقاطع للفترتين .

 

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

 

تم تعديل بواسطه Khalf
  • Like 1
رابط هذا التعليق
شارك

لقد رفعت الراية البيضاء 🙄

و حسبي إتعاباً و إزعاجاً لكم ...

يبدو أن هذه المشكلة بلا حل و طالما أن هناك من يعاني من نفس المشكلة ... فهي على الأغلب BUG

شكراً لكم أخوتي .. شكراً لكل من رغب بالمشاركة أو شرفني بزيارة السؤال

شكراً لكم أساتذتي @Shivan Rekany @jjafferr

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

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

صراحة لم أتمكن من  التخلص من المشكلة بهذه الطريقة و لعلي لم أنجح في تنفيذها .. سأعيد الكرًّة عسى ألا تكون كرَّة خاسرة !

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

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

 و الآن حان الوقت بالنسبة لي لحسم الخلاف على أفضلية تطبيق الاستعلام أو عبارة سيكوال عن طريق أمر فيجوال بيزيك .

شكراً لكم أهلي و أحبيتي ...

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

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

فاذا ممكن ترفق مثال يكون اسهل لفهمنا:smile:

رجاء ارفق مثال فيه جميع الاحتمالات ، وقول ليش هذا صح وهذا غلط (اعمله بالاكسل ، مع بيانات في الاكسس)،

وهنا حل لتداخل التواريخ http://allenbrowne.com/appevent.html

 

ولكن لن نستطيع ان نساعدك اذا رفعت الراية البيضاء ، ولم ترد مواصلة الطريق!!

 

جعفر

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

منذ ساعه, jjafferr said:

وهنا حل لتداخل التواريخ http://allenbrowne.com/appevent.html

رابط رائع لم أحظَ به أثناء بحثي فكل النتائج كانت من خلال البحث عن " overlapping " دون جواب شافٍ .

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

نعم لقد تم الأمر ... و لو بطريقة غير احترافية وجدت تحويلها إلى أمر vba صعباً لربما يكون الحل مع هذه الطريقة ... و سأحاول بها و أعلمكم بالنتيجة .

هذا جدول الإكسل الذي يصف المشكلة .....

لا أعرف ماذا أقول .... أياً كانت النتيجية ففضلك على العين و الرأس و  لك الشكر على لطفك

لك الشكر على صبرك أخي @jjafferr

بارك الله لك و بك و منحك من خير الدنيا و من خير الآخرة و أنعم الله علبك و على ذراريك بما قدمت مضعفاً مضعفاً مضعفاً أضعافاً كثيرة .

و صل اللهم على سيدنا محمد و على آله و صحبه و سلم تسليماً كثيراً .

tblm.xlsx

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

29 دقائق مضت, jjafferr said:

الحمدلله انك توصلت الى حل ، بغض النظر عن طريقة عمله:smile:

كنت اتمنى ان ترفق لنا ملف يوضح لنا ما يجب عمله ، ولكن المرفق بحاجة الى مرفق يشرحة:blink:

 

السلام عليكم

في الواقع لم أصل إلى حل المشكلة و هي علوق نتائج الاستعلام في السجلات. 

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

على أي حال  ... كنت أتوقع ألا يكون لهذه المسألة حل حتى لو كان المرفق واضحاً فهي ليست خاصة .

الاستعلام يخزن النتائج دون سبب يا لها من قصة محبطة !!!

و لكي يتم الأمر  فقد لجأت إلى طريقة بديلة أقل كفاءة .. 

و بالنهاية أشكركم من كل قلبي على مساعدتكم و تشجيعكم

شكراً أستاذ @jjafferr

على كرمك و طيب خلقك ..

بارك الله بك .

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

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

كنت أتوقع ألا يكون لهذه المسألة حل حتى لو كان المرفق واضحاً فهي ليست خاصة .

كل شيء لها حل ... لكن الفهم من المطلوب يعطينا طريق العمل
في الحقيقة حتى الان انا لا اعرف ما هو المطلوب بالضبط
شوف حذف البيانات المرفق اولا 
ثانيا خليها 3 او 4 اسماء فقط
واعطينا فهم الشغل بالتمام اي اكتب لنا الاحتمالات لكل اسم
و ان شاء الله راح نواصل لحل 

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

السلام  عليكم

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

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

عند مقارنة النتائج قبل ضغط زر التحديث و بعده ستظهر المشكلة التي لم أعرف كيف أعبر عنها اللحظة ...

رجاء انظر الى السجلات جميعاً قبل التحديث

وقد قمت بإحفاء زر الإضافة لعدم الحاجة اليه في توصيف المشكلة على ما أظن

السجلات الأربعة في النموذج الفرعي

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

وهي السجلات التي سيتحدث حقل الانتهاء فيها .

 

مثلاً

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

 

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

و بالتالي فستظهر النتائج خاطئة .

الدالة المستخدمة = DMIN

 النموذج الذي أعمل عليه ليس ذات المثال و لكن الفكرة هي ذاتها ...

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

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

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

الملف على ميديا فاير نظراً لحجمه ..

 

 

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

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

السلام  عليكم

وعليكم السلام ورحمة الله وبركاته
في البداية ما هو رمز اي رقم سري لمحرر الفيجوال ؟
وفي النهاية 
هل تريد عند كتابة سجل جديد و عند كتابة تاريخ البداية انتخابات جديد ان يعطي تاريخ نهاية الانتخابات السابقة بيكون يساوي تاريخ بداية انتخابات الجديدة
اي اذا كان اول انتخابات يبدأ في 1-5-2010 وبيكون مستمر
وصار انتخابات اخر بهذا اليوم 
اي تكتب في سجل جديد اليوم 13-9-2018
حضرتك تريد ان يكتب ايضا نهاية فترة الانتخابات الاول اللي بدأ في 1-5-2010 نهايته بيكون يساوي 13-9-2018 
هل انا فهمت بصحيح ام هناك شيء اخر 

تم تعديل بواسطه Shivan Rekany
  • Like 1
رابط هذا التعليق
شارك

21 دقائق مضت, Shivan Rekany said:

في البداية ما هو رمز اي رقم سري لمحرر الفيجوال ؟

شكراً أستاذ شيفان

كلمة السر 

بأحرف إنكليزية

استغفرالله

 

24 دقائق مضت, Shivan Rekany said:

هل انا فهمت بصحيح ام هناك شيء اخر 

تماماً هو المطلوب 

و لكن ناقص يوم 

 

اي بدلاً من ١٣/٩/٢٠١٨ ... سيكون

١٢/٩/٢٠١٨

 

أستاذي الكريم 

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

لم تكن مرضية و لكنها تفي إلى حدٍ ما بالغرض و أنا الآن متلهف لما هو أكثر احترافية 

لكن لدي سؤال لا أعلم إن كانت له إجابة 

 

ما السبب بعلوق النتائج في السجلات ضمن الاستعلام ؟ هل هي ثغـرة في الأكسس ؟

و شكراً 

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

3 دقائق مضت, Khalf said:

ما السبب بعلوق النتائج في السجلات ضمن الاستعلام ؟ هل هي ثغـرة في الأكسس ؟

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

5 دقائق مضت, Khalf said:

بأحرف إنكليزية

استغفرالله

ممكن تكتبه

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

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

استغفرالله بلا فراغات بين الكلمات

تمام فتحت
كن معي واصبر
الجمعية رقم 19 ما بها المشكلة و النتيجة هو 29/06/2018
والجمعية رقم 9 بها المشكلة و النتيجة يجب ان يكون 01/07/2018
صحيح ؟

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

1 دقيقه مضت, Shivan Rekany said:

الجمعية رقم 19 ما بها المشكلة و النتيجة هو 29/06/201

تماماً 

في أحد السجلين هذه النتيجة و لكن في السجل الثاني يجب أن يكون الانتهاء فارغاً

لأن المدة الزمنية لم تنتهِ بعد

2 دقائق مضت, Shivan Rekany said:

والجمعية رقم 9 بها المشكلة و النتيجة يجب ان يكون 01/07/2018
صحيح ؟

تماماً هذا بالنسبة لأحد السجلين أما السجل الثاني فيجب أن يبقى الانتهاء فارغاً لأن المدة لم تنتهِ بعد .

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

17 ساعات مضت, Khalf said:

تماماً هذا بالنسبة لأحد السجلين أما السجل الثاني فيجب أن يبقى الانتهاء فارغاً لأن المدة لم تنتهِ بعد .

ممكن ان تعطينا النتائج لكل واحد منهم

Capture.PNG.adedf7c6e2613e82aaff4e7ac2df53eb.PNG

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

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

السجل الأول يبقى فارغاً

السجل الثاني٢٩/٦/٢٠١٨

 

السجل الثالث ١/٧/٢٠١٧

السجب الرابع فارغ

لكن هناك ملاحظة
السجلات رقم 1 و 2 و 4 تاريخ المناصب هم اكبر من تاريخ النتخابات
و السجل رقم 3 تاريخ المنصب هو يساوي تاريخ الانتخابات
لذلك يجب ان اعرف على اي اساس سيكون النتائج هكذا

14 دقائق مضت, Khalf said:

و الله عذبتك معي آسف مجدداً 

لا عادي اخي ... هنا مدرسة

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

منذ ساعه, Shivan Rekany said:

لكن هناك ملاحظة
السجلات رقم 1 و 2 و 4 تاريخ المناصب هم اكبر من تاريخ النتخابات
و السجل رقم 3 تاريخ المنصب هو يساوي تاريخ الانتخابات
لذلك يجب ان اعرف على اي اساس سيكون النتائج هكذا

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

أعلم أن ما سبب الإرباك هو كثرة البيانات و غموض دورها...

 

شكراً لك و بارك الله بك 

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

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.

×
×
  • اضف...

Important Information