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

Exception With Cursor في حالة عدم وجود بيانات

Featured Replies

بتاريخ:

السلام عليكم

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

واذا كان فيه بيانات وعدلت فيها وضغطت زر التعديل يطلع لي هذا الخطأFRM-40735
وعندما اضغط زر الحذف يطلع لي الخطأ FRM-40508 غير قادر على اجراء انسيرت؟؟؟؟؟؟؟؟؟؟ وانا بعمل حذف

ارجو المساعده

بتاريخ:

انت ممكن تعمل اكسبشن في التريجر بتاعك بحيث ان الكرسور لو طلع فاضي ينفذ الشرط اللي انت عايزه زي الكود دا مثلا

declare
d exception;
x number;
cursor c is select salary,last_name from employees where employee_id=:text_item4;
begin
open c;
fetch c into :item7,:text_item6;

if c%notfound  then
raise d;
end if;
exception when d then
x :=show_alert('alert8');
close c;
end;



للسؤال التاني جرب انك تعمل مثلا في زرار التعديل جمله ابضيت عاديه
مثلا

update employees 
set salary=:text_item1,name=:text_item2
where employee_id=:text_item3

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

السلام عليكم

جربت الكود وما شتغل

وين احط الاكسبشن بالضبط؟

هذا الكود الي عندي

declare

cursor payment_cur is
select paymentNo,bdate,bank,transNo,chequeNo,payment,prj_No,BillNo
from Payments
where prj_No = :PROJECTS.PRJ_NO; 
total number:=0;
total1 number:=0;
d exception;
x number;
begin

for payment_rec in payment_cur

LOOP
:PAYMENTS.PAYMENTNO := payment_rec.paymentNo;
:PAYMENTS.BDATE := payment_rec.bdate;
:PAYMENTS.BANK := payment_rec.bank;
:PAYMENTS.TRANSNO := payment_rec.transNo;
:PAYMENTS.CHEQUENO := payment_rec.chequeNo;
:PAYMENTS.PAYMENT := payment_rec.payment;
:PAYMENTS.PRJ_NO := payment_rec.prj_no;
:PAYMENTS.BILLNO := payment_rec.BillNo;
total:=total+ :PAYMENTS.PAYMENT;
next_record;
:PAYMENTS.TEXT_ITEM70 := total;
:PAYMENTS.TEXT_ITEM81 := total;

END LOOP;
if payment_cur%notfound  then
	raise d;
end if;
exception 
	when d then 
	x :=show_alert('alert8');
	
	select TotalAmount into :PAYMENTS.TEXT_ITEM74
from contagreement
where contagreement.cust_no=:CUSTOMERS.CUST_NO;
:PAYMENTS.TEXT_ITEM70 := total - :PAYMENTS.TEXT_ITEM74;
end;




وزر الابديت عاكلته مثل مانت كاتب بالضبط بس حاطه زياده تريقر on_update وداخله update_record وجربته على مستوى البلوك والفورم ولم تنجح الطريقتين
بجرب اشيل هذا التريقر وارد عليك

بتاريخ:

طيب بص اعمل تريجر when-validate-item
علي التكست اللي عندك اللي اسمه
:PROJECTS.PRJ_NO

واكتب فيه الكود دا

declare
test number;
alerterror number;
begin
select count(*) into test from Payments
where 
prj_No=:PROJECTS.PRJ_NO;
if x=0 then
alerterror :=show_alert('alert8');
raise form_trigger_failure;
end if;
end;



وسيبك من حكايه الاكسبشن اللي في الكود الاول دا
بكدا اول مهيكتب في التكست ايتم رقم المشروع ويروح يدوس علي زرار البحث لو ملقاش الرقم دا فعلا متخزن هيظهر alert اللي عندك
غير اسم alert اللي في الكود alert اللي في الفورمه عندك

والاحسن انك تعمل التكست ايتم دا PROJECTS.PRJ_NO بLOV

تم تعديل بواسطة HELL-BOY

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

شكررررا اخي
اشتغل الكود

بقي زر التعديل والحذف
اعرف انهم اسهل حاجه ممكن نسويها بس والله ماتشتغل معي ما ادري ليش وجربت كذا طريقه

بتاريخ:

في زرار الحذف مثلا اكتب

begin
delete PAYMENTS 
where PRJ_NO=:PAYMENTS.PRJ_NO;
commit;
end;



والابضيت نفس الكلام

update PAYMENTS
set column=:item,column1=:item2.....etc
where PRJ_NO=:PAYMENTS.PRJ_NO;
commit;

تم تعديل بواسطة HELL-BOY

بتاريخ:

السلام عليكم
مشكورين على روح التعاون...
افضل استخدام :

:System.Message_Level := 25;
Commit;
:System.Message_Level := 0; 



لكي يتم التخزين Internaly.

موفقين.

بتاريخ:

ento bt20lo eh B)
ana 7awlt afhn klma w7da msh fahm ay 7aga :S m3 eny a5dt el course we emt7nt 20reob bs 7ases eny msh 3arf ay 7aga

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

HELL-BOY
جربت الكود الي حطيته وهو نفسه الكود الي انا مستخدمته بس ما اشتغل يطلع لي هذا الخطأ FRM-40735

Ahmad.Hasan
الكود الي كتبته وين احطه.. في زر الابديت ؟

بتاريخ:

طيب ينفع ترفق صوره للفورمه ورساله الخطاء

بالنسبه للكود اللي كتبه الباشمهندس احمد يقصد علشان ميظهرلكش رساله ONE RECORD APPLIED AND SAVED

تكتبه

كدا

update PAYMENTS
set column=:item,column1=:item2.....etc
where PRJ_NO=:PAYMENTS.PRJ_NO;
:System.Message_Level := 25;
Commit;
:System.Message_Level := 0; 

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

هذا الفورم والخطأ

post-108170-127654571941_thumb.png

post-108170-127654573633_thumb.png

بتاريخ:

انا عملت عندي مثال مبسط زي الفورمه اللي انت عملها كدا بس مظهرليش اخطاء وكان بيعمل ابضيت عادي

اتاكد من الاكواد اللي انت كاتبه اكيد المشكله في كود انت كاتبه غلط او شوف نوع البيانات اللي هيتعملها انسيرت تكون نفس الداتا تايب واتاكد ان كل التكست ايتم اللي في شاشه البحث
DATABASE ITEM NO

تم تعديل بواسطة HELL-BOY

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

عرفت المشكله

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

ماهو الحل في هالحاله

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

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

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

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

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

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.