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

نام تاپیک: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

  1. #1

    کمک فوری فوری - جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    سلام
    باید کد کالا و تاریخ گردش کالا رو از textbox ها بخونم، توی جدول گردش کالا سرچ کنم و نتیجه رو توی gridview نمایش بدم (ورودی و خروجی و موجودی و ... ). تاریخ رو از چه نوع تعریف کنم واسه نمایش gridview ؟ و اینکه دستوراتی که الان دارم با کد کالا سرچ میکنه و همه چیزایی که میخوام رو نمایش میده. فقط تاریخ رو نمیدونم چطور اضافه کنم توی دستورات. کد این قسمت هم اینه:


         
    private void button2_Click(object sender, EventArgs e)
    {
    F_kala_search f = new F_kala_search();
    f.ShowDialog();
    txt_kala.Text = f.selected_code;
    lbl_kala.Text = f.selected_name;
    Refresh_data();
    }
    private void Refresh_data()
    {
    if (txt_kala.Text != "")
    {
    dataGridView1.DataSource = DataAccess.getdata("select * from

    gardeshe_kala where code_kala="+ txt_kala.Text);
    long voroodi = 0, khorooji = 0, mojoodi = 0;
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
    voroodi += long.Parse(dataGridView1.Rows[i].Cells

    ["voroodi"].Value.ToString());
    khorooji += long.Parse(dataGridView1.Rows[i].Cells

    ["khorooji"].Value.ToString());
    }
    mojoodi = voroodi - khorooji;
    textBox1.Text = "موجودی فعلی: " + mojoodi.ToString();
    }
    }

    آخرین ویرایش به وسیله my_world : سه شنبه 04 بهمن 1390 در 12:34 عصر

  2. #2
    کاربر دائمی آواتار gilas1368
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    مشهد
    پست
    1,178

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

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

  3. #3

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

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

  4. #4
    کاربر دائمی آواتار gilas1368
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    مشهد
    پست
    1,178

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    نوعشو که باید از داخل دیتابیس تعیین کنین
    ولی برای جستجو این کمکتون می کنه:
    sqlconnection con=new sqlconnection("آدرس پایگاه داده");
    sqlcommand com =new sqlcommand("select * from Tablename where Fieldname='"تاریخ موردنظر"'",con);
    sqldataadapter da=new sqldataadaper(com);
    datatable dt=new datatable();
    con.open();
    da.fill(dt);
    datagridview1.datasource=dt;
    con.close();

  5. #5
    کاربر دائمی آواتار sepehr.net
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    386

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    سلام
    فیلد تاریخ رو در دیتابیس از نوع Varchar بگیر
    برای جستجو هم مثل بقیه فیلد ها عمل کن
    Select * From MyTable Where MyDate Between @Date1 And @Date2

  6. #6
    کاربر جدید
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    تهران
    پست
    2

    Lightbulb نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    سلام

    من از دوستان عزیزی که راه حل NVarChar رو پیشنهاد دادن تشکر میکنم. این یک راه حل سریع برای رسیدن به خروجیه.
    ولی باید این نکته رو در نظر بگیریم که از نوع فیلد فقط می توانیم یک Query ساده در حدود یه بازه تاریخی مشخص اجرا و خروجی بگیربم. ولی وقتی نیاز به محاسباتی مثل جمع بین تاریخ باشه به مشکل میخوریم. حتی اگر بخوایم از CAST استفاده کینم هم به دلیل اینکه تعداد روز در ماه های میلادی با شمسی متفاوته باز هم به مشکل خواهیم خورد.

    پیشنهاد بنده اینه که فیلد ها رو DateTime در نظر گرفته بشه.
    در زمان نمایش تاریخ تاریخ روی Grid هم دو تا راه حل وجود داره :
    1- استفاده از Culture در Framework که خودش معادل شمسی رو نشون میده و کمی پیچیدست.
    2- تبدیل تاریخ میلادی به شمسی در رویداد ItemDataBound مربوط به Grid.

    برای تبدیل تاریخ هم دو تا راه وجود داره :
    1- استفاده از PerisanCalendar خود Framework.
    2- بنده یک کلاس تبدیل تاریخ به C#‎ تولید کردم که میتونم در اختیارتون قرار بدم و کار باهاش بسیار راحته.

    موفق با شید.

  7. #7
    کاربر دائمی آواتار sepehr.net
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    386

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

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

  8. #8

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    دوستان تاجاییکه من فهمیدم برای تاریخ شمسی
    ذخیره تو پایگاه و ارتباط مستقیم با پایگاه در گزارشگیری کریستال باید تاریخ از نوع رشتهای باشه
    آیا با این روش هیچ مشکلی بین مقایسه دو تاریخ نداریم
    سوال : تاریخ باید تو یک رشته اینطوری وارد بشه 13/11/1390
    اگه کسی سورسی داره که با این روش کار میکنه بهم بده ممنون میشم

  9. #9
    کاربر دائمی آواتار sepehr.net
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    386

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    به نظر من بهترین راه حل همینه
    مشکل که هست ، ولی باید یه جوری با مشکلات کنار بیای :دی

    تاریخ رو باید با یک فرمت خاص ذخیره کنی تا جواب بده و مشکلی پیش نیاد اون هم به این صورت هست 1390/11/04

  10. #10

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    الان تست کردم خوب بود
    اما وقتی تاریخ را از سیستم گرفته و با persiancalender اونوتبدیل به شمسی داخل رشته ذخیره می کنم تو بعضی از تاریخها یکم مشکل وجود داره
    مثل تاریخ امروز که میزنه 1390/11/4 اما باید این باشه 1390/11/04
    راه حلی برای این وجود نداره

  11. #11
    کاربر دائمی آواتار sepehr.net
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    386

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    خوب باید فرمت تاریخ رو خودت تبدیل کنی به اون قالب دیگه

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

  12. #12

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    متوجه نشدم

  13. #13
    کاربر دائمی آواتار sepehr.net
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    386

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    خودت یه تابع بساز که ورودی یه تاریخ بگیره ، خروجی تاریخ رو با اون فرمتی که دوست داری برگردونه ، هر جایی که میخوای تاریخ رو تو دیتابیس ذخیره کنی ، تاریخ وارد شده رو به این تابع پاس بده و خروجی این تابع رو تو دیتابیس ذخیره کن

  14. #14
    کاربر جدید
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    تهران
    پست
    2

    Lightbulb نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    نقل قول نوشته شده توسط sepehr.net مشاهده تاپیک
    دیت تایم گرفته بشه ، وقتی کریستال مستقیما به دیتابیس وصل بشه تاریخ میلادی درون گزارشات نمایش داده میشه و برای رفع اون مشکل باید درگریر نوشتن تبدیل تاریخ درون کریستال بشیم که دردسر های خود رو داره
    سلام مجدد

    من از شما تشکر میکنم به نکته خوبی اشاره کردید. من این موضوع رو از قلم انداختم.
    برای کریستال هم من یک Function در SQL Sevrverدارم که تاریخ میلادی نوع DateTime به عنوان ورودی میگیره و خروجی رشته به شما بر میگردونه. لذا وقتی شما در کریستال می خواید گزارش رو نشون بدید کافیه فیلد تاریخ رو به این تابع بدید :
    SELECT myName, dbo.MiladiTOShamsi(myDaye) AS FaDate FROM myTable


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

    من این تابع رو هم پیوست کردم تا دوستان بتونن استفاده کنن.
    فایل های ضمیمه فایل های ضمیمه

  15. #15

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    نقل قول نوشته شده توسط sepehr.net مشاهده تاپیک
    سلام
    فیلد تاریخ رو در دیتابیس از نوع Varchar بگیر
    برای جستجو هم مثل بقیه فیلد ها عمل کن
    Select * From MyTable Where MyDate Between @Date1 And @Date2

    error میده. ضمنن من کاری به شمسی و میلادی ندارم الان. مشکلم اینه که اصلن توی textbox که وارد کنم تاریخم رو، چه کدی بنویسم که اون تاریخ رو سرچ کنه. لطفن کمک کنین. من مبتدی ام.

  16. #16

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    براي تاريخ نيازي به تابع نوشتن نداري توي اين ابزار تكست باكسي كه طراحي كردم همه چيز آماده هست
    براري نوع هم همون nVarchar راه خوبي هست.
    اگه نياز دارين واقعا كه حتما نوعش تاريخ باشه يه فيلد نوع تاريخ هم اضافه كنيد اما موقع ذخيره و تغييرات با استفاده از Persiandate در C#‎ اونو تبديل كنيد تا معادل ميلاديش هم داشته باشيد. اونوقت موقع جستجو از ميلادي و موقع گزارش از شمسي استفاده ميكنيد

  17. #17

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    نقل قول نوشته شده توسط my_world مشاهده تاپیک
    error میده. ضمنن من کاری به شمسی و میلادی ندارم الان. مشکلم اینه که اصلن توی textbox که وارد کنم تاریخم رو، چه کدی بنویسم که اون تاریخ رو سرچ کنه. لطفن کمک کنین. من مبتدی ام.
    between براي اعمال رياضي فيلد عددي كاربرد داره نه رشته از <>= استفاده كنيد

  18. #18

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    براي تاريخ نيازي به تابع نوشتن نداري توي اين ابزار تكست باكسي كه طراحي كردم همه چيز آماده هست
    براري نوع هم همون nVarchar راه خوبي هست.
    اگه نياز دارين واقعا كه حتما نوعش تاريخ باشه يه فيلد نوع تاريخ هم اضافه كنيد اما موقع ذخيره و تغييرات با استفاده از Persiandate در C#‎‎ اونو تبديل كنيد تا معادل ميلاديش هم داشته باشيد. اونوقت موقع جستجو از ميلادي و موقع گزارش از شمسي استفاده ميكنيد
    مرسی از لطفتون! اما با عرض معذرت من نمیدونم چطور از فایلتون استفاده کنم! گفتم که مبتدی ام. میشه راهنماییم کنین؟

  19. #19

    نقل قول: جستجو از طریق تاریخ (برنامه نویسی سی شارپ)

    من یه توضیح میدم که چکار کردم که لطف کنین بگین اشکال کارم کجاس:
    اول اینکه یه کلاس DataAccess دارم و تابع getdata :

    public static DataTable getdata(string command)
    {
    sqlcmd.CommandText = command;
    sqlcmd.Connection = sqlcon;
    sqladapter.SelectCommand = sqlcmd;
    DataTable dt = new DataTable();
    sqladapter.Fill(dt);
    return dt;
    }
    حالا توی فرم مورد نظرم (فرم F_gardeshe_kala) یه textbox و یه comboBox1 گذاشتم و gridview.
    و کد load اینه که تاریخهای save شده توی جدولمو میخونه:
    private void F_gardeshe_kala_Load(object sender, EventArgs e)
    {
    comboBox1.DataSource = DataAccess.getdata("select * from gardeshe_kala");
    comboBox1.DisplayMember = "date";
    comboBox1.ValueMember = "date";

    }
    و کد button اینه که میخوام تاریخ خاصم رو search کنه:

    dataGridView1.DataSource = DataAccess.getdata("select * from gardeshe_kala where date="+ comboBox1.SelectedValue);

    در حال حاضر error ای که داره بهم میده اینه:

    Conversion failed when converting the nvarchar value '1390/10/23' to data type int.

    value '1390/10/23' هم که اولین تاریخ جدولم هستش.
    با توجه به اینها لطف کنین بگین چطور کدهام رو اصلاح کنم. اگه میشه دقیق توضیح بدین چون خیلی مبتدی ام و خیلی سر در نمیارم. مرسی

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

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