View Full Version : میشه با SELECT یک بازه تاریخ را انتخاب کرد ؟
sara66
پنج شنبه 01 اسفند 1387, 17:57 عصر
میشه با SELECT یک بازه تاریخ را انتخاب کرد ؟ فیلد تاریخ رو VarChar دادم .
برای اینکه رکوردهای بین 01/01/87 تا 01/01/88 را انتخاب کنم باید چکار کنم ؟ درضمن تاریخ را هم به همین فرمت وارد بانک کردم .
Hsimple11
پنج شنبه 01 اسفند 1387, 18:32 عصر
میدونین دفعه چندمه این سوال داره پرسیده میشه؟!!!!
قبل از اینکه تاپیک ایجاد کنید جستجو کنید. خودتون سریعتر به جواب میرسید.
BETWEEN را جستجو کنید.
sara66
پنج شنبه 01 اسفند 1387, 18:37 عصر
مرسی خوب سرچ کردم ولی فارسی :خجالت:
sara66
پنج شنبه 01 اسفند 1387, 18:39 عصر
BETWEEN را سرچ کردم ولی هیچی پیدا نشد !!!
Hsimple11
پنج شنبه 01 اسفند 1387, 18:47 عصر
Select Field From Table Where Field Between StartRange And EndRange
Batman
جمعه 02 اسفند 1387, 03:00 صبح
میدونین دفعه چندمه این سوال داره پرسیده میشه؟!!!!
قبل از اینکه تاپیک ایجاد کنید جستجو کنید. خودتون سریعتر به جواب میرسید.
BETWEEN را جستجو کنید.
جناب Hsimple11 ناراحت نشید دوستمون به تازگی ثبت نام کرده.
اما خوب باید قوانین سایت رو با دقت بیشتری مطالعه می کرد.
sara66
جمعه 02 اسفند 1387, 06:29 صبح
ببخشید میشه لینک اون تاپیک را بدین ! من هنوز مشکل دارم
acilios
جمعه 02 اسفند 1387, 07:35 صبح
با سلام.
sql.Add('select * from NAMEJADVAL where NAMEFIELD between'''+MaskEdit1.Text+'''and'''+maskEdit2.Text +'''');در کد بالا به جای NAMEJADVAL نام جدول(Table) مورد نظرتون رو قرار بدین.
موفق باشید.
Hsimple11
جمعه 02 اسفند 1387, 11:29 صبح
ببخشید میشه لینک اون تاپیک را بدین ! من هنوز مشکل دارم
پاسخ شما داده شد.
در مورد SQL و دستورات آن مطالعه کنید.
sara66
جمعه 02 اسفند 1387, 11:44 صبح
نام فیلد ... اینا رو میدونم ولی چجوری تمام روزهای بین 1/1/86 را تا 1/1/88 جدا کنم ؟؟ در ضمن نیازی به این همه ' نبود از
QuotedStr() میشد استفاده کرد ...
خوب اگه دو تاریخ بالا را وارد کنم فقط 1/1/87 پیدا میشه ولی من کل روزهای مابین این دو تاریخ را میخوام
Unique
جمعه 02 اسفند 1387, 16:21 عصر
من همین الان توی یه تاپیک دیگه ! این مشکل را توضیح دادم !
ببینید دوست عزیز شما چطور میخواهین یه کاراکتر رشته ای را فاصله توش پیدا کنین ؟
شما برای تاریخ میتونین یک فیلد integer تعریف کنین ! بعدش بیاین یه تاریخ مثل 1387/11/05 را به صورت 13871105 ذخیره کنین یادتون باشه که طول عدد را چک کنین حتما 8 باشه ! یعنی توی مثال بالا 1387115 نزنین !
حالا با استفاده از کد زیر راحت فاصله ها را پیدا میکنید !
select * from myTable where f_date between 13870101 And 13880101
یا
select * from myTable where f_date >= 13870101 And f_date <= 13880101
sara66
جمعه 02 اسفند 1387, 18:00 عصر
خوب بعد تو گزارشگیری چی ؟ یا برای نمایش تاریخ ؟ البته تو نمایش که میشه درستش کرد ولی تو گزارش گیری چی ؟ تاریخ اینجوری 13871105 نمایش داده بشه ؟؟؟ راستی وقتی کاربر تاریخ را وارد میکنه برعکس وارد میکنه دیگه 1/1/87 و اینو چکار کنم ؟
Hsimple11
جمعه 02 اسفند 1387, 19:50 عصر
بار هم باید گفت : "جستجو کنید"
برای تاریخ های شمسی از کامپوننت ها و یا DLL های آماده ای که وجود داره و باید خریداری کنید استفاده کنید و تاریخ را با فرمت Date ذخیره کنید.
اگرم نمیخواهید از راهی که در پست 11 نوشتند استفاده کنید. زمان نمایش آن را بصورت رشته در آورید و Slash ها را در آن Insert کنید.
sara66
جمعه 02 اسفند 1387, 20:32 عصر
یعنی کامپوننتی که تاریخ شمسی را با فرمت date تو بانک ذخیره کنه ؟ تو گزارش گیری میشه رو بصورت رشته در آورد ؟ تو فرمها که میشه یه کاریش کرد .
Hsimple11
جمعه 02 اسفند 1387, 22:43 عصر
بله. با چه گزارش گیری؟ FastReport؟ بله میشه.
من خودم در برنامه هام همیشه تاریخ رو بصورت String ذخیره میکنم و فقط موقع نمایش اون رو تغییر میدم و در گزارش هم از فرم تاریخ رو میگیرم.
sara66
شنبه 03 اسفند 1387, 13:00 عصر
درست شد ممنون
sara66
شنبه 03 اسفند 1387, 14:21 عصر
یه مشکل دیگه تو نمودار چی ؟
من تاریخ را VarChar دادم و BETWEEN کار میکنه و مشکلی نیست ولی برای رسم نمودار بار مشکل دارم نموداری که x فیلد عددی و Y تاریخ ...
Hsimple11
شنبه 03 اسفند 1387, 17:54 عصر
واضحتر بگویید. با رسم Chart مشکل دارید ؟
Y axis که تاریخ است را همینطور String قرار دهید.
sara66
دوشنبه 05 اسفند 1387, 20:08 عصر
تو جدول یه فیلد تاریخ است که از نوع VarChar و یک فیلد عددی (از 0 تا 20) ...
میخوام یه نمودار براش درست کنم که X تاریخ باشه و Y اون فیلد عددی ...
Series1.XValues.ValueSource:=ADOTable1Date.FieldNa me;
Series1.YValues.ValueSource:=ADOTable1Kar.FieldNam e;
خوب برنامه رو اجرا میکنم میگه
'1387/01/01' Is not a valid floating point value
Hsimple11
دوشنبه 05 اسفند 1387, 21:26 عصر
َََََAsString رو ته FieldName یادتون رفته.
sara66
سه شنبه 06 اسفند 1387, 07:02 صبح
Asstring نداره !!! اون که اسم فیلد نه مقدارش ...
چکارش کنم ؟ ضروری ...
Hsimple11
سه شنبه 06 اسفند 1387, 10:38 صبح
نه اسم فیلد نیست مقدارشه! AsString مقدار رکورد جاری و فعال رو بصورت String بر میگردونه. مثل AsInteger,AsFloat,....
بعلاوه وقتی فیلدهاتون رو در دیتاست اضافه میکنید نیازی به FieldName دیگه ندارید.
Batman
سه شنبه 06 اسفند 1387, 10:44 صبح
Asstring نداره !!! اون که اسم فیلد نه مقدارش ...
چکارش کنم ؟ ضروری ...
ببينيد value داره
sara66
سه شنبه 06 اسفند 1387, 11:19 صبح
منظور من این بود که به مقدار فیلد نیاز نداریم فقط نام فیلد نیاز میشه و FieldName.Asstring نیست ...
خوب اون رو مه اسم فیلد را نوشتم ....
آره مقدار داره ...
دوستان یه جورایی حل کردمش ببینید خوبه یا نه :
تاریخ را که با همون فرمت 87/01/01 تو بانک ذخیره کردم و تو select هم مشکلی نیست ولی تو نمودار چون نیاز به یک فیلد عددی داره اومد به AdoTable یک فیلد محاسباتی اضافه کردم و در رویداد OnCalcFields جز ساخت AdoTable مقدار رشته ای تاریخ را به عدد تبدیل کردم و در فیلد محاسباتی ریختم و تو نمودار به جای فیلد تاریخ از این فیلد محاسباتی استفاده کردم ...
از همتون ممنونم ولی 2 تا سوال دیگه :لبخند:
1 - بهترین روش برای ذخیره درست تاریخ چیه ؟ وقتی کاربر تاریخ را وارد میکنه اول روز بعد ماه و بعد سال را وارد میکنه که باید برعکس وارد بانک بشه یعنی اول سال بعد ماه و بعد روز 87/01/01 و نه 01/01/87 .
2 - بهترین ابزار برای رسم نمودار چیه ؟ این DBChart زیاد جالب نیست . FastReport ابزاری برای رسم نمودار داره ؟
ممنون میشم اگه جواب بدید ...
Hsimple11
سه شنبه 06 اسفند 1387, 13:46 عصر
قانونا فرمت DateTime برای تاریخ وجود داره و اگه با کامپوننتهای موجود با همین فرمت ذخیره کنید منظقی تره ولی با String هم مشکل خاصی ایجاد نمیشه. من خودم از کاربر روز و ماه و سال رو جدا گانه در چند کنترل مثل SpinEdit دریافت میکنم تا خطای ورود کاربر در کوئری های دیتابیسم مشکلی رو ایجاد نکنه.
DBChart اتفاقا کامپوننت بسیار خوب و کاراییه. تقریبا هرکاری رو که بخواین براتون انجام میده. البته از خود Chart هم میتونین استفاده کنید. خود FR هم کامپوننت رسم نمودار رو داره.
sara66
سه شنبه 06 اسفند 1387, 16:23 عصر
با اسپین ادیت کاربر باید هی تب رو بزنه ... پس راه خاصی نداره ؟ من MaskEdit گذاشتم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.