PDA

View Full Version : گزارشگیری بین 2 تاریخ



m_zamani
چهارشنبه 23 اسفند 1385, 11:24 صبح
strsql = "Select * From enter Where (year >= '" + Mask1.Text + "%' and year >= '" + Mask2.Text + "%')"
con = New SqlClient.SqlConnection(strcon)
con.Open()
da2 = New SqlClient.SqlDataAdapter(strsql, con)
ds2.Clear()
da2.Fill(ds2, "enter")
Dim cr As New Cr
cr.SetDataSource(ds2)
CrystalReportViewer1.ReportSource = cr


این کد برای گزارشگیری چه مشکلی داره
فقط دستور select رو می خوام

iman_s52
چهارشنبه 23 اسفند 1385, 11:38 صبح
چرا واسه جفت مقایسه هات ( =< ) گذاشتی ؟؟؟

m_zamani
چهارشنبه 23 اسفند 1385, 11:39 صبح
نباید بذارم؟

iman_s52
چهارشنبه 23 اسفند 1385, 11:40 صبح
خوب یکیش باید کوجکتر مساوی باشه یکی بزرگتر مساوی

m_zamani
چهارشنبه 23 اسفند 1385, 11:47 صبح
strsql = "Select * From enter Where (year >= '" + Mask1.Text + "%' and year<= '" + Mask2.Text + "%')"
اینو درست کرم اما باز هم جواب نمیده

iman_s52
چهارشنبه 23 اسفند 1385, 11:48 صبح
تویه Query Analyser کد رو تست کن ببین کوئری چیزی بر می گردونه ؟؟؟

m_zamani
چهارشنبه 23 اسفند 1385, 12:07 عصر
وقتی فقط = میذارم جواب میده

iman_s52
چهارشنبه 23 اسفند 1385, 12:11 عصر
% واسه چی میذاری اصلا؟؟؟؟

m_zamani
چهارشنبه 23 اسفند 1385, 12:21 عصر
فرمت دستورم اشتباهه

iman_22a
پنج شنبه 24 اسفند 1385, 13:53 عصر
strsql = "Select * From enter Where (year >= '" + Mask1.Text + "%' and year<= '" + Mask2.Text + "%')"

نوع ستون Year که استفاده می کنید چی هست ؟
مقدار ورودی در Mask1 , 2 ?
توجه کنید که اگر نوع ستون year شما از جنس تاریخ باشد می توانید با شروط بالا نتیجه رو برگردونید ولی اگر از نوع رشته باشند ، نه !

aslan_ir
پنج شنبه 24 اسفند 1385, 23:29 عصر
اینو تست کن
<= year

icmaster
سه شنبه 07 فروردین 1386, 15:47 عصر
سلام
سوال من هم در همین مورده بنابراین همینجا مطرح میکنم
من هم میخوام گزارشگیری رو بین دو تاریخ انجام بدم
در دیتا بیسم سه فیلد روز، ماه و سال دارم
حالا نمیدونم چطوری باید عمل مقایسه رو برای بدست آوردن رکوردهایی که تاریخشان مابین تاریخ های وارد شده توسط کاربر هست انجام بدم.؟؟
اگه کسی بلده لطف کنه به ما هم بگه.
ممنون

reza_rad
چهارشنبه 08 فروردین 1386, 06:55 صبح
در دیتا بیسم سه فیلد روز، ماه و سال دارم
حالا نمیدونم چطوری باید عمل مقایسه رو برای بدست آوردن رکوردهایی که تاریخشان مابین تاریخ های وارد شده توسط کاربر هست انجام بدم.؟؟


روز و ماه و سال رکورد های داخل دیتابیس رو با روز و ماه و سال ورودی توسط کاربر مقایسه کن و اون رکوردهایی رو بیار که بین دو تاریخی هست که کاربر گفته...
البته اگه منظورت حالت خاصیه بگو تا بیشتر توضیح بدم

icmaster
چهارشنبه 08 فروردین 1386, 11:41 صبح
اونجوری که شما گفتی نمیشه
شما میگی روز و ماه و سال وارد شده توسط کابر رو با روز و ماه و سال دیتابیسم مقایسه کنم ولی با اینکار مثلا برای تاریخ مابین 1/1/1385 و 1/1/1386 بر مشکل می خوره.
چون تو شرطش چک میکنه که روز باید هم بزرگتر از 1 باشه و هم کوچیکتر از یک!!!
منظورمو فهمیدی؟

reza_rad
چهارشنبه 08 فروردین 1386, 12:00 عصر
البته راه حل برای اینکار وجود داره
می تونی توی شرط چک کنی ببینی اگه روز و ماه وارد شده توسط کاربر در دو تاریخ ابتدا و انتها با هم برابره بره و فقط سال رو چک کنه دیگه ماه و روز رو چک نکنه و ...
البته یه کم کد می خواد و کار می بره ولی شدنیه.

در کل کار کردن با تاریخ میلادی راحتتره چون توابع sql هم ازش پشتیبانی می کنند و پیدا کردن تاریخ های بین دو تاریخ با یه فانکشن براحتی انجام میشه. اما اگه شما اصرار بر استفاده از تاریخ فارسی به اینصورت داری از راهی که گفتم قابل حله.

mohammad_2001
شنبه 11 فروردین 1386, 08:00 صبح
باید بین ## باشه تاریخت

sm
یک شنبه 12 فروردین 1386, 11:46 صبح
نگفتی جنس روز و ماه و سال دیتابیست چیه ؟
باتوجه به کوئری که شما نوشتین باید Char باشه... درسته؟
اگه اینجوری باشه اون علامت درصد کاملا اشتباهه!!!

درضمن... این روش ذخیره سازی تاریخ واقعا اشتباهه!! شما باید تاریخ رو توی یک فیلد جدول ذخیره کنین نه چندتا یا از جنس date یا اینکه String... کار کردن با String هم خیلی خیلی راحته اما به یه شرط ...
اونم این که هنگامیکه میخواین تاریخ رو ذخیره کنین همشو به یه فرمت استاندارد ذخیره کنین که بهترین حالت هم اینجوره:

اگه کاربر وارد کرد 86/1/1 شما اینجور ذخیره کنین : 1386/01/01

با این کار همه تاریخ هاتون 10 کاراکتری میشه و راحت میتونین باهاشون کار کنین و عملیات مقایسه ای هم بدون هیچ دردسری روشون عمل میکنه

موفق باشین