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

كيف اجعل قيمة حقل نتيجة لقيمة حقل في السجل السابق

مغلق
بدأه ابو البراء في 9 مارس 2007 · 24 رد · 3,010 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في الملف المرفق في الاستعلام

المطلوب هنا انشاء حقل بحيث تكون قيمته حسب العلاقة بين field1 في هذا السجل ونفس الحقل في السجل السابق اي ان كان السابق اكبر مثلا تكون القيمة "اكبر" وان كان اصغر مثلا تكون "اصغر" وهكذا يعني في مثالنا السجل السابق قيمة الحقل 10 وهذا السجل قيمة الحقل 15 فتكون قيمة حقلنا المطلوب للسجل 2 هي "اكبر"

هذه الملاحظة كتبتها في الاساس تعليقا على الحقل الثالث المفترض في الاستعلام لكن لم يقبلها فارفقتها هنا

____________1.rar

#2

عزيزي تفضل هذا طلبك

ادخل قيمة جديدة في الحقل field1 في عرض الاستعلام وراقب !!!

يقوم بعمل مقارنة بين الحقل الاخير المدخل والحقل الجديد ويطبع النتيجة أكبر أو أصغر بناء على نتيجة المقارنة

ما فهمته من سؤالك هو هذا

تفضل

ان كان به اي خلل ارجو الرد

مع اني جربته بكل الاحتمالات

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

فقمت بعمل نموذج لهذا الغرض

استعكل النموذج اذا شئت التاكد

اخوك همام

____________1.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 9 مارس 2007 في 22:33

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#3

اشكر لك تجاوبك السريع

ساجرب وافيدك بالنتيجة

#4

بورك فيك اخي

للاسف لم يعمل

الحقل المضاف llst قيمته دائما 15 لا ادر لماذا وارفقت صورة للنتيجة

post-952-1173469544_thumb.jpg

#5

بارك الله فيك

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

#6

اخي الفاضل همام

بارك الله فيك على هذا الحل

ولكن يوجد تعديل بسيط

اخي الفاضل

طبعا لن تتم المقارنه بهذه الطريقة والسبب انك تقارن مع الحقل الاخير دائما وهذا سيظهر لك في الحقل الثاني فو نظرت لقيمة آخر حقل لوجدتها 15 وهذه القيمة ستبقى ثابته .

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

CompLastRec.rar

#7

رائع اخت زهرة بارك الله فيك

لكن ظهرت لي مشكلة

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

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

#8

اخي الفاضل ابو البراء

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

دعنا نشرح الفكره :

لدينا حقل في الجدول واسمه مثلا field1

اول سجل فيه قيمته 10 والسجل الثاني 15

سؤال : ما هي القيمة التي قبل القيمة 10 طبعا ستقول لايوجد شيء اذا تم التعويض عنها بالقيمة صفر

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

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

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

لذا سنجد ان أول قيمه ستكون صفر ( ليس بالضروره دائما ) والقيمة الثانية لابد ان تكون هي قيمة السجل الأول والقيمة الثالثة لابد ان تكون هي قيمة السجل الثاني وهكذا بقية القيم حتى تصل الى نهاية السجلات .

#9

بورك فيك

يبدو اختي ان المشكلة من توضيحي لم يكن كافيا

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

ولذا فانا ارغب في مقارنة درجة الطالب السابقة بالحالية وليست بدرجة طالب آخر

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

لعلي الان وضحت الصورة

وشكرا لك اختي

#10

اخي الفاضل ابو البراء

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

#11

تفضلي اختي

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

آمل ان تكون الامور الان واضحة

CompLastRec.rar

#12

اخي ابو البراء

الحقل field 1 هو الذي يحدد لمن تعود القيمة وليس الحقل Lstl حيث ان يوسف له القيمة 3 في الحقل Lstl وهي جاءت اكبر من قيمة 2 للحقل نفسه ولكن ل يوسف

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#13

لم افهم تعقيبك اخي بارك الله فيك

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

#14

اقصد الان ادخال البيانات اصلا يتم في الحقل field1 ثم يقوم الاستعلام بعمل المقارنة وعرض النتيجة في الحقل lstL الذي يعرض السجل السابق

فلا تختلط عليك الامور اكتب في تسمية الحقول ما يلي

filed1: الادخال

Lstl: السجل السابق

comp: نتيجة مقارنة

field 2: صاحب القيمة المدخلة في filed1

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#15

اخي الفاضل ابو البراء

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

عندما تم عمل المثال السابق كان بناء على قيمة الحقل field1 في الجدول Table1 بوجود معرف ID مفهرس

بعد قيامك بعملية تصفية للإسم من الحقل field2 اختلفت البنية العامة للاستعلام فأصبح ينظر الى رقم المعرف ID وبما ان هذا الحقل مفهرس لكامل الجدول فظهر في الاستعلام بناء على موقع السجلات في الجدول ونتج عنه خطأ بالطبع في عملية الحسابات .

لهذا قمنا بحذف رقم المعرف ID من الجدول Table1 واستبدلناه بترقيم تلقائي في الاستعلام qryLastRec بناء على الدالة RcNumq1 الموجوده في الوحدة النمطية العامة Module1 والسبب في ذلك اننا نريد الترقيم يكون تلقائي للسجلات المحدد في الآستعلام qryLastRec المحدد الذي وقعت عليه التصفية وليس لكامل الجدول .

ستلاحظ في الاستعلام qryLastRec وجود حقل جديد خاص بالترقيم التلقائي للسجلات وهو zaID طبعا هذا مهم جدا لهذه العملية .

في هذه الحالة لا نستطيع اجراء مقارنه في الاستعلام qryLastRec لأنه سينتج لدينا خطأ تكرار الحقل field1 .

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

لكي تقوم بالتطبيق الان كل ما عليك هو الذهاب الى الاستعلام qryLastRec وتغيير اسم الطالب فقط في المعيار مثلا اكتب ( احمد - يوسف ) ثم اغلق الاستعلام بعد حفظه

الان قم بتشغيل الاستعلام RC انظر النتيجه . ستجد انه قام بالمقارنه بين درجات الطالب المستعلم عنه فقط بناء على السجلات المتتالية له

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

CompLastRec_UP.rar

1
#16

اخي ليس الخلط او الاشكال في اسماء الحقول

النتيجة ليست صحيحة

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

#17

الاخ ابو البراء

هل ظهرت لك النتائج صحيحه بعد التعديل

#18

شكرا جزيلا لك اختي الموفقة باذن الله

المرفق سليم 100 %

زادك الله توفيقا وسداد في دنياك واخراك وحقق الله امانيك

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

لكن بدا لي تساؤل

الم يكن هناك وسيلة مباشرة في الاكسس لذلك بدلا من الاستعلامين والبرمجة بال vba

دمتِ مسددة

#19

بكل اسف اخي ابو البراء لا يوجد مثل هذا

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

اما في حالة انك تريد التصفية على بيانات محدده فلابد من هذه الطريقة .

وطالما ان النتائج صحيحه فلا يهم الطريقة التي تم اتباعها

قد يكون هناك طرق اخرى ولكن هذا المتوفر لحل مثل هذه المشكله والجود من الموجود

تم تعديل هذه المشاركة بواسطة zahrah في 10 مارس 2007 في 19:26

#20

اختي زهرة بارك الله فيك دائما...

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#21

شكرا جزيلا لك اختي زهرة

ظهرت مشكلة يسيرة

عند تكرار القيمة يتكرر رقم التسلسل

يعني لو جعلنا القيمة 15 تتكرر مرتين لكرر رقم التسلسل مرتين ولو تكررت عشرا لكررها عشرا

عذرا لازعاجك

شاكرا لك تعاونك وجهدك

#22

اخي الفاضل ابو البراء

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

هل تشكل لك هذه النقطه عقبه في طريق البرنامج ام انها مجرد ملاحظة عابره

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

#23

بورك فيك اختي

وجزاك الله خيرا

ما على المحسنين من سبيل

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

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

اخوك ابو البراء مع فائق الشكر والتقدير

#24

اختي

بدا لي فكرة لا ادري كيف تكون ؟ وهل هي صائبة ؟

هل يمكن توزيع البيانات في جداول مختلفة آليا بحسب اسم الطالب ؟

بمعنى لدي نفس الجدول المرفق سابقا لكن ببيانات كبيرة ربما تتجاوز ال 200000 (خمس اصفار) سجل لبيانات طلبة متعددون هل يمكن ان يقوم البرنامج ذاتيا بهذا ؟

خاصة وانها متجددة يعني كلما اضيفت بيانات وزعها على الجداول

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

بورك فيكِ

مع ملاحظة ان البيانات في البداية لادخالها بالجدول تقرا من ملف txt csv

تم تعديل هذه المشاركة بواسطة ابو البراء في 14 مارس 2007 في 17:24

#25

اخي الفاضل ابو البراء

حقيقة لا أعلم طبيعة الجداول او القاعدة لديك او كيف تم تصميمها

ولكن يمكن الاستفادة من هذا الرابط في عملية التوزيع

/index.php?showtopic=120159

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…