نمایش نتایج 1 تا 9 از 9

نام تاپیک: جستجو بین دو تاریخ از نوع رشته ای با linq

  1. #1

    جستجو بین دو تاریخ از نوع رشته ای با linq

    سلام دوستان.
    میخواستم بدونم چطوری میتونم اطلاعات بین دو تاریخ مشخص رو با linq از sql server فراخوانی کنم و نمایش بدم، با توجه به اینکه فیلد تاریخ توی دیتابیس رو به صورت رشته ای معرفی کردم و تاریخ ها هم به صورت شمسی ذخیره شدند(با تاریخ میلادی بلدم و مشکلی ندارم اما میخام با شمسی اینکارو انجام بدم). مثلا میخام اطلاعات رکوردهایی که بین تاریخ 01/01/1390 تا 31/01/1391 هستند رو توی datagrid نمایش بدم.
    یک نکته اینکه نمیخام تاریخ رو توی دیتابیس به صورت میلادی ذخیره کنم و میخام شمسی باشه.
    آیا راهی وجود داره؟ ضمنا با سی شارپ مینویسم
    مهندس های فروم منتظر نظراتتون هستم.
    ممنون

  2. #2
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    "/" ها رو حذف کن بعد بین رشته ها مقایسه کن. البته "/" باشه هم می شه ولی اگه حذف کنی مطمئن تری. در ضمن وقتی داری مقایسه می کنی ماه و روز حتما باید دو رقمی باشه. مثلا بجای 1 باید 01 باشه.

    ضمنا : رشته ها هم مثل عداد به راحتی قابل مقایسه هستن. بازم برای اطمینان می تونی "/" حذف و رشته رو به عدد تبدیل کنی.

  3. #3
    کاربر تازه وارد آواتار amireto
    تاریخ عضویت
    دی 1385
    محل زندگی
    سرزمین جاودان ایران - آمل
    سن
    41
    پست
    67

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    سلام خسته نباشيد
    من هم چنين مشكلي دارم ولي وقتي كدش رو مي نويسم با چنين اروري مواجه مي شوم

    Error 1 Operator '>' cannot be applied to operands of type 'string' and 'string'

    مشكل از كجاست

  4. #4
    کاربر تازه وارد آواتار aliburnout
    تاریخ عضویت
    دی 1389
    محل زندگی
    گنبد
    سن
    37
    پست
    47

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    سلام دوست عزیز
    من خودم هم این مشکل رو داشتم
    واسه این کار من select رو داخل Stored Procedure نوشتم بعد داخل یرنامه استفاده کردم

    کد داخل Stored Procedure

    ALTER PROCEDURE dbo.SP_name @date1 nvarchar(10), @date2 nvarchar(10)
    as
    select * from tabelname
    where date >= @date1 and date <= @date2
    return


    داخل برنامه هم

    var db = new linq_nameDataContext();
    DataGridView.DataSource = db.SP_name (txtdate1.Text, txtdate2.Text);

  5. #5
    کاربر دائمی آواتار PetekDincos
    تاریخ عضویت
    آبان 1389
    محل زندگی
    توهم
    پست
    594

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    با سلام
    برای این کار می شه از متد CompareTo() استفاده کرد به این صورت

    db_Context.Table1.where(n=>n.Date.CompareTo("1390/10/20")>-1 && n.Date.CompareTo("1390/11/20")<1);

    و اون تاریخ هایی که نوشتم رو کاربر وارد می کنه با تشکر

  6. #6
    کاربر تازه وارد آواتار amireto
    تاریخ عضویت
    دی 1385
    محل زندگی
    سرزمین جاودان ایران - آمل
    سن
    41
    پست
    67

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    با سپاس
    و همچنين با compare

    var query = from c in db.List
    where string.Compare( c.ReceptionDate , txtPdateStart.Text)>=0
    &&string.Compare( c.ReceptionDate , txtPdateEnd.Tex)<=0
    select c;

  7. #7

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    سلام
    من داخل پروژم از این کد استفاده کردم
                DateTime d1;
    DateTime d2;
    d1 =Convert.ToDateTime (txtStartDate.Text);
    d2 =Convert.ToDateTime (txtEndDate.Text);

    var search = from n in db.BorrowTbls
    where string.Compare( n.DateEnd , d1.ToString())>=0
    && string.Compare( n.DateEnd , d2.ToString())<=0
    //where (n.DateEnd.CompareTo(d1) > -1
    // && n.DateEnd.CompareTo(d2) < 1)
    select new
    {
    n.DateEnd,
    nam = n.MemberTbl.NameMem
    };
    DgvSms.DataSource = search;

    اما در gridview چیزی نشون نمیده
    فرمت تاریخ هام در جدول و و وارد کردنم برا جستجو اینجوریه 1392/05/21

  8. #8

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    نقل قول نوشته شده توسط aryanss مشاهده تاپیک
    سلام
    من داخل پروژم از این کد استفاده کردم
                DateTime d1;
    DateTime d2;
    d1 =Convert.ToDateTime (txtStartDate.Text);
    d2 =Convert.ToDateTime (txtEndDate.Text);

    var search = from n in db.BorrowTbls
    where string.Compare( n.DateEnd , d1.ToString())>=0
    && string.Compare( n.DateEnd , d2.ToString())<=0
    //where (n.DateEnd.CompareTo(d1) > -1
    // && n.DateEnd.CompareTo(d2) < 1)
    select new
    {
    n.DateEnd,
    nam = n.MemberTbl.NameMem
    };
    DgvSms.DataSource = search;

    اما در gridview چیزی نشون نمیده
    فرمت تاریخ هام در جدول و و وارد کردنم برا جستجو اینجوریه 1392/05/21
    برای چه به datetime تبدیل کردی؟

    var search = from n in db.BorrowTbls
    where string.Compare( n.DateEnd , txtStartDate.Text)>=0
    && string.Compare( n.DateEnd , txtEndDate.Text)<=0
    select new
    {
    n.DateEnd,
    nam = n.MemberTbl.NameMem
    };
    DgvSms.DataSource = search;


  9. #9

    نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq

    var db = new mydataDataContext();
    var search = (from a in db.tbl_moshtaris
    join b in db.tbl_reportsmonshis on a.code_moshtari equals b.code_moshtari_report into s
    from rs in s.DefaultIfEmpty()
    where string.Compare(rs.datte, cTextBox2.ToString()) >= 0
    && string.Compare(rs.datte, cTextBox3.ToString()) <= 0

    //where (n.DateEnd.CompareTo(d1) > -1
    // && n.DateEnd.CompareTo(d2) < 1)


    select new
    {
    rs.datte,
    rs.name_rescuer,
    rs.familiy_rescuer,
    rs.ezam_rescuer,
    rs.type_of_help,
    rs.type_devastation_type,
    rs.type_of_service,
    rs.number_of_service,
    rs.cost_sum,
    rs.start_time,
    rs.end_time,
    rs.code_moshtari_report


    });




    if (search.Count() == 0)
    {
    // MessageBox.Show("هیچ نتیجه ای یافت نشد", "", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
    FMessegeBox.FarsiMessegeBox.Show("هیچ نتیجه ای یافت نشد", "", FMessegeBox.FMessegeBoxButtons.Ok, FMessegeBox.FMessegeBoxIcons.Information);
    }


    dataGridView1.DataSource = search;


    dataGridView1.Columns[0].HeaderText = "تاریخ";
    dataGridView1.Columns[1].HeaderText = "نام امدادگر";
    dataGridView1.Columns[2].HeaderText = "نام خانوادگی امدادگر";
    dataGridView1.Columns[3].HeaderText = "اعزام امدادگر";
    dataGridView1.Columns[4].HeaderText = "نوع امداد رسانی";
    dataGridView1.Columns[5].HeaderText = "نوع خرابی";
    dataGridView1.Columns[6].HeaderText = "نوع سرویس";
    dataGridView1.Columns[7].HeaderText = "تعداد سرویس";
    dataGridView1.Columns[8].HeaderText = "هزینه کل";
    dataGridView1.Columns[9].HeaderText = "زمان شروع امداد رسانی";
    dataGridView1.Columns[10].HeaderText = "زمان پایان امداد رسانی";
    dataGridView1.Columns[11].HeaderText = "کد مشتری";
    //int counter = dt.Rows.Count;


    //textBox1.Text=counter.ToString();
    // DataTable dt = new DataTable();
    textBox2.Text = dataGridView1.Rows.Count.ToString();

    این کد رو واسه جستجوی بین دو تاریخ نوشتم ولی اجرا میکنم میگه هیچ نتیجه ای یافت نشد
    هیچی نشون نمیده در گرید ویو
    آخرین ویرایش به وسیله farnazy : دوشنبه 06 شهریور 1396 در 19:52 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •