الفلترة في جداول Absolute Database
#1
السلام عليكم ورحمة الله وبركاته
أستعمل قاعدة بيانات من نوع Absolute Database و عندما أحاول عمل فلترة بالتاريخ :
date >20/12/2008 مثلا و أقوم بتنفيذ البرنامج فإنه بمجرد الضغط على الزر الخاص بالفلتر تظهر الرسالة التالية:
Date string expected "YYYY-MM-DD", but found ">" at line 1, column 5 - Native error: 20283.
جزى الله خيرا من بين لي سبب هذا الخطأ
الرد
#2
السلام عليكم

اعكس التاريخ بدل 20/12/2008 اجعلها 12/20/2008

جرب Date < 12/20/2008

و إذا لم يزل الخطأ اكتب لنا النص الإستعلامي كاملا
الرد
#3
السلام عليكم ورحمة الله وبركاته
شكرا أخي Prince
عكست العملية لكن دون جدوى
يبدو أنه خلل أصلي فقد وجدت في ملف المسـاعدة مايلي :
PHP كود :
The date, time, number, and currency formats used in your application should be localized for the target locale. 
All DB-Aware controls display date, time, number and currency values using the default system locale settings. 
The problem could happen when you are specifying a date, time, ... constant in a filter string or in a SQL command. 

Then you should remember the following issues: 
 
· Point character ('.') is fixed as a decimal separator.  
 
 
· ISO format could be used for date/time constants: YYYY-MM-DD HH:MM:SS to avoid problems with locale settings.  
 
 
· In other cases Absolute Database uses the current system locale settings to format date, time, and currency.  
 
   

So if you are using date, time, number, or currency in a string format for filtering, searching, or with SQL command, you must use one of the following methods: 

 
· Use the fixed decimal point character '.' for float and currency constants  
 
 · 
Use the ISO format YYYY-MM-DD for date, HH:MM:SS for time constants  
 
 · 
Use the default locale settings to convert date, time, ... value to a string  
 
 · 
Use query parameters  
 
 · Specify the format via special format string 
and SQL function  
 
   


The following example illustrates how you can use the float value in a filter string: 

 
ABSTable1.Filter := 'Weight > 3.5';  
 
  
 
  
 
  
The code below shows how to use ISO format date constant in SQL query: 

 
ABSQuery1.SQL.Text := 'INSERT INTO Orders (ID, BillDate) VALUES (1, ''2003-07-31'')';  
 
  
 
  
 
  
The next sample demonstrates how you can use the default locale settings to convert date value to a string for SQL query: 

 
ABSQuery1.SQL.Text := 'INSERT INTO Orders (ID, BillDate) VALUES (1, '+QuotedStr(DateToStr(Date))+')';  
 
  
 
  
 
  
The code below shows how to use query parameters to avoid converting problems: 

 
ABSQuery1.SQL.Text := 'INSERT INTO Orders (ID, BillDate) VALUES (2, :BillDate)';  
 
 
ABSQuery1.Params[0].AsDateTime := Date;  
 
  
 
  
 
  
The last example illustrates how to use TODATE SQL function to insert DateTime field value: 

 
INSERT INTO Orders (ID, BillDate) VALUES (3, TODATE('12/16/2002 11:10:30 am','MM/DD/YYYY hh:nn:ss ampm')) 
من فهم شيئا في الإنجليزية فليتحفنا
وفقكم الله
الرد
#4
إقتباس : أحاول عمل فلترة بالتاريخ :
date >20/12/2008 مثلا
Date كلمة مفتاحية
غير تسمية الحقل من
Date الى اسم اخر مثلا Date_Enter
الرد
#5
DeltaAziz كتب :Date كلمة مفتاحية
غير تسمية الحقل من
Date الى اسم اخر مثلا Date_Enter
او وضعها داخل حواصل مثل [Date]

[Date] < 12/20/2008
الرد
#6
بارك الله فيكما

الأخ : DeltaAziz
ليس ذاك الخلل فقد غيرت دون جدوى.

وكذلك بالنسبة لفكرة الأخ Prince

غيرت الخصائص الإقليمية للحاسوب وجعلتها على ميزاج الأميرة Absolute دون جدوى.

الذي يحيرني أنه بنفس الخصائص مع الباردوكس كل شيء عادي مما جعلني أعتقد أنه خلل أصلي في
Absolute Database

The date, time, number, and currency formats used in your application should be localized for the target locale.
All DB-Aware controls display date, time, number and currency values using the default system locale settings.
The problem could happen when you are specifying a date, time, ... constant in a filter string or in a SQL command.

والخلل الذي يظهر عندي مكتوب هنا (من ملفات المسـاعدة

The last example illustrates how to use TODATE SQL function to insert DateTime field value:

INSERT INTO Orders (ID, BillDate) VALUES (3, TODATE('12/16/2002 11:10:30 am','MM/DD/YYYY hh:nnConfuseds ampm'))

النص الكامل لملف المساعــدة ذكرته في المشاركة السابقة أعلاه.

شكرا ومضطر للعودة للبرادوكس لأني مستعجل نوعا ما؟؟
الرد
#7

كما قلت لك Date هو سبب الخطأ السابق
فان غيرته وظهر خطا اخر هذا يعني لديك شيئ اخر
السبب ليس قاعدة البيانات وانما شيئ ما متعلق بكيفية برمجتك او النظام الذي يعمل عليه برنامجك (شيئ متعلق بالتاريخ)

حسنا تابع معي حتى نحل مشكلتك اليوم، بل الان
1- ماهي اعدادات النظام عندك ؟ (لغة النظام والتاريخ)
2- ارفق ولو جزئ بسيط من القاعدة به سجل او اثنين + الفلترة التي كتبتها
الرد
#8
شكرا أخي DeltaAziz على إهتمامك
الملف في المرفقات
خصائص النظام:
standards et format : francais( france) 0
emplacement : france 1
séparateur date : /
(جربت (-) من قبل ) .
باقي الإعدادات كنت كل مرة أغيرها و اجرب.
لغة النظام الفرنسية و هي مختارة أيضا في خصائص النظام الخاصة باللغة المختارة لليونيكود.


الملفات المرفقة
.rar   Pour test absulate.rar (الحجم : 8.23 ك ب / التحميلات : 125)
الرد
#9

تنفيذ المثال عندي لايحدث اي خطأ
عند الضغط على زر الفلترة فلا يظهر اي سجل
والسبب المكتوب في الEdit هو
كود :
DATE_ENT=12/12/2005
يجب ان يكتب بالشكل
كود :
DATE_ENT="12/12/2005"
بهذا تتم الفلترة دون اي خطأ (عندي)
الان ان حدث عندك ضف هذين السطرين في الحدث OnCreate للForm
PHP كود :
DateSeparator := '/';
ShortDateFormat:='DD/MM/YYYY'; 
جرب واخبرني
الرد
#10
السلام عليكم
أين كان الخلل؟
الخلل كان في تسميتي له date كما نبه الأخ Daltaaziz فكنت جربت كل الطرق لكن دون جدوى.
بعد تنبيه الأخ جزاه الله خيرا غيرته الى date_ent لكن لم أقم بالمحاولات المتعددة السابقة فكانت النتيجة جدولا فارغا. وهو ما صححه الأخ Daltaaziz.

أي بكل بساطة:

إقتباس :كما قلت لك Date هو سبب الخطأ السابق
فان غيرته وظهر اخطا اخر هذا يعني لديك شيئ اخر

المهم بارك الله فيكما على المسـاعدة وجعلها في ميزان حسناتكما. خصوصا أن العمل بالباردوكس كان يؤرقني لما أعلمه فيه من مشاكل.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم