امير عاطف قام بنشر سبتمبر 7, 2003 قام بنشر سبتمبر 7, 2003 السؤال للأخ Rudwan وهو : السادة الأفاضل الكرام لدي سؤال حول ربط الجداول بعضها ببعض . هل توجد في الأكسس طريقة أو كود معين أو مثل ما يسمى في الأوراكل Triger بحيث أجبر البرنامج أن يقوم بعملية معينة مثل تحديث أو حذف بيانات من جدول الى جدول آخر ؟ و لذلك لأنه عندي برنامج و فيه جدولين , بيانات أحدهما أريدها أن تنتقل أتوماتيكيا الى الجدول الآخر فو الانتهاء من كتابة بيانات السطر , و تتحدث مباشرة الى الجدول الثاني . و في حال تم حذف أو تعديل تلك البيانات سواء من الجدول أو الاستعلام أو النموذج يجب أن يتم التعديل تلقائيا في الجدول الثاني المرتبط به . أرجو افادتي أدامكم الله 1
امير عاطف قام بنشر سبتمبر 7, 2003 الكاتب قام بنشر سبتمبر 7, 2003 راجع هنــــــــــا و هنــــــا ايضــــاً
rudwan قام بنشر سبتمبر 8, 2003 قام بنشر سبتمبر 8, 2003 الأخ المشرف أمير المحترم أشكر لك شكرا جزيلا ردك على الموضوع , و لكن ليس هذا ما أسأل عنه , أنا لا أريد الحذف من خلال استعلام لأنه لن يتنفذ الحذف الا من خلال تنفيذ استعلام الحذف . أنا أقوم بادخال بيانات على جدول , أريده أن يقوم بالحذف أو التعديل التلقائي ( بناء على شرط معين ) أثناء وجودي في نفس الجدول الذي أكتب عليه . أي يختبر تحقق الشرط مباشرة و بمجرد كتاية أو تعديل المعلومة في أي حقل , يقوم تلقائيا بحذف أو تعديل ( تنفيذ الكود المطلوب ) في الجدول الآخر الذي نريده
امير عاطف قام بنشر سبتمبر 8, 2003 الكاتب قام بنشر سبتمبر 8, 2003 الاخ الكريم : يمكنك تنفيذ استعلام الحذف او استعلام التحديث او اي استعلام اجرائي من خلال الكود بحيث اذا تحقق الشرط يتم تنفيذ الكود (الذي قوم بنفس عمل الاستعلام) واذا لم يتحقق لا يتم التنفيذ
rudwan قام بنشر سبتمبر 9, 2003 قام بنشر سبتمبر 9, 2003 الأخ أمير هذا صحيح في حال العمل على النموذج , و لكن افرض أنني قمت بعملية : حذف - تعديل - تحديث- ادخال من خلال استعلام معين أو من خلال نفس الجدول أو حتى من واجهة الأكسس , سوف يتم التعديل دون أن يتم تحيثه في الجدول الآخر . في أوراكل يمكن كتابة القادحات على الجدول (trigger بحيث يتم تنفيذ هذا الاجراء سواء تم التعديل من الجدول أو من الاستعلام أو من النموذج أو من الجدول نفسه . و أنا هذا ما أسأل عنه , هل يوجد في أكسس مثل هذه الامكانية ؟ و أنا آسف لآنني آخذ من وقتكم الشي الكثير و لكن كله عند الله لا يضيع و شكرا
محمد طاهر عرفه قام بنشر سبتمبر 9, 2003 قام بنشر سبتمبر 9, 2003 لا يمكن تنفيذ أي اجراءت علي الجداول مباشرة فى الاكسس ، و تنفيذ الاجراءات المناظرة لل Triger فى الاوراكل يكون بكود فيجوال بيزيك التطبيقات VBA من خلال النموذج ، و يمكن تنفيذ فعل مناظر فى الاستعلام أي بجمل ال SQL . أما الجداول فلا اجراءات فيها. و لكن فى الأغلب تكون الحالة التي تصفها نادرة ، فلا تحتاج لمثل هذا الفعل . و لو احتجنا له فيتم التعامل معه اما بال vba أو بال SQL أو الاستعلام و يمكن من خلالهما تحديث الجدولين . أما التعديل المباشر فى الجداول فلا يمكن مصاحبته باجراءات . بقي نقتطين قد تكونا معلومتان لك ، و لكن لابد من ذكرهما فى السياق :) 1- التحديث من الجداول مباشرة لا يجب الاعتماد عليه فى تطبيق متكامل ، و انما يتم تصميم النماذج بحيث تسمح بكل التعاملات المطلوبة مع البيانات . أما التعديل فى الجداول فللطوارئ النادرة جدا فقط 2- أقترح أن تصف لنا جداول القاعدة التي تحتاج فيها لذلك مع وصف مختصر للبرنامج . فربما يأتيك أحد الأخوة بفكرة تمثل اضافة . حيث انه فى كثير من الاحيان ( طبعا ليس كلها ) يمكن الوصول لتصميم قاعدة بيانات يسمح بتلافي مثل هذه الحالة . أي الحاجة الي التعديل فى أكثر من جدول عند تغيير قيمة . و طبعا هذه ليس قاعدة و لكن ربما يكون هناك اقتراح مفيد فى تصميم القاعدة .
rudwan قام بنشر سبتمبر 11, 2003 قام بنشر سبتمبر 11, 2003 (معدل) الآستاذ / محمد المحترم لا أعرف بالضبط كيف أشكركم على هذا الاهتمام , و أعتذر عن التأخر في الرد حيث كنت مشغولا بالأمس . و فيما يلي و صف مختصر لقاعدة البيانات التي أعمل عليها : أنا مسؤول عن تنظيم و تدقيق و دفع فواتير الهاتف في شركتي حيث يوجد بها عدد كبير من الهواتف . - شركة الاتصالات معرف لديها أرقام الهاتف لجميع المشتركين , و المفروض أن تصدر فاتورة مستقلة لكل رقم هاتف , و لكل فاتورة رقم حساب مستقل يتم التعامل بواسطته لمعرفة فيما اذا سدد المشترك فواتيره أم لا . و رقم الحساب هذا ثابت على الدوام لا يتغير و المفروض أنه مرتبط برقم هاتف معين , و لكن في حالات عديدة يتم دمج عدة أرقام هاتف في رقم حساب واحد , بحيث تصدر له فاتورة واحدة ( ممكن أن تكون لمئة رقم هاتف ) , مع ارفاق كشوفات تفصيلية بالمبالغ المستحقة على كل رقم , مثال فاتورة الحساب رقم ( 123456789 ) تظهر كما يلي : رقم الهاتف ...... المبلغ ________....... _________ 9365 ....... 100 8653 ....... 150 4567 ....... 250 مبلغ فاتورة الحساب (123456789 ) = 500 الفاتورة الرئيسية التي سيتم دفعها هي بمبلغ 500 ريال , أما الكشوفات المرفقة فهي خاصة بالمشترك فقط لمعرفة التفاصيل . و أنا حين أستلم الفواتير علي أن أقوم أولا بتدقيق الكشوفات الفرعية و ادخال البيانات الخاصة بكل رقم هاتف بغرض اعداد البيانات التحليلية الخاصة باستهلاك كل فرع من فروع شركتي , و من ثم أحصل على المجموع التلقائي و الذي يمثل قيمة الفاتورة . و من أجل ذلك لدي بشكل رئيسي 4 جداول : الأول : جدول الحسابات و يحتوي الحقول التالية : -رقم معرف -رقم الحساب -( بعض الحقول التعريفية الآخرى ) الثاني : جدول أرقام الهاتف و يحتوي الحقول التالية : - رقم الهاتف -رقم الحساب الذي يتبع له -( بعض الحقول التعريفية الآخرى ) الثالث : جدول الفواتير التفصيلية ( و ندخل عليه البيانات الجزئية الخاصة بكل رقم هاتف فرعي ) و يحتوي الحقول التالية : -رقم معرف -رقم الفاتورة ( رقم واحد للفواتير التابعة لنفس الحساب ) -رقم الهاتف -مبلغ الفاتورة -تاريخها الرابع : جدول الفواتير الاجمالية ( و هذا الجدول الذي أريده أن يتلقى البيانات من جدول الفواتير التفصيلية لتتجمع فيه بشكل اجمالي بناء على -رقم الفاتورة -رقم الحساب -مبلغ الفاتورة -تاريخها -(بعض الحقول الخاصة بمعرفة استلام الفاتورة - هل تم دفعها - هل تم ترحيلها لدى شركة الاتصالات ... الخ ) أرجو ان كان هناك اقتراح من أحد الاخوة لتصميم آلية يتم من خلالها ادخال الفواتير التفصيلية ثم ترحيل اجمالياتها ( على مستوى الفاتورة الرئيسية ) الى جدول الفواتير الرئيسية . مع الأخذ بنظر الاعتبار أنه في حال حدوث أي تعديل أو حذف أو اضافة شي الى بيانات الفواتير التفصيلية , أن ينتقل هذا التأثير مباشرة الى جدول الفواتير الرئيسية . مع شكري الجزيل لجميع الاخوه تم تعديل سبتمبر 11, 2003 بواسطه rudwan
امير عاطف قام بنشر سبتمبر 12, 2003 الكاتب قام بنشر سبتمبر 12, 2003 الأخ rudwan : المشكله ابسط مما تتخيل ولا تحتاج لكل هذا العناء حيث انك لا تحتاج الى الجدول الرابع ... حيث يمكنك استنتاج الجدول الرابع من الجدول الثالث عن طريق عمل استعلام اختيار (تحديد) وبعد ذلك تقوم بتجميع حسب رقم الفاتورة الرئيسيه مثل ما هو متواجد بالصورة التالية بحيث تقوم بوضع القيمة Group By اسفل حقل رقم الفاتورة الأساسية وتقوم بوضع القيمة Sum اسفل حقل مبلغ الفاتورة التفصيله ... بالطبع كل ذلك تقوم بأخذه من الجدول الثالث وبعد ذلك قم بتشغيل الاستعلام تجد كما تريد بالضبط ... واذاقمت بأي تغيير بقيم الفواتير التفصيليه سوف يتم تحدث القيمة لااجمالية مباشرةً
rudwan قام بنشر سبتمبر 13, 2003 قام بنشر سبتمبر 13, 2003 الأخ الاستاذ \ أمير المحترم من الناحية الحسابية و الاجرائية ما تفضلت به هو الحل الصحيح و ربما الوحيد , و هذا ما قمت به سابقا . و لكن المشكلة أن الجدول الناتج عن الاستعلام التجميعي ليس هو الناتج الآخير الذي أريده . حيث أنني سآخذ هذا الناتج و أضيف عليه بعض الرموز الخاصة و المفيدة لي : حيث أضع اشارة على الفاتورة الرئيسية حين استلامها (حقل من الجدول ) . و اشارة على الفاتورة حين يتم ارسالها الى البنك قيد الدفع ( حقل من الجدول ) . و اشارة على الفاتورة حين تعود من البنك بعد الدفع ( حقل من الجدول ) . اضافة الى بعض المؤشرات الأخرى , والمتعلقة بادخالها بالحسابات , و هذه كلها مهمة لي حيث أن لدي المئات من الفواتير و التي لابد من ضبطها . أما الاستعلام التجميعي فلا يمكن الكتابة عليه , لذلك لا يفيدني كثيرا الاستعلام التجميعي .
محمد طاهر عرفه قام بنشر سبتمبر 13, 2003 قام بنشر سبتمبر 13, 2003 السلام عليكم اذا أنا فهمت الموضوع صح ، فيكون التصميم المناسب اضافة جدول الي التصميم السابق كالاتي جدول الحسابات (مثل السابق ) جدول ارقام التليفونات (مثل السابق ) جدول بيانات الفاتورة الاجمالية ( و فيه تضيف الحقول التي وصفتها بانك تريد اضافتها الي الجدول بعد التجميع )بالاضافة الي البيانات الاساسة للفاتورة ككل : كود الفاتورة الاجمالية ، بياناتها ، بالاضافة الي تاريخ الفاتورة الاجمالية جدول الفواتير التفصيلية (مثل السابق و يضاف اليه كود الفاتورة المجمعة) ( و اذا لم يكن هناك تاريخ منفصل للفواتير التفصيلية يتم حذف الحقل من جدول الفواتير التفصيلية و الاكتفاء بتاريخ الفاتورة المجمعة فى جدول الفواتير المجمعة) و بذلك بعمل تجميع لجدول تفاصيل الفاتورة GroupBY رقم الفاتورة يمكن الحصول علي مجموع كل فاتورة ، و يمكن ربط الناتج ببيانات جدول بيانات الفاتورة المجمعة عن طريق رقم الفاتورة
rudwan قام بنشر سبتمبر 13, 2003 قام بنشر سبتمبر 13, 2003 الأستاذ / محمد المحترم أعتقد أن فكرتك هي الأدق حتى الآن , و لكن هل تقصد الحصول على استعلام بسيط من خلال ربط جدول البيانات التجميعية بالاستعلام التجميعي لجدول البيانات التفصيلية ؟ و ذلك حتى يتسنى اضافة اجمالي المبلغ الى البيانات , و حتى يتسنى أيضا الكتابة على الاستعلام البسيط الجديد .
rudwan قام بنشر سبتمبر 14, 2003 قام بنشر سبتمبر 14, 2003 الاستاذ العزيز / محمد أنا آسف جدا , أعرف أنني أثقلت كثيرا عليكم , و أشكر الجميع على هذا الاهتمام الواسع . و لكن للأسف قمت اليوم صباحا بعمل ربط بين جدول البيانات الاجمالية و الاستعلام التجميعي لبيانات الجدول الفرعي على كود الفاتورة المجمعة , ثم أنشأت استعلاما بسيطا بحيث حصلت على ما أريد : رقم الفاتورة - مبلغها - تاريخها - الحقول المطلوبة , و لكن لم أتمكن من كتابة شي على هذا الاستعلام . ما أريده بالتحديد أخذ البيانات الرئيسية : رقم الفاتورة - مبلغها - تاريخها في منظور واحد ( جدول أو استعلام ) ثم تمكيني من كتابة البيانات الباقية عليه لأنها مهمة جدا أن تكون جميعها في بيان واحد , و لا أستفيد شيئا ان نقص أحد هذه البيانات . و أكرر اعتذاري الشديد على ما أحدثته من ازعاج و اضاعة وقت لكم . :pp:
samir_samir قام بنشر سبتمبر 14, 2003 قام بنشر سبتمبر 14, 2003 قمت اليوم صباحا بعمل ربط بين جدول البيانات الاجمالية و الاستعلام التجميعي لبيانات الجدول الفرعي على كود الفاتورة المجمعة , ثم أنشأت استعلاما بسيطا بحيث حصلت على ما أريد : رقم الفاتورة - مبلغها - تاريخها - الحقول المطلوبة , و لكن لم أتمكن من كتابة شي على هذا الاستعلام ================= في حال فتحت مجامج استعلام لا يمكنك ادخال بينان حسب معرفتي ================
محمد طاهر عرفه قام بنشر سبتمبر 14, 2003 قام بنشر سبتمبر 14, 2003 بالفعل كما قال الأخ سمير هذا الاستعلام لاسترجاع و عرض البيانات فقط أما للادخال ، فيمكنك عمل استعلام آخر بدون تجميع ، حيث لا تريد المجموع حيث الادخال ، و ان أردت اظهاره فى النموذج فاستخدم دوال المجال التجميعية و تحديدا Dsum للتجميع من الجدول أو أن يكون الادخال من فورم بدون مصدر بيانات ، و يكون الادخال بالكود و يوجد عليه 3 أمثلة فى الارشيف ، وعلي ما أذكر أنها أقدم 3 أمثلة فى قسم النماذج الفرعي من قسم خلاصة المشاركات مع تحياتي
rudwan قام بنشر سبتمبر 27, 2003 قام بنشر سبتمبر 27, 2003 بالفعل كما ذكر الأستاذ محمد طاهر لم تكن هناك سوى طريقة واحدة و هي الادخال من نفس النموذج , و استخراج حقل القيمة من خلال دالة 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.