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

مشكلة التاريخ التي اتعبتني كثير جدا ..رجاء المساعدة

Featured Replies

بتاريخ:

السلام عليكم

يااخواني انا اعاني جدا من مشكلة ادخال التاريخ في ارواكل .. لقد اتعبني جدا ..

ومن المعروف ان الصيغة العامة للتاريخ في ادخال قواعد البيانات هي dd-mm--yy المشكلة هي :

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

المهم الان لما اشغل الفورم واعمل لها كومبيلير كل شي تمام لكن لما اجي ادخل التاريخ بهذا الصيغية يرفض ذلك..

النقاط التي اريد ان اطرها هنا :

1- في حالة المعالج الاتوميتكي اي من دون كتابة كود في التريجر كيف اتعامل مع التاريخ في عملية الادخال ..

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

لان المستخدم قد لايعرف تلك الصيغة المقبولة في البرنامج للتاريخ .. اذا وجد calender يرتبط مع text item فذلك ابسط وييسر على المستخدم الاخطاء..

افيدوني في تلك النقطة المهمة ..

2- في حالة المعالج اليدوي اي كتابة الكود من دون استخدام المبرمجة الميسرة .. لقد قمت بكتابة الكودinsert داخل تريجر في البوتنbutton وهو:

declare
begin
insert into students (id,name,date)values(:t1,:t2,:t3);
commit;
end;



المشكلة اني عملت نفس البرنامج له بجملة insert وقبل في ذاك البرنامج هنا لم يقبل والمشكلة كانت التاريخ

ملوحظة: في حالى استخدام التاريخ من دون ادخال اي غير ضروري الادخال نقووم باستخدام الدالة sysdate والتي تقرا من تاريخ النظام وتدخله في الداتا

بيس .. لكن لما يكون عملية الادخال من قبل المستخدم كيف يكون ذلك..

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

منتظر ردروكم

بتاريخ:

يا اخي استعمل دوال التحويل التاريخ insrt into table_name(champ) values to_date(:t1(

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

اشكرك اخوووي

لكن مش هالموضوع اللي نتكلم عليه

اقرا الموضوع جيدا..

نحن نتكلم عن عملية الادخال وليس العرض..

اشكرك اخووووي

بتاريخ:

السلام عليكم

اخي العزيزي في حالك كنت تستخدم المعالج ( اي عدم كتابة اي كود ) او كنت تقوم بكتابة الكود

يمكنك استخدام خاصية على الايتم وهي format mask
وعن طريقها تستطيع اجبار المستخدم على ادخال صيغة التاريخ كما تريد ويتم عرض التاريخ بها حسب النسق المحدد

مثال على القمة المستخدمة

dd-mm-yyyy
او
dd/yyyy/mm
او اذا اردت اجبارة على ادخال الوقت مثلا تكتب له

hh24:mi

وهنا تجبره على التعامل مع الوقت بصيغة 24 ساعة

الموضوع بسيط لكن لا تيأس

اخوك جاد القرعان

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

السلام عليكم

اخي العزيزي في حالك كنت تستخدم المعالج ( اي عدم كتابة اي كود ) او كنت تقوم بكتابة الكود

يمكنك استخدام خاصية على الايتم وهي format mask
وعن طريقها تستطيع اجبار المستخدم على ادخال صيغة التاريخ كما تريد ويتم عرض التاريخ بها حسب النسق المحدد

مثال على القمة المستخدمة

dd-mm-yyyy
او
dd/yyyy/mm
او اذا اردت اجبارة على ادخال الوقت مثلا تكتب له

hh24:mi

وهنا تجبره على التعامل مع الوقت بصيغة 24 ساعة

الموضوع بسيط لكن لا تيأس

اخوك جاد القرعان


اشكرك اخي مع تجاوبك معاي

لكن اللي اقصده هو كيف اجعل التاريخ يختار مثلا من CALENDER ويتم اضافته مباشرة الى TEXT ITEM هل توجد هذه في اوراكل

كما انها توجد في فيجول استديو

منتظر ردك
بتاريخ:


السلام عليكم

اخي العزيزي في حالك كنت تستخدم المعالج ( اي عدم كتابة اي كود ) او كنت تقوم بكتابة الكود

يمكنك استخدام خاصية على الايتم وهي format mask
وعن طريقها تستطيع اجبار المستخدم على ادخال صيغة التاريخ كما تريد ويتم عرض التاريخ بها حسب النسق المحدد

مثال على القمة المستخدمة

dd-mm-yyyy
او
dd/yyyy/mm
او اذا اردت اجبارة على ادخال الوقت مثلا تكتب له

hh24:mi

وهنا تجبره على التعامل مع الوقت بصيغة 24 ساعة

الموضوع بسيط لكن لا تيأس

اخوك جاد القرعان


اشكرك اخي مع تجاوبك معاي

لكن اللي اقصده هو كيف اجعل التاريخ يختار مثلا من CALENDER ويتم اضافته مباشرة الى TEXT ITEM هل توجد هذه في اوراكل

كما انها توجد في فيجول استديو

منتظر ردك


مع الاسف انا مفهمتش حضرتك تقصد ايه فى مشكلتك
بس انا فهمت النقطه ده وانا جربتها واشتغلت معايا كويس
قمت بزياره الرابط التالى وسوف تجد فيه حل المشكله ان شاء الله
https://sites.google.com/site/craigsoraclestuff/oracle-forms---how-to-s/forms-how-to-use-a-calendar-in-a-form
بتاريخ:
  • كاتب الموضوع

السلام عليكم

اخي احمد اشكرك على ردك الجميل والرابط

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

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

الذي اطلبه منك اخووي هل ممكن ترسل لي الملف او البرنامج الذي سويته وطبقته عندك من اجل اطبقه عندي

واعرف وين الخطا في ذلك

شاكرا لك تعاونك معاي

بتاريخ:

السلام عليكم
اخى العمليه سهله جدا وبسيطه وارجو من خلال الشرح ان تتوصل الى الخطوات السليمه
فى البدايه انت بحاجه لعمل open لملف ال calender داخل object library
ثم بعد ذلك باستخدام drag and drop وتضعه فى object group ثم سيظهر لك نافذه اختار منها copy
بعد ذلك قم بأنشاء push button فى المكان الذى تود فيه اظهار النتيجه وقم بعمل تريجر when-button-pressed
وقم بكتابه الكود التالى بداخله مع العلم فى الاعتبار بتغيير الكود الى ما يناسب اسماء ال item لديك


DECLARE
 cur_x_pos	INTEGER := 0;
 cur_y_pos	INTEGER := 0;
 new_x_pos   INTEGER := 0;
 new_y_pos   INTEGER := 0;
 item_height  INTEGER := 0;
 my_date	   VARCHAR2(25);
BEGIN
 cur_x_pos := Get_Item_Property('ROOM_DETAILS.CHECK_IN',x_pos);
 cur_y_pos := Get_Item_Property('ROOM_DETAILS.CHECK_IN',y_pos);
 item_height := Get_Item_Property('ROOM_DETAILS.CHECK_IN',height);

 new_x_pos := cur_x_pos;
 new_y_pos := cur_y_pos + item_height + 2;
 
 Date_Lov.get_Date(display_date => sysdate
,return_item => 'ROOM_DETAILS.CHECK_IN'
,v_x_pos => new_x_pos
,v_y_pos => new_y_pos
,v_title => 'FORMS DATE PICKER'
,v_ok => 'OK'
,v_cancel => 'Cancel'
,V_highlight => FALSE
,v_autoconfirm => FALSE
,v_autoskip => FALSE
 );
END;



عند عمل كمبيل بلضغط على ctrl+shift+k


سوف تظهر لك ثلاث مشاكل فى ثلاث تريجرات مختلفه على مستوى DATA_BUTTON_BLOCK


التريجر الاول


WHEN-NEW-ITEM-INSTANCE


قم باستبدال الكود الذى بداخله بهذا الكود





DECLARE
v_mon VARCHAR2(10);
v_year VARCHAR2(4);
v_dummy VARCHAR2(61) := get_block_property('DATE_BUTTON_BLOCK',FIRST_ITEM);
BEGIN
-- Clear_Message;
-- Message('First Item: '||v_dummy);
-- Message(' ');
IF ( :system.cursor_value IS NULL
OR (:system.cursor_item = get_block_property('DATE_BUTTON_BLOCK',LAST_ITEM)) ) THEN
IF ( date_lov.v_next = 'Y' ) THEN
Go_Item('DATE_CONTROL_BLOCK.OK_BUTTON');
ELSIF ( date_lov.v_next = 'N' ) THEN
Next_Item;
ELSIF ( date_lov.v_prev = 'Y'
OR (:system.cursor_item = get_block_property('DATE_BUTTON_BLOCK',FIRST_ITEM)) ) THEN
Go_Item('DATE_CONTROL_BLOCK.YEAR_PLUS1');
ELSIF ( date_lov.v_prev = 'N' ) THEN
previous_item;
END IF;
ELSE
date_lov.v_next := 'N';
date_lov.v_prev := 'N';

IF NOT( :SYSTEM.Cursor_Item = 'BL_CALENDAR.MMONTH'
OR :SYSTEM.Cursor_Item = 'BL_CALENDAR.MYEAR' ) THEN
v_mon := substr(TO_CHAR(to_date(substr(:date_control_block.display_mon_year,1,Instr(:date_control_block.display_mon_year,' ')),'MM')),1,2);
v_year := substr(:date_control_block.display_mon_year,Instr(:date_control_block.display_mon_year,' ')+1, Length(:date_control_block.display_mon_year));
--Message('V_mon: '||v_mon||', v_year: '||v_year);
--message(' ');
date_lov.d_sel_date := to_date(v_mon||'/'||:system.cursor_value||'/'||v_year, 'MM/DD/RRRR');
Clear_Message;
Message('Selected Date: '||date_lov.d_sel_date);
ELSE
Clear_Message;
Message('Cursor_Item: '||:system.cursor_item);
END IF;
END IF;
END;




ثانى تريجر


KEY-PREV-ITEM





IF ( :SYSTEM.Trigger_Item = :SYSTEM.Trigger_Block||'.'||Get_Block_Property(:SYSTEM.Trigger_Block,First_Item) ) THEN
Go_Item('DATE_CONTROL_BLOCK.YEAR_PLUS1');
ELSE
date_lov.v_prev := 'Y';
Previous_Item;
END IF;




الثالث


KEY-NEXT-ITEM




date_lov.v_next := 'Y';
next_item;




ولا تنسى ان تجعل بلوكات الكليندر فى نهايه الترتيب


ولا تنسانى من صالح الدعاء وحاضر ان شاء الله لو واجهت اى مشاكل .

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

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

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

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

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

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.