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

مطلو ب trigger بأسرع وقت

مغلق
بدأه رن تايم في 31 مايو 2001 · 7 رد · 953 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مطلوب trigger وظيفته أن يقوم بألتشيك على text item بحيث أن المستخدم لا يدخل رقم ولا سيشل كركتر ولا ـــ ولا مسافة مرتين متتاليتين وكم مني جزي الشكر والعرفان

#2

السلام عليكم

هذه الوظيفه يمكن تفيدك

FUNCTION NAME_FLTR(NAM VARCHAR2) RETURN VARCHAR2 IS

BEGIN

return(TRANSLATE(NAM,'A،/؛×÷,.؟<>ّـ1234567890-=+_)(*&^%$#@!~/?><}{;:"','A'));

END;

والتي تناديها من داخل الاجراء التالي

PROCEDURE chk_name(reqf varchar2 := 'R') IS

l1 number(3);

begin

l1 := length(:system.cursor_value);

copy(name_fltr(:system.cursor_value),:system.trigger_item);

if length(:system.cursor_value) <> l1 then

show_message('أعد تصحيح الاسم');

raise form_trigger_failure;

end if;

if reqf = 'R' then

if :system.cursor_value is null then

show_message('يجب ادخال الاسم');

raise form_trigger_failure;

end if;

end if;

end;

)طبعا الوظيفه والاجراء يتم انشائهم في ال program units (

والاجراء ينادى في ال

WHEN-VALIDATE-ITEM

#3

الاخ ابوعمر عبدالله

اشكر لك تجاوبك السريع

لكن الذي اقصده التشيك على ادخال المسافة مرتين متتاليتين والتشيك على (المده) التي فوق حرف التاء . واقصد بالمدة ان ا لشخص يمد في الكلمة مثل ابــــــــوعمر

ارجو ان اكون قد وضحت المشكلة . وشكراً لك

#4

السلام عليكم

ماسبق يعالج مشاكل الادخال والتي تتضمن الارقام والحروف الخاصة و (المده) التي فوق حرف التاء اما بالنسبة للمسافة مرتين متتاليتين هذه الوظيفه ئؤدي الغرض ولو انها شغل عجلة ولكن جربتها شغاله 100%

FUNCTION rep_space (NAM VARCHAR2) RETURN VARCHAR2 IS

v number;

T NUMBER;

MM NUMBER;

NEWNAM VARCHAR2(40);

BEGIN

MM :=LENGTH(NAM);

T := 1;

FOR v in 1 .. MM

LOOP

IF SUBSTR(NAM,V,1) = ' ' AND T = 0 THEN

NEWNAM := NEWNAM||SUBSTR(NAM,V,1);

T := 1;

ELSIF SUBSTR(NAM,V,1) <> ' ' THEN

NEWNAM := NEWNAM||SUBSTR(NAM,V,1);

T := 0;

END IF;

end loop;

return(NEWNAM);

END;

وخذ هذه الوظيفه بالمره لمعالجة ايضا الادخال بحيث ان

(أ) او ( آ) يصير (ا)

(ة) تصير (ه)

(ي) في اخر الكلمة تصير (ى)

FUNCTION replac_nam (NAM VARCHAR2) RETURN VARCHAR2 IS

mm number;

CH CHAR ;

CHNAM VARCHAR2(20);

BEGIN

MM :=LENGTH(NAM);

CH := SUBSTR(NAM,MM,1);

IF CH = 'ي' THEN

CHNAM := SUBSTR(NAM,1,MM-1)||'ى';

return(TRANSLATE(CHNAM,'أةآ','اها'));

ELSE

return(TRANSLATE(NAM,'أةآ','اها'));

END IF;

END;

#5

بسم الله الرحمن الرحيم

الأخ ابوعمر عبدالله

جزاك الله خير وتراني تعبتك معي

الطريقة فعلاً ممتازة ولكن واجهت مشكلة وهي :

عند ادخال اسم مثل : ال عمران

تصبح العمران

امل ان اجد حلاً لها

وشكراً على تعاونك السريع

#6

رن تايم

اتوقع ان استخدامك للترقر التالي وهو WHEN-VALIDATE-ITEM

على نفس الحقل الذي تريد عمل تشييك عليه وكتابة الكود المراد داخل هذا الترقر هو الحل الامثل

#7

السلام عليكم

الوظيفة rep_space والتي سبق وضعها في الرد السابق تعطي المطلوب وانا جربتها بحيث مازاد عن مسافة واحدة تشال .

تاكد انك نقلت الوظيفه ولم تغير قيمة المتغير T لان هو الذي يتحكم بعدد المسافات .

اذا كان فيه مشكلة ارسلي بريدك وانا ارسلك نموذج عباره عن مثال لطلبك

#8

السلام عليكم

الأخ ابو عمر

اشكرك على تجوبك معي

وأرجوا ارسل النموذج على البريد التالي:

run25sa@yahoo.com

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

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