بتاريخ: 11 مايو 200817 سنة comment_128531 اخواني السلام عليكم ورحمة الله وبركاتهكيف اجعل ال text item لايقبل الا ارقام فقط وايضا اجعله لايقبل الا حروف فقطوشكرا لكم تقديم بلاغ
بتاريخ: 12 مايو 200817 سنة comment_128626 بسم الله الرحمن الرحيمبالنسبه للـitems اللى نوعها number فهى بطبيعتها لا يمكن أن تدخل فيها حروفأما بالنسبه للـitems اللى نوعها varchar تقبل بالفعل حروف وحل هذه المشكله إنك تعمل trigger على مستوى الـitem when-validate-item وتكتب هذا الكودمع العلم أن هذا المثال على عمود الـename فى جدول الـemp على scott schema declare a number:=0; begin a:=to_number(:ename); if a<>0 then message('no'); message('no'); raise form_trigger_failure; end if; exception when value_error then :ename:=:system.current_value; end; تقديم بلاغ
بتاريخ: 12 مايو 200817 سنة comment_128651 انت ليه اشترطت انه لا يساوى صفر؟انا اللى كنت بعمله فى المشروع declare v number; W NUMBER; begin IF :WORKERS.TEL IS NULL THEN NULL; ELSIF length(:WORKERS.TEL)<8 OR SUBSTR(:WORKERS.TEL,1,1)<>'0'--OR TO_NUMBER(:SUPPLIERS.TEL)<0 OR TO_CHAR(SUBSTR(:SUPPLIERS.TEL,1,1))<>'0'THEN THEN SET_ALERT_PROPERTY('ALRT2', alert_message_text,'ÇáÑÌÇÁ ÅÏÎÇá ÑÞã áÇíÞá Úä ËãÇäíÉ ÃÑÞÇã æ íÈÏà ÈÕÝÑ'); SET_ALERT_PROPERTY('ALRT2', TITLE, 'ÊäÈíå' ); SET_ALERT_BUTTON_PROPERTY('ALRT2',ALERT_BUTTON1,LABEL, 'ÍÓäÇ' ); ----------------------------------------------- W:=SHOW_ALERT('ALRT2'); IF W=ALERT_BUTTON1 THEN NULL; END IF; RAISE FORM_TRIGGER_FAILURE; ELSE FOR N IN 1..LENGTH(:WORKERS.TEL) LOOP V:=ASCII(SUBSTR(:WORKERS.TEL,N,1)); IF V NOT BETWEEN 48 AND 57 THEN SET_ALERT_PROPERTY('ALRT2', alert_message_text,'ÇáÑÌÇÁ ÅÏÎÇá ÑÞã áÇíÞá Úä ËãÇäíÉ ÃÑÞÇã æ íÈÏà ÈÕÝÑ'); SET_ALERT_PROPERTY('ALRT2', TITLE, 'ÊäÈíå' ); SET_ALERT_BUTTON_PROPERTY('ALRT2',ALERT_BUTTON1,LABEL, 'ÍÓäÇ' ); ----------------------------------------------- W:=SHOW_ALERT('ALRT2'); IF W=ALERT_BUTTON1 THEN NULL; END IF; RAISE FORM_TRIGGER_FAILURE; END IF; END LOOP; END IF; END; تقديم بلاغ
بتاريخ: 12 مايو 200817 سنة comment_128652 declare v number; W NUMBER;begin IF :WORKERS.TEL IS NULL THEN NULL;ELSIF length(:WORKERS.TEL)<8 OR SUBSTR(:WORKERS.TEL,1,1)<>'0'--OR TO_NUMBER(:SUPPLIERS.TEL)<0 OR TO_CHAR(SUBSTR(:SUPPLIERS.TEL,1,1))<>'0'THEN THEN SET_ALERT_PROPERTY('ALRT2', alert_message_text,'ÇáÑÌÇÁ ÅÏÎÇá ÑÞã áÇíÞá Úä ËãÇäíÉ ÃÑÞÇã æ íÈÏà ÈÕÝÑ'); SET_ALERT_PROPERTY('ALRT2', TITLE, 'ÊäÈíå' ); SET_ALERT_BUTTON_PROPERTY('ALRT2',ALERT_BUTTON1,LABEL, 'ÍÓäÇ' ); ----------------------------------------------- W:=SHOW_ALERT('ALRT2'); IF W=ALERT_BUTTON1 THEN NULL; END IF; RAISE FORM_TRIGGER_FAILURE;ELSE FOR N IN 1..LENGTH(:WORKERS.TEL) LOOP V:=ASCII(SUBSTR(:WORKERS.TEL,N,1)); IF V NOT BETWEEN 48 AND 57 THEN SET_ALERT_PROPERTY('ALRT2', alert_message_text,'ÇáÑÌÇÁ ÅÏÎÇá ÑÞã áÇíÞá Úä ËãÇäíÉ ÃÑÞÇã æ íÈÏà ÈÕÝÑ'); SET_ALERT_PROPERTY('ALRT2', TITLE, 'ÊäÈíå' ); SET_ALERT_BUTTON_PROPERTY('ALRT2',ALERT_BUTTON1,LABEL, 'ÍÓäÇ' ); ----------------------------------------------- W:=SHOW_ALERT('ALRT2'); IF W=ALERT_BUTTON1 THEN NULL; END IF; RAISE FORM_TRIGGER_FAILURE; END IF; END LOOP;END IF;END; تقديم بلاغ
بتاريخ: 13 مايو 200817 سنة comment_128686 كيف اجعل ال text item لايقبل الا ارقام فقط وايضا اجعله لايقبل الا حروف فقط بص يا أخي ، يمكنك إنشاء Function إختبار ، هل القيمة المدخلة قيمة رقمية أم لا ، كما يلي :FUNCTION IS_NUMBER(IN_TEXT VARCHAR2) RETURN BOOLEAN IS N NUMBER; BEGIN N := TO_NUMBER(IN_TEXT); RETURN TRUE; EXCEPTION WHEN OTHERS THEN RETURN FALSE; END; ويمكنك إستدعائة في حدث WHEN-VALIDATE-ITEM لمربع النص كما يلي : IF(IS_NUMBER(:ENAME) = TRUE)THEN MESSAGE('القيمة المدخلة غير سليمة'); MESSAGE('القيمة المدخلة غير سليمة'); RAISE FORM_TRIGGER_FAILURE; END IF; أو تستخدم نفس الطريقة الذي أشار بها الأخ الكريم ( أمجد ) أو هناك فكرة أخري ، وهو أن تلعب بمجموعة خصائص الـ Data !!!1- DataType ، نوع البيان ( رقمي - نصي - تاريخ - وقت - ................ الي آخرة ).2- Maximum Lenght ، أكبر طول يحملة مربع النص.3- Fixed Lenght ، إجبار أخز كافة المساحة المحجوزة ، بحيث لو كان المساحة 10 حروف ، يجب أن يتم إدخال الطول كلياً.4- Initial Value ، القيمة الإفتراضية.5- Required ، حتمية إدخال أي قيمة بالحقل ، مثل الـ Not Null بحقل قاعدة البيانات.6- Format Mask ، شكل إدخال الحقل ، مثلاً شكل إدخال تاريخ ( yyyy/mm/dd ) .7- Lowest Allowed Value ، أقل قيمة يمكن إدخالها ، مثلاً لو كان هذا الحقل حقل راتب الموظف ، يمكننا إضافة الرقم 500 بحيث أن لا يقل راتب الموظف عن 500 جنية.8- Highest Allowed Value ، أكبر قيمة ، مثلاً لو كان الحقل حقل راتب الموظف ، يمكنك إدراج به الرقم 5000 بحيث أن لا يزيد راتب الموظف عن 5000 جنية.9- Copy Value From Item ، هذه الخاصية مفيدة جداً أثناء الربط مع Master و Detail ، حيث تأخذ قيمة Item من بلوك معين ، وتنسخة في Item لبلوك آخر.10- Synchronize with Item ، وهو ربط Item مع Item آخر ، بحيث أن يكون نفس القيمة واحدة .سؤال للأخ Amgad ، ممكن تشرح لنا الكود التالي : exception when value_error then :ename:=:system.current_value; شكراً تقديم بلاغ
بتاريخ: 13 مايو 200817 سنة comment_128722 بالنسبه للـexception فدا علشان انت لو جيت تدخل حروف مع أرقام هيطله error ومن الطبيعى إن انا ممكن أدخل حروف مع أرقام بس أهم حاجه ماتكونش أرقام فقط . وهذا الـerror إسمه value_error فإذا حدث هذا الـerror ياخد القيمه المكتوبه حالياً وأكيد هتبقى حروف مع أرقام .ولو مشعايز الـtextitem يقبل أرقام خالص حتى لو كانت مع حروف ممكن تعدل فى الـexception . تقديم بلاغ
بتاريخ: 13 مايو 200817 سنة كاتب الموضوع comment_128729 شكرا لكم جميعا يا اخواني ووفقكم الله وجعله في ميزان حسناتكم تقديم بلاغ
بتاريخ: 13 مايو 200817 سنة comment_128730 السلام عليكمفى الفانكشن اللى مبعوته IF(IS_NUMBER(:ENAME) = TRUE)THEN تقصد false مش trueطب لو عايز اخلى التكست ايتم مش ياخد غير حروف بس ازاى يكون شكل الكود؟؟السلام عليكم ورحمة الله وبركاته،، تقديم بلاغ
بتاريخ: 15 أغسطس 200817 سنة comment_136103 [السلام عليكم يا اخى ممكن تعمل خصائص ال text item فى data type تغيرها و تعملها Alpha و سعتها مش هايقبل اى ارقام .............. تقديم بلاغ
بتاريخ: 16 أغسطس 200817 سنة comment_136114 هذا الموضوع من فترة طويلة وللأسف لم أنتبه إلية ... فآسف جداً !!!! فى الفانكشن اللى مبعوته IF(IS_NUMBER(:ENAME) = TRUE)THEN تقصد false مش true هذا صحيح ... بس للأسف أنا لم أأخذ في بالي طب لو عايز اخلى التكست ايتم مش ياخد غير حروف بس ازاى يكون شكل الكود؟؟ FUNCTION IS_CHAR(IN_CHAR VARCHAR2) RETURN BOOLEAN AS ID_LOOP NUMBER; ID_RETURN BOOLEAN; FUNCTION IS_NUMBER(IN_TEXT VARCHAR2) RETURN BOOLEAN IS N NUMBER; BEGIN N := TO_NUMBER(IN_TEXT); RETURN TRUE; EXCEPTION WHEN OTHERS THEN RETURN FALSE; END; BEGIN ID_RETURN := TRUE; FOR ID_LOOP IN 1 .. LENGTH(IN_CHAR) LOOP IF(IS_NUMBER(SUBSTR(IN_CHAR,ID_LOOP,1)) = TRUE)THEN ID_RETURN := FALSE; EXIT; END IF; END LOOP; RETURN ID_RETURN; END; وفي حدث WHEN-VALIDATE-ITEM لمربع النص تكتبي ما يلي : IF(IS_CHAR(:TEXT_ITEM1) = FALSE)THEN MESSAGE('القيمة المدخلة يجب أن لا تحتوي علي أي قيم رقمية'); MESSAGE('القيمة المدخلة يجب أن لا تحتوي علي أي قيم رقمية'); RAISE FORM_TRIGGER_FAILURE; END IF; بالتوفيق للجميع تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.