PDA

View Full Version : سوال: کوئری جمع برای جستجو بین دو تاریخ شمسی



shahramap
یک شنبه 20 مرداد 1392, 13:12 عصر
باسلام
اگ این سوالم تکراریه ببخشید چون من سرچ کردم جوابمو نیافتم.اگر شما مشابه این پست دیدن لینک بزارین ممنون میشم.
سوالم اینه من یه جدول دارم که فیلدهاش (تاریخ،تعداد،نام،جمع)میخوا م برای جستجوم یه کوئری بنویسم که از تاریخ شمسی تا تاریخ شمسی فلان جمع تعدادی که نامشان فلان هست رو در دیتاگرید نشون بده..البته من ستون جمع رو در دیتابیس اس کیوال بدون گذاشتن هیچ شرطی معرفی کردم...نمیدونم باید کجا واسش شرطی بذارم که جمع رو محاسبه کنه یا اینکه اصلا نیاز به این کار هست؟؟؟؟؟؟؟؟؟
ممنون میشم جواب بدین..
باتشکر

danialafshari
یک شنبه 20 مرداد 1392, 13:36 عصر
سلام دوست عزیز
شما می تونید با کد sql زیر بین 2 تاریخ رو فیلتر کنید:
SELECT * FROM TBL_Name Where FildeDateName Between 'date1' and 'date2'
و با کد SQL زیر می تونید یک ستون رو جمع کنید:
SELECT SUM(Price) AS [total Price]
FROM dbo.Table_1
WHERE (Price > 13000)
کد بالا قیمت هایی که بالای 13000 اول فلتر می کنه بعد جمعون میزنه در ستون total Price
موفق باشید

shahramap
یک شنبه 20 مرداد 1392, 13:45 عصر
دوست عزیز من از کامپونت تاریخ شمسی استفاده میکنم کد between جواب نمیده بهم.
درضمن من فیلد تاریخ رو ازنوع (nvarchar(50 و تعداد رو از نوع int..اونوقت اون کوئری بالا رو نوشتم این ارور رو داد.
Operand data type varchar is invalid for sum operator.


با linq بخوام همین رو بنویسم چطوری میشه؟
باتشکر

danialafshari
یک شنبه 20 مرداد 1392, 14:27 عصر
جواب میده !
در تاپیک آقای amir200h پیداش می کنید

shahramap
یک شنبه 20 مرداد 1392, 14:58 عصر
نمیتونم اینجور پیداش کنم لطفا اگ میشه لینک بذارین.باتشکر

pesare
یک شنبه 20 مرداد 1392, 17:02 عصر
بصورت Unicode سرچ کنی جواب میده



دوست عزیز من از کامپونت تاریخ شمسی استفاده میکنم کد between جواب نمیده بهم.
درضمن من فیلد تاریخ رو ازنوع (nvarchar(50 و تعداد رو از نوع int..اونوقت اون کوئری بالا رو نوشتم این ارور رو داد.
Operand data type varchar is invalid for sum operator.


با linq بخوام همین رو بنویسم چطوری میشه؟
باتشکر

mousa1992
یک شنبه 20 مرداد 1392, 18:11 عصر
سلام دوست عزیز
این تاپیک رو ببین (http://barnamenevis.org/showthread.php?404895-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-LINQ&highlight=%D8%AC%D8%B3%D8%AA%D8%AC%D9%88+%D8%A8%DB %8C%D9%86+%D8%AF%D9%88+%D8%AA%D8%A7%D8%B1%DB%8C%D8 %AE+%D8%AF%D8%B1+%D9%84%DB%8C%D9%86%DA%A9)

موفق باشی

shahramap
یک شنبه 20 مرداد 1392, 23:16 عصر
این تایپیک رو دیدم داداش اما جوابم این نیست..... من میخوام توی ستون جمع، جمع رو ببینم...مثلاً طبق عکس ضمیمه اگر مرکز مراجعه رو اسکن انتخاب کردم و از تاریخ فلان تا تاریخ فلان زدم جمع مراجعات رو توی ستون جمع بزاره و در دیتا گرید نمایش بده.

pesare
یک شنبه 20 مرداد 1392, 23:38 عصر
این query بصورت پارامتریکه و جمع کل ستون sum رو میده , حالا شما طبق نیازت تغییرش بده , بر اساس نام ستونهات و ...

string sql = "Select Sum(Mablagh) as Sum From YourTabal Where Tarikh Between N'{0}' and N'{1}'";
sql = string.Format(sql, this.StartDate, this.EndDate);

shahramap
دوشنبه 21 مرداد 1392, 00:00 صبح
اینم جواب نداد بهم ...چون دیتاسورس گرید ویوم رو برابر sql گذاشتم ولی چیزی نشون نداد.
dataGridView1.DataSource = sql;

FastCode
دوشنبه 21 مرداد 1392, 00:31 صبح
چینی ننوشته.انگلیسیه
Operand data type varchar is invalid for sum operator.

ستونی که به تابع ه sum دادید باید از انواع عددی باشه

shahramap
دوشنبه 21 مرداد 1392, 00:36 صبح
اتفاقاً منم چینیم خوبه خوندمش بخاطر همینم سوال کردم چون ستون sum از نوع int هستش عزیز.

shahramap
دوشنبه 21 مرداد 1392, 00:59 صبح
کسی نیست جواب بده؟!!!!!!!!!!!!1

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 01:20 صبح
والا شما که چیزی قرار ندادی ، منتظر جواب هستی؟!
کوئری ای که نوشتی ، ساختار جدولهات یه چیزی بزار حداقل.

shahramap
دوشنبه 21 مرداد 1392, 01:28 صبح
اسم جدولم hos1 هست اینم کوئری که بهم گفته بودین آقا محمود اما جواب نداد.من میخوام از تاریخ فلان تا تاریخ فلان جمع تعداد مراجعات رو درون فیلد جمع توی دیتا گرید نشون بده.؟؟؟؟؟؟؟؟؟؟؟؟؟باید چیکارکنم؟؟

var db = new DataClasses1DataContext();

var result = from p in db.hos1s




where p.tarikh == dtp1.Text && p.tarikh == dtp2.Text

select p;
dataGridView1.Visible = true;
dataGridView1.Enabled = true;
dataGridView1.DataSource = result;

Ghaem66
دوشنبه 21 مرداد 1392, 01:36 صبح
سلام. شما وقتی میخوای بین دو تاریخ رو سرچ کنی باید شرطتون اینجوری باشه:



where p.tarikh >= dtp1.Text && p.tarikh <= dtp2.Text

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 01:37 صبح
var result =
from t in db.tbl
where string.Compare(t.tarikh, textBox1.Text) >= 0
&& string.Compare(t.tarikh, textBox2.Text) <= 0
group t by t.Name
into g
select new
{
Name = g.Key,
Total = g.Sum(i => i.tedad)
};

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


درضمن روز و ماه در تاریخ ها باید حتما دو رقمی باشند.

shahramap
دوشنبه 21 مرداد 1392, 02:38 صبح
داداش دمت گرم ایولا داری..... فقط یه سوال؟؟؟؟؟؟
این totale که دیتا گریدم نشون میده رو میخوام هدرتکستش رو در دیتاگریدم فارسی شه

shahramap
دوشنبه 21 مرداد 1392, 03:18 صبح
بعضی جاها جمع رو اشتباه میزنه اونجاهایی که داده ها sort هستن مشکلی نداره ولی اونجاهایی که سورت نیستن جمع نادرسته

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 03:40 صبح
احتمالا یا تاریخ های ذخیره شده و یا تاریخ هایی که در تکست باکس ها وارد میشن در فرمت مناسب نیستند. روز و ماه در تاریخ هایی که در دیتابیس ذخیره میشن باید دورقمی باشن. همچنین تاریخ هایی که در dtp1 و dtp2 وارد میشن.
پس موقع ذخیره در دیتابیس تاریخ رو بررسی کن اگر لازم بود روز و ماه رو اصلاح کن و بعد ذخیره کن تا برای جستجو و همچنین در حذف و آپدیت مشکلی نداشته باشی.

shahramap
دوشنبه 21 مرداد 1392, 04:12 صبح
درسته... من از کامپونت تاریخ شمسی استفاده می کنم که اینجور ذخیره میکنه 1392/5/4 ....حالا باید چطور عوض کنم فرمتش رو؟؟؟؟

FastCode
دوشنبه 21 مرداد 1392, 04:32 صبح
باید با متود split به سه قسمت تقسیم کنی و با متود PadLeft سمت چپ قسمتهای ماه و روز 0 بزاری و بعد Join کنی

shahramap
دوشنبه 21 مرداد 1392, 13:23 عصر
fastcode متشکرم اما من با این متدها کارنکردم اگه میشه کدش رو بزارین ممنونتون میشم واینکه این کد رو کجا باید قرار بدم؟اگه میشه پاسخ بدید این برنامه رو باید فردا تحویل بدم با تشکر.

FastCode
دوشنبه 21 مرداد 1392, 18:41 عصر
اخیرا در قسمت نمونه کدهای کوچک C# یک سیستم تقویم کامل گزاشتم که فکر میکنم این قسمت رو هم داره.اگر هم نداشته باشه به شدت از این متود ها استفاده کرده که میتونید نمونش رو ببینید.
احتمالا هنوز در صفحات آخره.