PDA

View Full Version : سوال: ورود تاریخ بدون استفاده از MaskEdit و تقسیم شدن اعداد تاریخ به یکدیگر!!!!!!!



amir_ir
یک شنبه 29 شهریور 1388, 13:44 عصر
با سلام خدمت همه دوستان
فیلدی در جدول از جنس (10)Nvarchar تعریف کردم و تاریخ در اون مثلا به شکل 02/12/1388 ذخیره میشه. به دلایلی نمیخوام از MaskEdit استفاده کنم. با 3 عدد EditBox روز ، ماه و تاریخ رو میگیرم و اونها رو با 2 عدد / به هم concat و در یک متغیر از جنس String ذخیره میکنم . با استفاده از کد زیر، تاریخ رو به دیتابیس وارد میکنم ولی جالبه چیزی که وارد دیتابیس میشه تاریخی به فرمت بالا نیست، بلکه 1388 تقسیم به 12 شده و جوابش تقسیم به 2 شده و در نهایت عدد 57 به دیتابیس وارد میشه.
1)به چه شکل میشه کد رو تغییر داد که اعداد بالا به هم تقسیم نشن و به عنوان String دست نخورده وارد دیتابیس بشن؟
2 ) اصلا چرا به هم تقسیم میشن؟ همه جای این کد از String استفاده میشه؟ کجای این کد به هم تقسیم میشن؟
3) در ضمن من دقیقا علت دو عدد + در دو طرف متغیر Concat رو در کد زیر نمیدونم؟ اگر توضیح بدید ممنون میشم .



concat:=(TxtFixYear.Text)+('/')+(TxtFixMounth.Text)+('/')+(TxtFixDay.Text);
with FrmDMTransport.ADOQFixCar do
begin
FrmDMTransport.ADOQFixCar.SQL.Clear;
FrmDMTransport.ADOQFixCar.SQL.Text:='Insert into Fix_Car(FixDate) values('+concat+') ' ;
FrmDMTransport.ADOQFixCar.ExecSQL;
end;

DlphIran
دوشنبه 30 شهریور 1388, 14:24 عصر
دوست عزيز ،‌ بظاهر در كد نويسي شما مشكلي نيست خود من هم به اين مشكل برخورد نكرده ام اما

بهتر نيست بجاي اينكه قبل از ورود به ديتا بيس ،‌اطلاعات تاريخ رو با مميز بهم متصل مي كنيد ،‌ بياين و جدا جدا درون سه فيلد جداگانه از نوع اينتيجر ذخيره كنيد و در هنگام خروج اطلاعات از ديتابيس(استفاده از اطلاعات) بياين و با مميز اطلاعات رو بهم متصل كنيد.
چون ممكنه بعدها لازم باشه اطلاعاتي رو در خروجي لازم داشته باشين كه مثلا بايد در محدوده ماه 2 تا 5 اطلاعات رو نشون بدين .
در كل از اون مشكلتون هم ديگه خبري نيست

amir_ir
سه شنبه 31 شهریور 1388, 18:12 عصر
کسی میتونه منو راهنمایی کنه ؟؟؟؟؟؟؟

Ahmad Chehreghani
سه شنبه 31 شهریور 1388, 19:35 عصر
خط پنجم رو به کد زير تغيير بديد


ADOQFixCar.SQL.Text:='Insert into Fix_Car(FixDate) values('+QuotedStr(concat)+') ' ;

QuotedStr باعث ميشه 2 تا ' به اول و آخر رشتتون اضافه بشه، در غير اينصورت انگار که شما کد زير رو نوشته باشيد


Insert into Fix_Car(FixDate) values(1388/12/02)

و 1388/12/02 چون رشته نيست مثل عبارت رياضي باهاش رفتار ميشه

موفق باشيد