اذهب الي المحتوي
أوفيسنا

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

قام بنشر

السؤال للأخ Rudwan وهو :

السادة الأفاضل الكرام

لدي سؤال حول ربط الجداول بعضها ببعض .

هل توجد في الأكسس طريقة أو كود معين أو مثل ما يسمى في الأوراكل Triger

بحيث أجبر البرنامج أن يقوم بعملية معينة مثل تحديث أو حذف بيانات من جدول الى جدول آخر ؟

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

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

أرجو افادتي أدامكم الله

  • Thanks 1
قام بنشر

الأخ المشرف أمير المحترم

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

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

قام بنشر

الاخ الكريم :

يمكنك تنفيذ استعلام الحذف او استعلام التحديث او اي استعلام اجرائي من خلال الكود

بحيث اذا تحقق الشرط يتم تنفيذ الكود (الذي قوم بنفس عمل الاستعلام) واذا لم يتحقق لا يتم التنفيذ

قام بنشر

الأخ أمير

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

في أوراكل يمكن كتابة القادحات على الجدول (trigger

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

و أنا هذا ما أسأل عنه , هل يوجد في أكسس مثل هذه الامكانية ؟

و أنا آسف لآنني آخذ من وقتكم الشي الكثير و لكن كله عند الله لا يضيع

و شكرا

قام بنشر

لا يمكن تنفيذ أي اجراءت علي الجداول مباشرة فى الاكسس ، و تنفيذ الاجراءات المناظرة لل Triger فى الاوراكل يكون بكود فيجوال بيزيك التطبيقات VBA من خلال النموذج ، و يمكن تنفيذ فعل مناظر فى الاستعلام أي بجمل ال SQL . أما الجداول فلا اجراءات فيها.

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

بقي نقتطين قد تكونا معلومتان لك ، و لكن لابد من ذكرهما فى السياق :)

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

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

قام بنشر (معدل)

الآستاذ / محمد المحترم

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

أنا مسؤول عن تنظيم و تدقيق و دفع فواتير الهاتف في شركتي حيث يوجد بها عدد كبير من الهواتف .

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

رقم الهاتف ...... المبلغ

________....... _________

9365 ....... 100

8653 ....... 150

4567 ....... 250

مبلغ فاتورة الحساب (123456789 ) = 500

الفاتورة الرئيسية التي سيتم دفعها هي بمبلغ 500 ريال , أما الكشوفات المرفقة فهي خاصة بالمشترك فقط لمعرفة التفاصيل .

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

و من أجل ذلك لدي بشكل رئيسي 4 جداول :

الأول : جدول الحسابات و يحتوي الحقول التالية :

-رقم معرف

-رقم الحساب

-( بعض الحقول التعريفية الآخرى )

الثاني : جدول أرقام الهاتف و يحتوي الحقول التالية :

- رقم الهاتف

-رقم الحساب الذي يتبع له

-( بعض الحقول التعريفية الآخرى )

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

-رقم معرف

-رقم الفاتورة ( رقم واحد للفواتير التابعة لنفس الحساب )

-رقم الهاتف

-مبلغ الفاتورة

-تاريخها

الرابع : جدول الفواتير الاجمالية ( و هذا الجدول الذي أريده أن يتلقى البيانات من جدول الفواتير التفصيلية لتتجمع فيه بشكل اجمالي بناء على

-رقم الفاتورة

-رقم الحساب

-مبلغ الفاتورة

-تاريخها

-(بعض الحقول الخاصة بمعرفة استلام الفاتورة - هل تم دفعها - هل تم ترحيلها لدى شركة الاتصالات ... الخ )

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

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

تم تعديل بواسطه rudwan
قام بنشر

الأخ rudwan :

المشكله ابسط مما تتخيل ولا تحتاج لكل هذا العناء

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

q8.jpg

بحيث تقوم بوضع القيمة Group By اسفل حقل رقم الفاتورة الأساسية وتقوم بوضع القيمة Sum اسفل حقل مبلغ الفاتورة التفصيله ... بالطبع كل ذلك تقوم بأخذه من الجدول الثالث وبعد ذلك قم بتشغيل الاستعلام تجد كما تريد بالضبط ... واذاقمت بأي تغيير بقيم الفواتير التفصيليه سوف يتم تحدث القيمة لااجمالية مباشرةً

قام بنشر

الأخ الاستاذ \ أمير المحترم

من الناحية الحسابية و الاجرائية ما تفضلت به هو الحل الصحيح و ربما الوحيد , و هذا ما قمت به سابقا .

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

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

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

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

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

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

قام بنشر

السلام عليكم

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

جدول الحسابات (مثل السابق )

جدول ارقام التليفونات (مثل السابق )

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

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

و بذلك بعمل تجميع لجدول تفاصيل الفاتورة GroupBY رقم الفاتورة يمكن الحصول علي مجموع كل فاتورة ، و يمكن ربط الناتج ببيانات جدول بيانات الفاتورة المجمعة عن طريق رقم الفاتورة

قام بنشر

الأستاذ / محمد المحترم

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

و ذلك حتى يتسنى اضافة اجمالي المبلغ الى البيانات , و حتى يتسنى أيضا الكتابة على الاستعلام البسيط الجديد .

قام بنشر

الاستاذ العزيز / محمد

أنا آسف جدا , أعرف أنني أثقلت كثيرا عليكم , و أشكر الجميع على هذا الاهتمام الواسع .

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

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

و أكرر اعتذاري الشديد على ما أحدثته من ازعاج و اضاعة وقت لكم . :pp:

قام بنشر

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

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

في حال فتحت مجامج استعلام

لا يمكنك ادخال بينان

حسب معرفتي

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

قام بنشر

بالفعل كما قال الأخ سمير

هذا الاستعلام لاسترجاع و عرض البيانات فقط

أما للادخال ، فيمكنك عمل استعلام آخر بدون تجميع ، حيث لا تريد المجموع حيث الادخال ، و ان أردت اظهاره فى النموذج فاستخدم دوال المجال التجميعية و تحديدا Dsum للتجميع من الجدول

أو أن يكون الادخال من فورم بدون مصدر بيانات ، و يكون الادخال بالكود

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

مع تحياتي

  • 2 weeks later...
قام بنشر

بالفعل كما ذكر الأستاذ محمد طاهر

لم تكن هناك سوى طريقة واحدة و هي الادخال من نفس النموذج , و استخراج حقل القيمة من خلال دالة DSUM

وقد عدلت قاعدة البيانات على هذا النحو . و قد انتهت المشكلة و الحمد لله .

و لكن من أجل الفائدة العامة , فقد بحثت في عدة منتديات أجنبية حول هذا الموضوع , فوجدت الكود التالي :

db.execute "DELETE * FROM Table Where

[condition]=True);"

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

أي هل يوجد حدث عام لفتح أي نموذج , أم لا

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