PDA

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



pedramfj
چهارشنبه 03 شهریور 1389, 10:12 صبح
سلام
دوستانی که من را در مورد گزارش گیری بین دو تاریخ راهنمایی کردند گفتند که از کد زیر استفده کنم.(تاریخ ذخیره شده از نوع رشته)

SELECT * FROM ozv WHERE tarikh BETWEEN '1388/10/02' and '1389/10/02'

این کد جواب می دهد .اما یه مشکلی دارم . من می خواهم کاربر تاریخ را در textbox وارد کند و سپس جستجو انجام دهد(یعنی به جای دو تاریخ بالا که دستی وارد شده از textbox بگیرد ).
خودم هر کاری کردم نتونستم مشکل را حل کنم.
لطف میکنید اگر راهنمایی کنید...

NIK
چهارشنبه 03 شهریور 1389, 10:33 صبح
میشه واضح تر توضیح بدین که چه مشکلی پیش میاد؟

ایمان مدائنی
چهارشنبه 03 شهریور 1389, 10:40 صبح
دوست عزيز ميتوني از كد زير استفاده كني



SELECT * FROM ozv WHERE tarikh BETWEEN @tarikh1 and @tarikh2

و بعد متغير ها را با كد زير مقدار دهي كن



commm.Parameters.AddWithValue("@tarikh1 ", textbox1.text);
commm.Parameters.AddWithValue("@tarikh2", textbox2.text);


منظور از commm همون SqlCommand است

موفق و پيروز باشيد

pedramfj
چهارشنبه 03 شهریور 1389, 11:18 صبح
ممنون از راهنمایی..
لطف کنید یه نگاه به کد بندازید .
مجبور شدم دوباره com1 را تعریف کنم .از( com ( sqlcommand اشکال می گرفت.

کد عمل نمی کند.



private void button5_Click(object sender, EventArgs e)
{
com1.Parameters.AddWithValue("@tarikh1", textBox10.Text);
com1.Parameters.AddWithValue("@tarikh2", textBox11.Text);
if (textBox10.Text != "")
{
SqlCommand com = new SqlCommand("SELECT * FROM ozv WHERE tarikh BETWEEN @tarikh1 and @tarikh2", con);
con.Open();
dr = com.ExecuteReader();
while (dr.Read())
{

dataGridView2.Rows.Add(new object[] { dr.GetDecimal(0), dr.GetString(1).Trim(), dr.GetString(2).Trim(), dr.GetString(3).Trim() });
};


dr.Close();
con.Close();

}

else
{


}

}

ایمان مدائنی
چهارشنبه 03 شهریور 1389, 11:25 صبح
نه عزيز اشتباه كردي !
بايد اين كدهاي پارامتر دهي را زير همون كوئريد بزاري با حداقل داخل متدي كه كار اينسرت رو انجام ميده جداش نكن !
بعد ميتوني تو كد كليدي كه اينكارو انجام ميده اون متد را صدا بزني !

pedramfj
چهارشنبه 03 شهریور 1389, 11:49 صبح
من در جایی از برنامه عمل درج انجام نمی دهم(که شما می گویید زمان درج) .در این برنامه فقط از بانک می خواند و در دیتا گرید نمایش می دهد .فقط همین .مشکل من خواندن است .
تشکر...

ایمان مدائنی
چهارشنبه 03 شهریور 1389, 11:52 صبح
خب داخل همون متد اينكارو بكنيد
در زير كوئري شارامتر ها را مقدار دهي كنيد
شما نميتونيد پارامتر ها را در جاي ديگري مقدار دهي كنيد




commm.CommandText = "Select * From Sandogh_Barname Where Sh_Barname=@Sh_Barname AND Mablagh=@Mablagh";
commm.Parameters.AddWithValue("@Sh_Barname", txtShBarname.Text);

commm.Parameters.AddWithValue("@Mablagh", txtMablagheKol.Text);

javad_r_85
چهارشنبه 03 شهریور 1389, 11:58 صبح
.
من می خواهم کاربر تاریخ را در textbox وارد کند و سپس جستجو انجام دهد(یعنی به جای دو تاریخ بالا که دستی وارد شده از textbox بگیرد ).






سلام کدی که آقا ایمان نوشته درسته ترتیب را رعایت نکردید.در ضمن بهتره از سه تا کمبو باکس برای سال و روز و ماه استفاده کنی و مقادیر را دستی وارد کنید چون اینجوری امنیت نرم افزار بالا رفته و تسلط بیشتری بر برنامه دارید اون جوری کاربر هر مقداری را می تونه در تکست باکس وارد کند.

pedramfj
چهارشنبه 03 شهریور 1389, 11:59 صبح
آقا ممنون از راهنمایی که کردین.
مشکل حل شد
تشکر..

csharpprogramer88
سه شنبه 29 شهریور 1390, 18:02 عصر
دوست عزيز ميتوني از كد زير استفاده كني



SELECT * FROM ozv WHERE tarikh BETWEEN @tarikh1 and @tarikh2




ت

موفق و پيروز باشيد



آیا با روش میتونم بین سه ماه جستجو کنم ؟ مثلا از 01/01/1390 تا 31/03/1390 در مورد ماه های 30 روزه و 31 روزه هم توضیح بدید آیا جواب میده؟

sadra1234
سه شنبه 29 شهریور 1390, 18:47 عصر
سلام
باید نکته ای که مد نظرتون باشه و اون فرمت تاریخ هست که باید روز و ماه دورقمی باشند(داده های داخل جدول) مثلا 1390/03/06
این کد هم به نظر من بهینه ترین کد هست که من ازش استفاده کردم و مشکلی نداشته
SELECT * FROM ozv WHERE tarikh > @tarikh1 and tarikh < @tarikh2
ربطی هم به تعداد روزهای ماه نداره
موفق باشید