السلام عليكم و رحمة الله و بركاته..........
عملت جدول و من ضمن المتغيرات اريد تعريف متغير هو عبارة عن تاريخ انا عرفته على انه DATE و لكن عند تعبئة الجدول يطلع ERROR عند خانة التاريخ ؟
اتمنى الرد سريعا و شكرا ......
السلام عليكم و رحمة الله و بركاته..........
عملت جدول و من ضمن المتغيرات اريد تعريف متغير هو عبارة عن تاريخ انا عرفته على انه DATE و لكن عند تعبئة الجدول يطلع ERROR عند خانة التاريخ ؟
اتمنى الرد سريعا و شكرا ......
أخي الكريم ..
إن كنت تقصد متغيراً في VB فأحطه بعلامتي اقتباس مفردة ' '
ولو وضحت أكثر بالمثال لربما تجد الجواب إن شاء الله
لقد كتبت لك المثال و الخطأ الذي يظهر لي
CREATE TABLE Booking( hno NUMBER(4) NOT NULL, gno NUMBER(4) NOT NULL, Date_From DATE NOT NULL, Date_To DATE NOT NULL, CONSTRAINT Booking_gno_pk PRAIMARY KEY (gno)); SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To) 2 VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO'); Enter value for hotel_num: 1500 Enter value for guest_num: 200 Enter value for date_from: 11-09-2001 Enter value for date_to: 11-10-2001 old 2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO') new 2: VALUES(1500,200,'11-09-2001','11-10-2001') VALUES(1500,200,'11-09-2001','11-10-2001') * ERROR at line 2: ORA-01843: not a valid month
شكرا مرة اخرى
السلام عليكم
الاخ برمجه
المشكله هيا في اختلاف الDATE FORMAT
على العموم لكي تستطيع اضافه سجل جديد استخدم احد
الحلول التاليه :-
1 - كتابه التاريخ " المشكله في كتابه الشهر فقط " بالشكل المحدد في
قاعده البيانات وهو افتراضيا كالتالي : DD-MON-YYYY مثلا
SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To) 2 VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO'); Enter value for hotel_num: 2000 Enter value for guest_num: 1429 Enter value for date_from: 11-oct-2002 Enter value for date_to: 12-dec-2002 old 2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO') new 2: VALUES(2000,1429,'11-oct-2002','12-dec-2002') 1 row created. SQL>
2- تعديل الDATE FORMAT وله طريقتين
أ - تعديل الDATE FORMAT مؤقته وذلك بتنفيذ الكود التالي :-
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';
وسوف تتمكن من ادخال التاريخ بالصيغه التى اردتها في مثالك :-
SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To) 2 VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO'); Enter value for hotel_num: 1234 Enter value for guest_num: 4321 Enter value for date_from: 1-1-2002 Enter value for date_to: 12-4-2002 old 2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO') new 2: VALUES(1234,4321,'1-1-2002','12-4-2002') 1 row created. SQL>
** لكن لاحظ هنا انك بمجرد عمل خروج او Disconnect لهذا المستخدم
فسيعود ال DATE FORMAT للشكل الافتراضي له وهو DD-MON-YYYY .
ب- لتغيير الDATE FORAMT وتثبيته على طول قم بتشغيل الREGEDIT
واذهب الى الملف HKEY_LOCAL_MACHINESOFTWAREORACLE
والى الملف HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0
والملف HKEY_LOCAL_MACHINESOFTWAREORACLEHOME1
** الى تلاقيه منهم
واضف به مفتاح تسلسلي جديد"New String Value "
واجعل اسمه NLS_DATE_FORMAT وقيمته DD-MM-YYYY
او اي شكل تريد عرض واستخدام التاريخ به .
والسلام عليكم
عمر باعقيل
كندا - مونتريال
و عليكم السلام و رحمة الله و بركاته
لقد استخدمت الكود
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';
و ضبط معايا الجدول من غير اخطاء
و اكرر شكري لك يا أخ عمر
و السلام عليكم....
بدلا عن تغيير ال session كل مرة، وإن كنت تحب ان تستخدم فورمات تختلف عما لديك في القاعدة، ولاتعلم كيف تغيير ذلك بشكل ثابت، يمكنك استخدام الامر التالي
SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To)
2 VALUES(&HOTEL_NUM,&GUEST_NUM,
3 to_date('&DATE_FROM','dd/mm/yyyy'),
4 to_date('&DATE_TO','dd/mm/yyyy'));
Enter value for hotel_num: 11
Enter value for guest_num: 15
old 2: VALUES(&HOTEL_NUM,&GUEST_NUM,
new 2: VALUES(11,15,
Enter value for date_from: 03/12/2002
old 3: to_date('&DATE_FROM','dd/mm/yyyy'),
new 3: to_date('03/12/2002','dd/mm/yyyy'),
Enter value for date_to: 03/12/2003
old 4: to_date('&DATE_TO','dd/mm/yyyy'))
new 4: to_date('03/12/2003','dd/mm/yyyy'))
1 row created.
SQL>السلام عليكم
شكرا لك يا أخ السني فقد جربت الأمر الذي كتبته و كان الحل اسهل من اعادة الأمر عدة مرات و شكرا لك يا أخ عمر على الكود الذي كتبته فقد استفدت منه ايضا.........
هذا الموضوع مغلق.