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

مساعدة

مغلق
بدأه maen في 20 نوفمبر 2003 · 6 رد · 993 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندما أقوم باستعلام داخل فورم معين أريد أن أخزن الشروط (conditions)

استخدمت :

var_name := get_block_property('block_name' , default_where);

لكن للأسف لم تعمل .

و يتم تخزين في المتغير الشرط الأصلي الذي موجود في ال

object navigator

و لكن ما أريده هو تخزين الشروط التي وضعها المستخدم أيضا لإجراء الاستعلام ،

أرجو أن يكون سؤالي واضح

شاكرا لكم مساعدتكم

أبو عمر

#2

فعلا هذه الداله لن تقوم الا باسترجاع ما تم كتابته علي ال BLOCK او ما قنت انت بتغيره اثناء التشغيل

لحل ذلك ينبغي ان تقوم بتوضيح كيف يقوم المستخدم بوضع الشروط اثناء التشغيل

ستعمل هذه الداله اذا كانت لديك CONTROL BLOCK به مجموعة ITEMS ويقوم المستخدم بادخال قيم فيها و مع اخر قيمة يتم الانتقال لل BLOCK الذي به المعلومات التي تريد الاستعلام عنها و يم ذلك بطريقتين اما كتابة default_where لل BLOCK اثناء التصميم في خصائصه مثل

SAL = :CONTROL.SAL AND COMM = :CONTROL.COM

لو بوضعها علي ذناد POST_CHANGE علي اخر ITEM

GO_BLOCK ('EMP ') ;

SEt_block_property(EMP' , default_where,'SAL= :COTROL.SAL)'

EXECUTE_QUERY;

تمنياتي بالتوفيق

ليس هناك

قلب ناصع البياض

ولا قلب قاتم السواد

ولكن دائما

black&white

#3

شكرا جزيلا أخ black&white

فهمت حلك و سوف أستخدمه

#4

أريد أن أوضح لماذا أحتاج إلى default_where في برنامجي

لدي فورم ، قمت بوضع null داخل key-others

ووضعت أزرار للتعديل و الاضافة و الاستعلام و تنفيذ الاستعلام .و زر للتخزين

حيث أن المستخدم لا يستطيع التعديل إلا إذا ضغط على زر التعديل .

بعد أن يعدل المستخدم داخل الفورم

(حيث أني لا أستخدم control block ) كالذي اقترحه علي الاخ black&white مشكورا

بعد أن يعدل المستخدم داخل الفورم يريد أن يلغي ما تم تعديله و يرى السجل الاصلي كما هو بدون تعديل .

فهناك زر الغاء التعديل يظهر أوتوماتيك عند الضغط على زر التعديل فإذا أراد المستخدم التخزين ضغط على زر التخزين و إلا ضغط على زر الغاء التعديل .

المشكلة عندي إذا أراد المستخدم أن يلغي التعديل .

فقد قمت بعمل التالي

1) تخزين رقم السجل الحالي cur_rec

2) تخزين الشروط default_where ب def_var و التي ما زبطت معي

3) clear_block

4) وضع الشروط set_block_property(block_nm, default_where, def_var)

5) execute_query

6) go_record(cur_rec)

لقد عرفت أن المشكلة ب default_where لا تخزن أوتوماتيك الشروط الموضوعة عند عمل استعلام ، حيث أني أستخدم نفس البلوك الذي به المعلومات.

سؤالي : هل هناك طريقة أخرى لأحقق مرادي ، و هو :

1) أن يستعلم المستخدم عن مجموعة سجلات

2) يعدل على احداها

3) يكتشف أنه أخطأ قبل أن يخزن و يريد الغاء التعديل

4) بعد أن يضغط على الغاء التعديل يظهر له السجل الاصلي قبل التعديل بنفس الشروط الموضوعة في الاستعلام الأول و ذلك بدون ما يتم الاستعلام من جديد .

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

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

#5

أخي الكريم فقط عليك استخدام الـ Last_Where بدلا من الـ Default_Where

وستجد الحل المطلوب

Haytham A. Mahmoud

PhSoft

When No Others

#6

آسف أخي الكريم أخطأت الكتابة Last_Query بدلا من Last_Where

عذراً

Haytham A. Mahmoud

PhSoft

When No Others

#7

شكرا جزيلا يا أخ phsoft

زبطت معي .

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

قمت بحل هذه المشكلة كالتالي

1) وضعت جلوبال فاريابل في تريغر when-new-block-instance

يقوم هذا المتغير بتخزين default_where الأصلية التي في خصائص البلوك

:GLOBAL.def_where := GET_BLOCK_PROPERTY('block_name, DEFAULT_WHERE);

2) عند كل استعلام من المستخدم يتحمل هذا المتغير في default_where

SET_BLOCK_PROPERT('block_name', DEFAULT_WHERE, :GLOBAL.def_where);

ENTER_QUERY;

هل هناك طريقة أخرى أفضل لحل المشكلة ؟؟؟؟

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

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