التعامل مع حقل من نوع Date
#1
السلام عليكم ورحمة الله وبركاته

لديا قاعدة بيانات firebird بها حقل من نوع date .
المشكلة عندما اترك الحقل فارغ تم اقوم بعملية إضافة اجد به هدا التاريخ : 30/12/1899
كيف اجعل الحقل فارغ ؟
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#2
وعليكم السلام ورحمة الله وبركاته
الأصل أن تفريغ أي الحقل بجعله يحمل قيمة Null إن كان يقبل ذلك
كود :
FieldName.Value := Null;
أما التاريخ فله معاملة خاصة...
قد تختلف طريقة عرضه من مكون لآخر...
إذ النمط TDate/TDateTime ما هو إلا عدد Double له قيمة ابتدائية
قد تختلف حسب سعة الحقل في قاعدة البيانات (في مثالك 30/12/1899)
حدد المكونات التي تتعامل معها (TDataSet، TDBDateTime...)
الرد
#3
بارك الله فيك اخي kachwahed على التوضيح .

حولت جعل الحقل فارغ بدل التاريخ 30/12/1899 لكن دون جدوا

لم اتوصل الى الشيئ الذي تريدوني ان اصل إليه .

لم تحل المشكلة

بالتوفيق للجميع
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#4
إقتباس :حولت جعل الحقل فارغ بدل التاريخ 30/12/1899 لكن دون جدوا
أخبرتك أنه عدد Double يبدأ من 0 التي تمثل التاريخ 30/12/1899 في مثالك
أيضا لم تحدد المكونات التي تتعامل بها (TDataSet، TDBDateTime...)
بعض المكونات تملك خصائص إضافية للقيمة الابتدائية.
الرد
#5
شكرا على التواصل

إقتباس :أيضا لم تحدد المكونات التي تتعامل بها (TDataSet، TDBDateTime...)

استعمل TUniTable و TUniDataSource و TsDBGrid

ولي ادخال التاريخ استعمل مكون sDateEdit1

الله ينورك

بالتوفيق للجميع
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#6
السلام عليكم

جربت للتو بالـ Unidac إشتغلت عادي !
لا أدري ما المشكل عندك :confused:

إذا لم تستطع تحديد المشكل إرفع محاولة !

بالتوفيق
الرد
#7
بارك الله فيك اخي عبد الجليل على المجهود الجبار (الحمد الله لقد جاء الفرج)

اخي المشكلة هي :

عندما اترك sDateEdit1 فارغ واقوم باضافة سجل الى قاعدة البيانات اجد بالحقل التاريخ هذا التاريخ :30/12/1899

مع المفروض ان يبقى الحقل فارغ لاني لم اذخل شيئ

كود الادخال هو :

PHP كود :
TV.Insert;
TVTV_REMDATEDEBUT.AsDateTime:=sDateEdit1.Date;
TVTV_REMDATEFIN.AsDateTime:=sDateEdit2.Date;
TV.Post 

بالتوفيق
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#8
أهلا اخي عبد المالك

لا أعرف sDateEdit هذه !
إقتباس : مع المفروض ان يبقى الحقل فارغ لاني لم اذخل شيئ
لا أعتقد ، بالكود المكتوب 100% أدخلت قيمة ينبغي وضع شرط للتأكد ( ربما sDateEdit تحول القيمة الفارغة إلى 0 و بالتالي 30/12/1899 )

مثال بإستخدام DateTimePicker
كود :
if DateTimePicker1.date>strtodate('01/01/1970') then UniTable2.FieldByName('hire_date').AsDateTime:=DateTimePicker1.Date;
بالتوفيق
الرد
#9
بارك الله فيك و في والديك الله ينورك ويزدك علما اخي عبد الجليل

حلت المشكلة :

بوضع فحص قبل الادخال :


PHP كود :
if sDateEdit1.text<>'  /  /    'then
             TVTV_REMDATEDEBUT
.AsDateTime:=sDateEdit1.Date;
           if 
sDateEdit2.text<>'  /  /    'then
              TVTV_REMDATEFIN
.AsDateTime:=sDateEdit2.Date; 

sDateEdit : هو مكون من مكونات AlphaSkin

بالتوفيق للجميع

كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد


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


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