PDA

View Full Version : مبتدی: راهنمایی در مورد دستور Select



a_ehsan68
یک شنبه 12 آبان 1392, 17:06 عصر
با سلام خدمت همه دوستان.

من میخواستم توی برنامم یه دستور select بنویسم که تراکنش های مثلا بین تاریخ 1392/08/01 تا 1392/09/30 رو برام برگردونه اما خوب نمیدونم دستور select این باید چجوری باشه.

یه سوال دیگه هم که داشتم اینه که برا محدوده تاریخی فیلد جدولمو باید از نوع Date تعریف کنم یا NVARCHAR ؟ چون من از تاریخ شمسی استفاده میکنم.

ممنون میشم اگه یا تجربتون راهنماییم کنید. مرسی.

sgh_programer
یک شنبه 12 آبان 1392, 17:18 عصر
بنام خدا
سلام

اگه تاریخ از نوع شمسی است بهتره از nvarchar استفاده کنی

تراکنش های مثلا بین تاریخ 1392/08/01 تا 1392/09/30این سوال بارها در همین تالار مطرح شده اما این روشی که شما میخوایی جستجو کنی مشکل داره مثلا بین تاریخ 1392/9/30 و 1392/09/30 تفاوت هست

من خودم فیلد تاریخ رو از نوع int میگیرم و بیت اون تاریخ رو جستجو میکنم مثلا 13920930 تا 13921030 البته ممکنه روش های دیگه ای هم (بهتر از این روش)باشه

اما دستور select
select * from tbl1 where date_search between date1 and date2

date_search:فیلد تاریخ
date1 :1392/08/30
date2:1392/09/30

موفق باشی

امیر مهرشاد
یک شنبه 12 آبان 1392, 18:19 عصر
داداش گلم با حفظ احترام سولوشن جناب sgh_programer عزیز :

خیلی راحت دیتا تایپ تاریختو همون NVARCHAR بگیر که درگیر تبدیلشم نشی و برای اینکه مطمعن باشی تاریخ بصورت کامل (10 رقمی با دو عدد / /) ثبت میشه خیـــــــــــــــــــــــ ـــــــلی راحت از یکی از خاصیت های maskedTextBox به این روش استفاده کن :



if (!maskedTextBox1.MaskCompleted) { MessageBox.Show("لطفا تاریخ رو بصورت کامل وارد کنید"); }



یا باز هم برای اطمینان از اینکه تاریخ دقیقا درج بشه از این کامپوننت آماده استفاده کن که اگه مثلا در شش ماهه دوم سال ، روز رو 31 وارد کنی قبول نمیکنه و خیلی از امکانات جالب دیگه (بی نهایت) که اگه خواستید بفرمایید تا با ذکر منبع تقدیمتون کنم


112516

یکی از وظایف برنامه نویس اینه که از ورود دیتاهای غلط به برنامه جلوگیری کنه در روش فوق و این روش هم باید تدبیری برای جلوگیری از ورود داده های غلط کاربر اندیشید فکرشو بکنید توی یک برنامه مالی یک رقم ناچیز اگر معیار گزارشاتت تاریخ باشه با این تاریخ در برنامت ثبت شده مثلا 12/1/1392 ولی برای اخذ گزارش مثلا میزان پرداختی این رکورد در سلکتت کاملا نادیده گرفته میشه و باقیشم که دیگه خودت میتونی پیش بینیش کنی

بقیه کار هم که دوستان زحمتشو کشیدن

موفق باشید:لبخند:

salargham
یک شنبه 12 آبان 1392, 18:43 عصر
این کد رو استفاده کن+البته با LINQ

dataGridView1.DataSource = Bank.V_Tbl_Tolids.Where(c.tarikh_tolid.CompareTo(t extBox8.Text.ToString()) >= 0) && (c.tarikh_tolid.CompareTo(textBox9.Text.ToString() ) <= 0)) ).Select(c => c);

roolinjax
یک شنبه 12 آبان 1392, 19:14 عصر
سلام
دوستان راهکارهای جالبی ارائه کردید
یکی به من بگه اگر این nvarchar همه ی کارهای لازم رو بر روی فیلدهای تاریخ انجام میده پس نوع داده تاریخ در اس کیو ال به چه دردی میخوره ؟
با این چیزی که شما دوستان می فرمایید و روشی که می گید روی میلادی هم جواب خواهد داد دیگه !!!
یکی برام روشن کنه لطفا

Mahmoud.Afrad
دوشنبه 13 آبان 1392, 00:04 صبح
برام سوال شده که چرا هر فیلد رشته ای رو nvarchar انتخاب میکنید؟

حمیدرضاصادقیان
چهارشنبه 15 آبان 1392, 12:40 عصر
سلام.
این تاپیک قفل خواهد شد.
به دلیل تکراری بودن.

لطفا لطفا لطفا جستجو کنید.
همین مورد بارها در تالار SQL Server مطرح شده و جوابهای کاملی هم براش ارسال شده است.
از دوستان عاجزانه خواهشمند است در تاپیکهای تکراری شرکت نکنید.