الانتقال إلى المحتوى
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.

[استفسار] عاوز اعمل Validate بس من Button ؟

Featured Replies

بتاريخ:

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

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

انا عندى textbox نوعها number وطبعا لما بتكب فيها نص مش بيخلى insertion point من textbox ودة الصح طبعا
طيب المشكلة اية ان لمستخدم ممكن يروح بالموس يضغط على حفظ ودى حتسبب عندى مشكلة
يبقى انا عاوز اعمل كود فى الحدث
WHEN-BUTTON-PRESSED
انو يشوف القيمة الموجود فى textbox دى رقم يسمح له انو يعمل حفظ لو لا يوقف الكود

حديكوا مثال علشان محدش يقول مش فاهم
:blink:

DECLARE
V_FIND ITEM;
V_CHECK VARCHAR2(15);
-- ALTER VARIABLE
V_ALERT ALERT;
V_SHOW_ALERT NUMBER;
BEGIN

IF :CARS_FOR_SALE.MANUFACTURER_SHORTNAME IS NULL THEN 
  V_ALERT:=FIND_ALERT('CONFIRM_ALERT');
  IF NOT ID_NULL(V_ALERT) THEN
	  SET_ALERT_PROPERTY('CONFIRM_ALERT',TITLE,'Sala Car Project - Warning');
	  SET_ALERT_PROPERTY('CONFIRM_ALERT',ALERT_MESSAGE_TEXT,'You Should Enter Manufacturer Name');
	  SET_ALERT_BUTTON_PROPERTY('CONFIRM_ALERT',ALERT_BUTTON1,LABEL,'OK');
	  SET_ALERT_BUTTON_PROPERTY('CONFIRM_ALERT',ALERT_BUTTON2,LABEL,'Help');
	  V_SHOW_ALERT:=show_alert('CONFIRM_ALERT');
	  IF V_SHOW_ALERT=ALERT_BUTTON1 THEN
		  NULL;
	  END IF;
  END IF;
  
	  RAISE FORM_TRIGGER_FAILURE;
  END IF;
END;



بس فى الحالة دى انا بقولة لو الحق دة NULL طلع له رسالة قولة يجب ادخال العنصر لا انا عاوز اعملها بقى
لو القيمة دى نص مش رقم او بعمنى اصح لو القيمة دى مش رقم مش تكمل الكود
RAISE FORM_TRIGGER_FAILURE;

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

بتاريخ:

السلام عليكم
أخي الكريم - أحمد
يوجد أمثلة كتيرة من الفانكشن تمنع من وجود حرف في ايتم رقمي

انظر هنا
http://www.araboug.org/ib/index.php?s=&amp...st&p=162194

أتمنى أن تلبي طلبك
ويوجد غيرها كثير

وفقك الله

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

انا عارف موضوع البشمهندس PALI.ORACLE
الخاص بالارقام بس مش عارف اظبط على الفورمة ازاى
يعنى اكتب فى الحدث
WHEN-BUTTON-PRESSED
ازاى لو سمحت لو كود يا بشمهندس mustafagamiel او توضيح من حضرتك

بتاريخ:

السلام عليكم

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

declare 
v_len number; -- length of the item
v_value varchar2(100); -- the content of the item
x number;

begin v_len:= length(:emp.ph);
v_value:= :emp.ph;

if v_value is not null then

for i in 1..v_len
loop
if substr(v_value,i,1) not in ('0','1','2','3','4','5','6','7','8','9')

then 
message('not valid');
message('not valid');
raise form_trigger_failure;
end if;
end loop;

end if;
end;



وفقك الله

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

للاسف يا بشمهندس مش شغال

بتاريخ:

السلام عليكم
أخي العزيز

هل هذا سؤالك
ان لو القيم في الايتم الاي عندك ليست رقم لايكمل الكود أم ماذا ؟

لو كده يبقى زي ماقلت في السابق

لو غير كده وضح أكثر

وفقك الله

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

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

message('not valid');



وحضرتك معرف x number; وانت مش استخدمتة له اهمية ولا لا

وللاسف فعلا الكود مش شغال ومعلشى انا تعبك

:blink:

بتاريخ:

السلام عليكم

لا ولاتعب ولاشيء

فعلا المتغير x ليس له فائدة


لكن هل نوع الايتم من النوع number لو كده يبقى انت مش محتاج اي كود لانه مباشرة هيقولك غير مسموح ودي رسالة اتوماتيك من الديفليوبير

لكن لو غيرت نوع الايتم الى char طبعا مبدئيا سيمح لك بإدخال اي شيء حروف- ارقام -علامات اي شيء
لكن بالكود السابق سيقوم بعمل test على محتويات الايتم ولو اكتشف ان مابداخله غير رقم سيظهر لك الرسالة

أتمنى أن اكون فهمتك

وربنا يوفقك
لو فهمتك خطأ أرجو توضيح ماعندك اوي

وفقك الله

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

شكرا جدا يا بشمهندس والله ما قصرت
فعلا هو اشتغل مع textitem من النوع char بس ومش اشتغل مع النوع number
وانا عارف ان الديفولبر مش بيسمح للمستخدم انو يخرج من textitem وهو بيكتب نص فى عمود رقم تمام ودة كويس جدا
بس المشكلة عندى انى عامل فى مفتاح الحفظ انو يقفل كل textbox بعد الحفظ

المشكلة اللى ممكن يقع فيها المستخدم اية ؟؟
انو يدخل نص فى عمود رقمى ويروح بالموس يعمل حفظ لو مفيش حاجة تشيك على الكود وتوقفة يبقى حيقفل الـ Textbox مع ان العمود مش اتعمل لية insert والقيمة خطا اساسا .

السؤال هنا ينفع نطبق كود حضرتك الجميل دة على textbox من نوع number ولا لا .
وهل فية فكرة كود زى دى تعمل فلديت على التاريخ ؟
او فية حاجة تتاكد ان القيمة الموجود فى Textbox الــ validate بتاعها صح ولا لا ؟

مشكور بجد على الكود ومعلشى انا بتعبك معيا :blink: :D انت دائما اللى بترد على مشاركتى ؟ بارك الله فيك .

بتاريخ:

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

أخي العزيز

بالنسبة لـ

انو يدخل نص فى عمود رقمى ويروح بالموس يعمل حفظ لو مفيش حاجة تشيك على الكود وتوقفة يبقى حيقفل الـ Textbox مع ان العمود مش اتعمل لية insert والقيمة خطا اساسا

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

إذن
السؤال هنا ينفع نطبق كود حضرتك الجميل دة على textbox من نوع number ولا لا


هتكون الاجابة لا أو بمعنى أصح ليس لها معنى


وهل فية فكرة كود زى دى تعمل فلديت على التاريخ ؟


ممكن مع بعض التعديلات فيه

لكن أرجع واقولك سيكون افضل شيء هو مقاييس الديفيلوبير يعني لما يكون هناك تاريخ اختار ايتم تاريخ يقوم بالضبط لحاله وتوفر على نفسك الوقت والتكويد

بالنسبة لسؤالك الخاص في موضوعك
هو امتى يتم عمل ايتم من نوع char لايقبل الا رقم
طبعا في حالة ادخال مثلا اشياء لها رقم على الشمال وليكن التليفونات وبعض التكويد لبعض الاصناف وهكذا

اتمنى أن أكون أفدتك

وفقك الله
بتاريخ:

السلام عليكم
جرب هادا الكود:

declare
CH Number;
begin
if :blk.user_name is not null then

CH:=SUBSTR(:blk.user_name,1,1);

IF CH  BETWEEN 'a' AND 'z' THEN
message('Numbers Only');
message('Numbers Only');
raise form_trigger_failure;
end if;
end if;
end;



موفق

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

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

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

DECLARE
CH NUMBER;
BEGIN
IF :CARS_FOR_SALE.ASKING_PRICE IS NOT NULL THEN
	CH:=SUBSTR(:CARS_FOR_SALE.ASKING_PRICE,1,1);
	IF CH  BETWEEN 'A' AND 'Z' THEN
		MESSAGE('NUMBERS ONLY');
		MESSAGE('NUMBERS ONLY');
		RAISE FORM_TRIGGER_FAILURE;
	END IF;
END IF;
END;



هذا الكود مش شغال يا بشمهندس PALI.ORACLE اذا كان نوع الحقل اللى حيتعمل علية الــValidate نوعة Number فالكود دة مش بيشتغل خلاص
ولكن اذا كان الحقل من النوع Char الكود بيشتغل 100 %

بس حيكون فية تعديل بسيط

DECLARE
CH VARCHAR2(100);
BEGIN
IF :CARS_FOR_SALE.CURRENT_MILEAGE IS NOT NULL THEN
	CH:=SUBSTR(:CARS_FOR_SALE.CURRENT_MILEAGE,1,1);
	IF CH  BETWEEN 'A' AND 'Z' THEN
		MESSAGE('NUMBERS ONLY');
		MESSAGE('NUMBERS ONLY');
		RAISE FORM_TRIGGER_FAILURE;
	END IF;
END IF;
END;



فى VARIABLE تم هى كمان varchar2

وبالنسبة لكود الشمهندس mustafagamiel شغال 100 % برضة مع الحقول اللى من النوع Char

DECLARE
V_LEN NUMBER;
V_VALUE VARCHAR2(100);
BEGIN 
V_LEN:= LENGTH(:CARS_FOR_SALE.CURRENT_MILEAGE);
 V_VALUE:=:CARS_FOR_SALE.CURRENT_MILEAGE;
 IF V_VALUE IS NOT NULL THEN
  FOR I IN 1..V_LEN
  LOOP
	  IF SUBSTR(V_VALUE,I,1) NOT IN ('0','1','2','3','4','5','6','7','8','9')
		  THEN
		  MESSAGE('NOT VALID');
		  MESSAGE('NOT VALID');
		  RAISE FORM_TRIGGER_FAILURE;
	  END IF;
  END LOOP;
  END IF;
END;



يبقى فى الحالتين لازم يكون Item من النوع Char :blink:

السؤال يا بشمهندسين كدة خلاص مش ينفع اعمل validate ادخل رقم فقط على حقل رقمى يعنى اريح نفسى واعمل الحقل Char علشان اقدر انفذ علية Validate اللى انا عاوزة

السؤال الثانى: هل اقدر اعمل validate بنفس الطريقة اقولك لو validate بتاع Item دة مظبوط اعمل يبقى تمام لو مش مظبوط يبقى يطلع ليا رسالة ويوقف الكود؟
انا مش قصدى هنا على ادخل رقم فقط ؟
انا قصدى هنا انو يعمل check مثلا على اى validate مثلا لما ابقى محدد Formate mask مثلا للتاريخ طبعا مش بيخرج من item الا لما بيشوف Validate انا عاوز اعمل validate دى على Button اول ما اضغط علية لو اوك بيعمل حفظ لو لا بوقف الكود نفسة فكرة الكود اللى فوق بالضبط بس مش على الرقم بس على كلة وخصوصا التاريخ .

وشكرا وربنا يوافقك ويقويكم علينا :D


وبجد انا بقى عارف لما بحط اى مشاركة فيها استفسار ان البشمهندس mustafagamiel او PALI.ORACLE و البشمهندس الجبالى كمان مع انى مش شوفتة فى المشاركة دى
علشان بجد انتم الثلاثة عاملين مجهود خرافى فى المنتدى والرد على الاستفسار لكل الاخوة فى المنتدى وجزاكم الله خير


والله المستعان

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

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

وملحوظة كمان يا بشمهندس PALI.ORACLE علشان لو حد من الاعضاء عاوز يستفيد بالشاركة

لازم فى النقطة دى

IF CH  BETWEEN 'A' AND 'Z' THEN



دة بيعمل validate على الحروف الكبيرة فقط واذا ادخلت حروف صغيرة فلن تظهر الرسالة ولا يحدث خطا

فيجب اضافة امر كمان للحروف الصغيرة

IF CH  BETWEEN 'a' AND 'z' THEN



والله المستعان

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

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

مستنى الرد يا هندسة mustafagamiel و PALI.ORACLE
او اى مهندس اوراكل بيعطف على الغلابة
والله المستعان

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

مشكور اخى

انا عارف لو قولت حاجة تانية حتضربونى اسكت احسن

ههههههههههههه

:rolleyes:

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

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

لا يابشمهندس الفورمة شغال مليون % وانا مش قولت لكم حاجة فى الحوار دة
انا قولت من الاول ان حل حضرتك صح والبشهندس مصطفى صح فى الكود
ما قصرت ابدا والله فى الجواب على اى مشاركة

وكود ترلللللليون فى %

بس مع Item اللى من النوع Chart فقط ولكن فى حالة ان item من النوع Number ولا شى بيحصل ولا بيظهر رسالة ارور .

سؤال تتعمل ازاى مع Item اللى من النوع Number ؟
وكمان لو حبيت اعمل validate على تاريخ بنفس الطريقة علشان طبعا Format Mask برضة نفس الحكاية ؟

بس انا جت ليا فكرة بخصوص العنصر اللى من نوع Number بحاول اظبطها هو فى رسالة Error رقم 50016

FRM-50016: Legal characters are 0-9 - + E

دى ممكن تتعمل فى On-error

لو سمحت اخرى الفاضل

انا لقيت مشاركات فى المنتدى

CREATE OR REPLACE function HANON_OCP.isNumber( p_string
in varchar2 ) return boolean
 as
	  x number;
	  not_a_number exception;
	   pragma exception_init( not_a_number, -6502 );
  begin
		x := to_number( p_string );
		return true;
exception
	   when not_a_number then
			   return false;
WHEN  OTHERS THEN RETURN FALSE;
  end;




وطريقة اخرى

FUNCTION is_number (numstring VARCHAR2) RETURN BOOLEAN
IS
 /* Returns true if the string contains a valid number  */
w_num NUMBER;
BEGIN
w_num := TO_NUMBER(numstring);
RETURN TRUE;
EXCEPTION
WHEN INVALID_NUMBER OR VALUE_ERROR THEN
RETURN FALSE;
END is_number;



الكود دة ممكن يتوظف مع الديفلوبر ازاى مثال عملى لو ينفع

وجزاك الله عنا كل خير ومعلشى اصلى حموووت واخلص البروجكت الرخم دة

والله المستعان

بتاريخ:

السلام عليكم

أخي احمد ليه شغلت نفسك بشيء زي كده طالما المشكلة محلولة
لكن جرب فكرتك دي

on error trigge


r

if error_code=50016 then
message('only number');
message('only number');
raise form_trigger_failure;
end if;




موفق

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

بشمهندس مصطفى اانا اساسا انا تعبتك طبعا انا مشكس شوية مش بحب الفورمة تتحكم بيا لازم انا ازلها

بس انا عارف حكاية on error trigge انا قولت عليها كمان

بس هل انا اقدر اتحكم فيها من خلال Button

والله المستعان

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

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

انت فين يا بشمهندس مصطفى
معلشى تعبك بس انا محتاج اتحكم فى الارور دة عن طريق الـButton علشان انا المشكلة عندى عن الضغط على حفظ انا بقفل text Box
لو انا عملت فى
On-error
بيكمل تنفيذ الكود عادى

الخلاصة عاوز اتحكم فى Error عن طريق Button

وشكرا مقدما

بتاريخ:

بسيطة ممكن تعمل :
IF NVL(:CARS_FOR_SALE.MANUFACTURER_SHORTNAME IS NULL,0) =0 THEN

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

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

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

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

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

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.