PDA

View Full Version : فيلد تاريخ رو از چه نوعي تعريف كنم ؟ متون فارسي رو از چه نوعي بهتره؟



miki_ir
جمعه 14 مرداد 1390, 09:27 صبح
سلام فيلد تاريخ رو از نوع استرينگ تعريف كنم بهتره يا date ؟
اگه از نوع date تعريف كنم . وقتي تو c# داده ميندازم تو اين فيلد بايد چطوري تبديلش كنم به اين نوع
؟
كلا براي ذخيره و بازيابي متون فارسي از چه انواعي استفاده كنم
و نهايتا اگه ماسك textbox رو بزارم روي 0000/00/00 كار بر مجبور ميشه براي تاريخ اول سالو وارد كنه بعد ماه بعد روز تا درست توي پايگاه ذخيره شه راهي نيست كه كاربر اول روز بعد ماه بعد سالو وارد كنه ولي تو پايگاه درست ثبت شه
مثله همين چيزي كه خودمون تاريخو رو كاغذ مينويسيم
پيشاپيش ممنون

AminSobati
جمعه 14 مرداد 1390, 15:36 عصر
سلام دوست عزیزم،
برای تاریخ شمسی میتونین بصورت عدد مثلا 13900526 یا کاراکتر مثل 26/05/1390 ذخیره کنین.
در مورد متون فارسی، اگر حجم متن شما کمتر از 4000 کاراکتر باشه nvarchar 4000 و اگر بزرگتره nvarchar max مناسب هست

یوسف زالی
جمعه 14 مرداد 1390, 18:44 عصر
سلام.
با اجازه آقای ثباتی گرامی:
برای ذخیره تاریخ دو تا راه اصلی دارید که هر کدوم مزایا و معایبی داره:

1- ذخیره تاریخ با نوع DateTime خود SQL (یا انواع مشتق و مشابه)
-محاسبات اختلاف روز، محاسبات روزهای بعد، روزهای هفته، تبدیلات و ... آسان
-مشکل در نمایش در UI به فرم شمسی
-مشکل در ذخیره داده از UI

2-ذخیره تاریخ با فرمت کاراکتری 10 تایی
-محاسبات معمولا دستی و همراه توابعی که باید خودمان بنویسیم
-تسهیل ورود داده از UI
-تسهیل نمایش در UI

برای ورود از UI به فرمت کاراکتری هم mask رو 00/00/0000 کنید. البته بهتره از کامپوننت آماده یا حتی پنلی که روش سه تا edit گذاشتید استفاده بشه.(یه کلاس کنیدش)
که این بحث در تالار های دیگه بهتره انجام شه.

برای تبدیلات میلادی به شمسی کلی بحث شده . جستجو بفرمایید.
برای توابعی که با فرم کاراکتری تاریخ هم درگیر هستند هم گفتگو شده.
موفق باشید.

miki_ir
شنبه 15 مرداد 1390, 09:00 صبح
سلام خدمت هر دو عزيز
دستتون درد نكنه . لينكي چيزي هست ؟
وقت ندارم خودم تابع بنويسم
حالا دوست من يه روش تركيبي تو سايت نيست يا كسي درس نكرده هم ذخيرش آسون باشه هم نمايشش
مزاياي هر دو رو داشته باشه و عيباي هيچكدومو
ممنون

miki_ir
شنبه 15 مرداد 1390, 09:40 صبح
سلام دوست عزیزم،
برای تاریخ شمسی میتونین بصورت عدد مثلا 13900526 یا کاراکتر مثل 26/05/1390 ذخیره کنین.
در مورد متون فارسی، اگر حجم متن شما کمتر از 4000 کاراکتر باشه nvarchar 4000 و اگر بزرگتره nvarchar max مناسب هست

دوست من روش خوبي به نظر مياد اگه جايي توابع نوشته شده ميشه لينك بدي
بعد فقط يه نكته ي مهمه وقتي من تاريخو به شكل 13900101 ذخيره كنم وقت گزارشگيري با كريستال چتو تبديل كنم 1390/01/01 اون كه مستقيم از پايگاه ميخونه
اشتبا ميكنم؟

Galawij
شنبه 15 مرداد 1390, 14:07 عصر
پیشنهاد می کنم برای تاریخ دو فیلد در نظر بگیرید، یک برای شمسی با نوع داده (10) Nvarchar و یکی برای میلادی با نوع داده Datetime.

بعد فقط يه نكته ي مهمه وقتي من تاريخو به شكل 13900101 ذخيره كنم وقت گزارشگيري با كريستال چتو تبديل كنم 1390/01/01 اون كه مستقيم از پايگاه ميخونه
خود کریستال این امکان را دارد، همچنین از طریق SQl هم می تونید این کار را بکنید با یک تابع یا یک روال.

miki_ir
یک شنبه 16 مرداد 1390, 08:43 صبح
والا هنوز نگرفتم
كسي مي تونه يه مثال از استفاده از تاريخ بده
كه تاريخ توش مهم باشه و محاسبات روش بشه
و از لحاظ ذخيره در پايگاه و نمايش تو فرم و گزارش مشكل نداشته باشه
؟
ساده هم باش ياد گيريش
ممنون ميشم لينك بديد