بتاريخ: 23 مايو 201313 سنة comment_236556 كيف يمكن منع البيانات من الظهور في حالة ان الكنترول الايتم يظهر قيمة لسهولة توضيح الموضوع أجريت مثال مصغر على SCOTT.EMP CREATE TABLE SCOTT.EMP ( EMPNO NUMBER(4), ENAME VARCHAR2(10 BYTE), JOB VARCHAR2(9 BYTE), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ) بإختصار لدي كنترول ايتم X على الفورم ويتم ملأه في البوست كويري من خلال فانكشن في الداتا بيز CREATE OR REPLACE FUNCTION SCOTT.xmax (X2 NUMBER) RETURN NUMBER AS DD NUMBER ; BEGIN IF X2 >=20 THEN DD := X2 ; RETURN(DD); ELSIF X2 <20 THEN RETURN NULL; END IF; END ; ويتم ملا الايتم اكس على الفورم من هذه الفانكش POST-QUERY :X:= XMAX(:DEPTNO); والمطلوب هو IF ITEM X NULL THEN FETCH DATA IF ITEM X NOT NULL THEN DO NOT FETCH DATA ---------------------------------------------------------- حلول اجريتها لم تنجح اضافه عمود للجدول FLAG CHAR(1 BYTE) DEFAULT 0 وجعل القيمه الافتراضيه له 0 وملأه 1 في حالة ان الا يتم يرجع بقيمه قبل رن الداتا في البلوك KEY-EXEQRY IF :X IS NULL THEN UPDATE EMP SET FLAG =1 WHERE EMPNO=:EMPNO; END IF; SYNCHRONIZE; GO_BLOCK('EMP'); EXECUTE_QUERY; SYNCHRONIZE; ومن خصائص البلوك WHERE CLAUSE : FLAG=1 حتى يتم عرض بيانات البلوك فقط في حاله ان الايتم خالى ---------------------------------------------------------- لم تنجح التجربه يمكنكم تحميل المثال وبإنتظار مقترحاتكم أرفقت مثال مصغر فقط لتوضيح RESTRICT.rar تم تعديل 23 مايو 201313 سنة بواسطة omogun تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة comment_236557 in post query if :x is not null then null; else :X:= XMAX(:DEPTNO); end if; تم تعديل 23 مايو 201313 سنة بواسطة Darwiesh.fci تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة كاتب الموضوع comment_236559 اخي ابراهيم شاكر لإهتمامك لكن المشكله كما هي ليس هناك جديد مازالت الريكوردات التي تحوي قيمه في العنصر X تظهر مع البلوك يفترض ان يتم منع ظهورها تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة comment_236560 السلام عليكم ورحمة الله لعدم إظهار سجل البيانات استخدم امر ال raise داخل تريجير post query على مستوى البلوكبعد وضع الشرط المناسب تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة كاتب الموضوع comment_236561 كلام المهندس أمجد منطقي وصحيح ,, طبعا الفورم في المشروع الحقيقي بتأخذ وقت أكبر في الرن تايم لانها بتعدي على كل ريكورد وتنفذ العمليه الشرطيه لكن المقصود قد تم تحقيقه والحمد لله شاكر ومقدر لحضرك مهندس أمجد تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة comment_236563 ooh seems that i miss understanding Case you can user Default where block property with this like that :blockName.ItemName is null thanks تقديم بلاغ
بتاريخ: 23 مايو 201313 سنة كاتب الموضوع comment_236582 بالتأكيد المهندس امجد حل المشكلة كما يلي DECLARE Z VARCHAR(50); BEGIN Z := XMAX(:DEPTNO); IF Z IS NULL THEN :X := XMAX(:DEPTNO); ELSIF Z IS NOT NULL THEN RAISE FORM_TRIGGER_FAILURE; END IF; END; اخي ابراهيم شاكر لك اجتهادك لكن يلاحظ ان الفورم في الرن تايم سوف تظهر مباشرتا الخطأ المعروف frm 40505 unable to perform query oracle forms لان الايتم NON DATA BASE على العموم شاكر لكم جميعا والحمد لله المهندس امجد حل المشكلة تحياتي ,, تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.