الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة في رسالة حفظ السجل

Featured Replies

بتاريخ:

يا جماعة بعد إذن حضراتكم عايز حل للمشكلة الموضحة في المرفق !!!!

فكرت في إستخدام المصفوفة ولكنني وجدتة حل غير عملي بالمرة ، فأتمني إيجاد حل عملي وسريع أفضل من المصفوفة !!!

بالإضافة الي تحجيم المستخدم بشوية رسائل Messages ، وبردو غير جيدة بالمرة !!!

يا ريت تنظرو الي المرفق وهتفهمو قصدي ، حيث يحتوي علي صورة وملف Form كمثال




شكراً مقدماً

Simble.zip

بتاريخ:

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

تم تعديل بواسطة khaledmega

بتاريخ:
  • كاتب الموضوع

الأخ خالد الشاذلي ، تحية طيبة وبعد



قبل أي شيء أشكرك كل الشكر علي حسن تعاونك معي ، ولكن أعزرني هل تعتقد أنني لم أفكر في هذا الموضوع من قبل ؟؟؟؟



أنا فكرت في الموضوع أكثر من مرة وفعلياً كنت بحاول أقنع نفسي بنفس هذا الكلام ، ولكن بعد إذنك دعني أطرح عليك مثال لعل وعسي أن تقتنع بكلامي !!!



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



لكن بالتحايل نسبياً يتحقق كل شيء !!!



الأخ خالد الغالي ، أنا كنت ناوي أعمل Array بس وجدت أن الأمر هيكون صعب ومعقد لذلك طلبت المساعدة ، طيب أسمح لي أن أعرض عليك مثال كلنا تعاملنا معه من قبل كمبتدئين وكذلك كمتقدمين ، ألا وهو الملف ffigen.fmx الموجود مع حزمة Oracle Setup ، أنظر علي الفكرة ستجد أنه يتحايل علي الأمر بأسلوب غير واضح بالمرة ، فحاولت كثيراً أن أجد بداية أول الخط ولم أجد ؟؟؟؟



ولكن علي ما أعتقد أن هذا البرنامج يتعامل مع مكتبات خارجية ، لأنه بجواره مكتبة تدعي d2kwut60.dll ، ومن الواضح أنها تمت برمجتها بواسطة الفيجوال 6.0 ، ولكن للأسف أنا لم أقدر فتحها بالفيجوال لسبب لا أعلمه ، أظاهر أن الملف مضغوط أو مشفر باحدي برامج التشفير !!!



المهم ، هذا الموضوع كان معي في غاية البساطة حينما كنت أتعامل مع VB6.0 ، حيث كنت أصنع مصفوفة بواسطة مكتبة الـ ADO ، ولكن التعامل مع هذه المكتبة صعب نسبياً من داخل الديفيلوبار ومش معقولة أستخدم المكتبة كي أربط مع الأوراكل وأنا لدي برنامج متكامل أسمة Oracle Developer مصمم خصيصاً لذلك !!!



أما بخصوص الحفظ المؤقت بجدول منفصل فهذا أيضاً غير عملي ، ولا أري أن البرنامج ffigen.fmx يعمل ذلك ، لذلك طرحت السؤال



فأتمني أن أحد ينظر معي في الملف ffigen.fmx ومحاولة تفسيره ، هذا الملف يعمل بصورة جيدة ، وللأسف حاولت أسير وراء كافة الإستدعائات ولم أوصل لأي نتيجة









شكراً مرة أخري ومنتظر معاونتك ومعاونة الجميع





شكراً









بتاريخ:

أخي MMA
بصراحة أنا مشفاهم انت مهتم ايه بحاجة زي كده ؟
الموضوع مشمحتاج كل اللفة دي كما قال الاخ خالد

تم تعديل بواسطة asd13

بتاريخ:
  • كاتب الموضوع

الأخ الكريم ، هناك بعض الأمور بتتطلب لذلك !!!!

يعني علي سبيل المثال ، لو عندنا 5 بلوكات مرتبطين بالبلوك الرئيسي بطريقة Tree ، يعني مثلاً كارت الصنف بيحتوي علي :

جدول الصنف --> وسيط الصنف/المخزن --> وحدات الصنف ( حبة-شريط-علبة-كرتونة- ... الي آخرة) --> قائمة الأسعار لكل وحدة (سعر خاص - سعر جملة - سعر مستهلك )

لاحظ كدة أن بكدة عندنا 4 جداول ، كل جدول مرتبط بالثاني ، وكل بلوك مرتبط بالثاني


هل يعقل أن أجعل المستخدم يحفظ كل سطر يسجلة بالشاشة ، بالطبع لا !!!!


طيب ممكن تنظرو الي الصورة المرفقة ، هتتضح لكم الأمور أكثر


شكراً علي إهتمامكم

Pic.zip

بتاريخ:

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

هذه هي وجهة نظري ولكن فكرتك كفكرة كويسة
والسلام عليكم ورحمة الله وبركاته

بتاريخ:
  • كاتب الموضوع

والله يا أخ مصطفي إظاهر أن الإنتقال من البرمجة الي ديفيلوبار أوراكل ستظل معي عقدة مدة طويلة !!!

لكن موضوع إنزحام السيرفر مش هيحصل ، عارف لية ، لأنني كل ما أرغب فية هو تمكين المستخدم من التعامل مع سجل واحد وتوابعة فقط لا غير ، زي كدة كارت الصنف ، بتعامل مع سجل واحد في جدول الأصناف ، وفي نفس الوقت بتعامل مع سجلات أخري فرعية ، يعني هيكون عدد السجلات بسيطة مش كثيرة كما تتخيل ، لأنني لم أتعامل مع إمكانيات التنقل مع بلوك البيانات الـ Master زي Next_Record, First_Record, Last_Record, Previes_Recotd, Move_Record ... ولكنني أستخدم إمكانيات الـ SQL في خاصية Default_Where لبلوك البيانات ، لأنه هيكون أسرع وأنظف ، بالزات أن هناك شركات تتضمن العديد من الأصناف زي مثلاً المحلات التجارية الكبيرة "رجب العطار - مصر والسودان - قها" ، فإستخدام إمكانيات بلوكات البيانات هيكون غير جيد ، لكن الـ SQL هيكون أفضل وأقول وأسرع ، وللإيضاح أكثر أنظر الطريقة التالية :

BLOCK ITEMS(ITEMS_ID, ITEMS_CODE, ITEMS_NAME)


--Move First.
ID_SQL := 'SELECT NVL(MIN(ITEMS_ID),0) FROM ITEMS';

-- Move Last.
ID_SQL := 'SELECT NVL(MAX(ITEMS_ID),0) FROM ITEMS';

-- Move Next.
ID_SQL := 'SELECT NVL(MIN(ITEMS_ID),0) FROM ITEMS WHERE ITEMS_ID > ' || ID_SERIAL;

-- Move Prev.
ID_SQL := 'SELECT NVL(MAX(ITEMS_ID),0) FROM ITEMS WHERE ITEMS_ID < ' || ID_SERIAL;





لذلك أأكد لك أن موضوع الضغط هيكون بسيط جداً ، يعني مفيش ضغط أساساً سوي علي سجل واحد في الـ Header ومجموعة سجلات في الـ Detail .


علي كل حال منتظر أي فكرة من حضراتكم ، ولو وجدت فكرة لدي جيدة سأرفقها لكم ، وإن شاء الله سأرفق قريباً شاشة تحمل كارت الصنف ، بس كان نفسي أخليها شاشة متكاملة خالية من اي عيوب !!!

ربنا يستر وملجأش في النهاية الي ملفات الـ Temp :) علشان تبقي كملت :)

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


مش صعبة ، لكنة أسلوب غير جيد بالمرة !!!

أنت عارف كدة عامل زي واحد فاتح Microsoft Word وإيدة شغالة علي Ctrl+S أو حفظ كل ثانية !!!!
بتاريخ:

اخي الكريم MMA

اتمنى ان يعمل الفورم الان معك

تم عمل التالي:
بما انه ماستر ديتيل فورم فبالتالي قمت بتعديل البروسيجدرز الخاصة بالعلاقة بينهما
clear_block ------- > clear_block(no_commit)
execute_query ------- > execute_query(no_commit)

DEC_EMP_ON_DEP.rar

بتاريخ:
  • كاتب الموضوع

أولاً الملف المرفق تم تحويلة الي 10g وأنا أتعامل مع 6I ، فلم يفتح معي !!!!

علي كل حال أنا فهمت ما تقصدة ، بتستخدم Clear_Block أو Commit_Query ، وهذا أعلمة ، ولكن المطلوب الحفظ في النهاية وليس الحفظ الدوري !!!!


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


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



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

بتاريخ:

الأخ / مصطفى

وبعد ان توصلت لحل المشكلة

ارجوا عرض الجداول الموجودة بهذه الشاشة فقط والربط بين هذه الجداول

هل العلاقه بين هذه الجداول one to one

شكرا لك ... ومرحبا بك بالعودة بعد طول اشتياق لمشاركاتك المتميزة دائما

بتاريخ:

السلام عليكم ورحمه الله وبركاته
انا شايف فكره ممكن تكون كويسه ان حضرتك تجعل كل البلوكات database :no ويتم الحفظ بقراه البيانات ووحفظها بجمل insert
وكذللك الحف والتعديل يكون بجمليdelete,update على الجداول من خلال الشاشه ااى اقصد فى حاله مثلا الحفظ يضع فى key_commit الاتى
loop يقراء من كل السطر على البلوكات ويتم وضعها او تعديلها ان كانت موجوده من قبل بجمل INSERT ,update

بتاريخ:
  • كاتب الموضوع
وبعد ان توصلت لحل المشكلة

ارجوا عرض الجداول الموجودة بهذه الشاشة فقط والربط بين هذه الجداول


أنا لم أتوصل لحل المشكلة ، ولكنني أرتجعت للرسالة بس بدلاً من عرض رسالة أوراكل عرضت رسالة خاصة بيا أنا

وبخصوص عرض الجداول ، فأنا عرضت كل البيانات سواء الجداول أو الشاشات بالكود سورس علي الرابط (( التالي ))

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


شكرا لك ... ومرحبا بك بالعودة بعد طول اشتياق لمشاركاتك المتميزة دائما


والله يا أخ أمجد هي بتيجي كدة ظروف ... في الفترة الماضية كنت بصمم نظام جديد له علاقة بالمستشفيات ، ولكن للأسف كنت بصممة بالفيجوال 6.0 مع أكسيس وسيكوال 2000 ، وكنت مجبر علي ذلك لأن البرنامج سيكون في متناوي أيدي الأفراد كذلك ، زي كدة العيادات والمتخصصين


فآسف جداً لو تأخرت بعد ذلك

السلام عليكم ورحمه الله وبركاته
انا شايف فكره ممكن تكون كويسه ان حضرتك تجعل كل البلوكات database :no ويتم الحفظ بقراه البيانات ووحفظها بجمل insert
وكذللك الحف والتعديل يكون بجمليdelete,update على الجداول من خلال الشاشه ااى اقصد فى حاله مثلا الحفظ يضع فى key_commit الاتى
loop يقراء من كل السطر على البلوكات ويتم وضعها او تعديلها ان كانت موجوده من قبل بجمل INSERT ,update


كل هذا تعامل مع متغيرات ، والمتغير بيتغير في حالة تغيير قيمتة !!!

للأسف مفيش حل غير التحايل والمصفوفات أو جداول الـ Temp ، ودة بيحتاج وقت وأنا للأسف مش فاضي في الوقت الحالي !!!



شكراً للجميع
بتاريخ:

اخي MMA

فقط على نفس الفورم الخاص بك

قم بالبحث عن اي شيء في الكود بما يخص:

Find and Replace:

clear_block ------- > clear_block(no_commit)
execute_query ------- > execute_query(no_commit)
clear_block(ask_commit) ------- > clear_block(no_commit)

بتاريخ:

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

بتاريخ:

اخي مصطفى

شكرا للتوضيح

واعلم ماهو المطلوب وهذه الرسالة تظهر عند وجود master-detail

وهذا هو الحل لهذه الرسالة

التغيير يتم على procedures الخاصة بال relations بين master -detail

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

بتاريخ:

أخي الكريم rose_4_pretty
لقد قمت بتجربة فكرتك
النتيجة
إذا قمت بإدخال بيانات الماستر ثم الديتيل وبعد كده أنتقلت التالي لادخال ماستر جديد وديتيل خاصة به ثم التالي وهكذا
للاسف يقوم بحفظ
التالي
يحفظ كل عنوانين الماستر ولايحفظ الديتيل سوى أخر ديتيل تم إدخاله
مثال
فورم الاقسام والموظفين
أدخلت قسم مثلا رقم 60 وله موظفين تابعين له أرقامهم مثلا (61-62-63-64)
التالي لادخل قسم جديد رقم 61 موظفينه هم (65-66-67)
ثم التالي
قسم جديد مثلا 62 موظفينه (68-69-70)

النتيجة كالتالي
قم بحفظ أقسام 60-61 دون موظفين
حفظ قسم رقم 62 وموظفينه بشكل صحيح

لذا لابد من وجود ال validation كما تم إنشاؤها في ذلك ال procedure الخاص ب master--detail

بتاريخ:

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

ولكن MMA يستخدم الماستر من قاعدة البيانات والديتيل ايضا

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

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

والتغيير الذي قمت به هو الذي يلغي وجود هذه الرسالة

  • بعد 6 سنة...
بتاريخ:

في ال trigger clear all master detail
قبلclear_block
اكتبpost

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.