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

نام تاپیک: مشکل با نمایش داده ذخیره شده در SQL در datagridview

  1. #1
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    Question مشکل با نمایش داده ذخیره شده در SQL در datagridview

    با سلام خدمت دوستان بنده یه پروژه ای دارم که چند تا مشکل کوچیک دارم در حال حاضر مشکلم اینه که با کد زیر که که داده ها ذخیره میشن :

    {
    tim.Stop();
    PersianCalendar persianCalendar = new PersianCalendar();
    string tarikh = persianCalendar.GetYear(DateTime.Now).ToString() + "/" + persianCalendar.GetMonth(DateTime.Now).ToString() + "/" + persianCalendar.GetDayOfMonth(DateTime.Now).ToStri ng();
    using (SqlConnection connection = new SqlConnection("Data Source=.;Initial Catalog=db3;Integrated Security=True"))
    {
    SqlCommand cmd = new SqlCommand("INSERT INTO phone (date, number, problem, area, gender, duration) VALUES (@date, @number, @problem, @area, @gender, @duration)");
    cmd.CommandType = CommandType.Text;
    cmd.Connection = connection;
    cmd.Parameters.AddWithValue("@date", tarikh);
    cmd.Parameters.AddWithValue("@number", bedoonmosavi.Text);
    cmd.Parameters.AddWithValue("@problem", problem.Text);
    cmd.Parameters.AddWithValue("@area", label19.Text);
    cmd.Parameters.Add("@duration", textBox3.Text);
    if (radioMale.Checked)
    cmd.Parameters.AddWithValue("@gender", "مرد");
    else
    cmd.Parameters.AddWithValue("@gender", "زن");
    connection.Open();
    cmd.ExecuteNonQuery();
    }
    this.Close();
    this.showstatus = false;
    }

    داده ها در SQL ذخیره می شوند و هیچ مشکلی هم ندارند
    sql duration.JPG
    موقع لود کردن بنده فقط Data Source رو برای Data Gridview متصل کردم به دیتابیس SQL که وقتی فرم لود میشه تمامی داده های سیو شده درست نمایش میده الا ستون Duration که مدت زمان سپری شده هست
    duration.JPG

    ممنون میشم راهنمایی کنید مشکل کجاست؟

  2. #2
    کاربر دائمی آواتار Davidd
    تاریخ عضویت
    آذر 1392
    محل زندگی
    تهران
    پست
    391

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    سلام. اگه Duration یک بازه زمانی هست نباید از DateTime استفاده کرد. برای بازه زمانی از کلاس TimeSpan استفاده میشه. برای ذخیره در دیتابیس میتونی یه ستون از نوع bigint در نظر بگیری و پراپرتی Ticks از TimeSpan ذخیره کنی و برای نمایش باید به TimeSpan تبدیل بشه.
    اما یه راه دیگه هم اینه که به صورت یک رشته در دیتابس ذخیره کنی مثلا '23:02' ( این روش در صورتی مناسبه که نخوای روی این فیلد فیلتر اعمال کنی)

  3. #3
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط Davidd مشاهده تاپیک
    سلام. اگه Duration یک بازه زمانی هست نباید از DateTime استفاده کرد. برای بازه زمانی از کلاس TimeSpan استفاده میشه. برای ذخیره در دیتابیس میتونی یه ستون از نوع bigint در نظر بگیری و پراپرتی Ticks از TimeSpan ذخیره کنی و برای نمایش باید به TimeSpan تبدیل بشه.
    اما یه راه دیگه هم اینه که به صورت یک رشته در دیتابس ذخیره کنی مثلا '23:02' ( این روش در صورتی مناسبه که نخوای روی این فیلد فیلتر اعمال کنی)

    ممنون بابات پاسخی دهی ولی منظورتون رو راجب بازه زمانی نفهمیدم این تایم هم همون تایم سپری شده هست Elapsed Time زمانی که فرم دوم باز میشه با یه Event ای این تایمر از 0 شروع میشه میره بالا حالا هر تایمی که پر شده مثلا 1 دقیقه و 15 ثانیه بنده دکمه سیو رو که میزنم که کد هاش دقیقا همین ها هست که در پست اول گذاشتم این تایم سپری شده به صورت صحیح در SQL گویا سیو میشه
    مشکل بنده اصلا توی این قسمت ذخیره سازی نیست !!!

    مشکلم اینه موقع فراخوانی کل داده های جدول در DataGridview این ستون بخصوص Duration یا زمان سپری شده همان مقدار SQL رو لود نمی کنه انگار قبلش یه تبدیل میزنه به تاریخ کامل و بعد نمایش میده که نمی دونم دردش از کجاست
    نوع ستون هم در SQL از نوع Nvarchar تعریف کردم که موقع ذخیره از TextBox مشکلی نداشته باشم

  4. #4
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    در این کد چی ذخیره می شه. دستور باید value یا مقداری داشته باشه

    cmd.Parameters.Add("@duration", textBox3.Text);


    این جور بشه. اگه زمان سپری شده در textBox3 قرار داشته باشه.

    cmd.Parameters.AddWithValue("@duration", textBox3.Text);

  5. #5
    کاربر دائمی آواتار ebrahim.rayatparvar
    تاریخ عضویت
    آبان 1392
    محل زندگی
    https://www.youtube.com/c/zangclass
    پست
    714

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview


    cmd.Parameters.Add("@duration", textBox3.Text);
    مهندس جان سلام اگه دارین از متد Add استفاده میکنید بهتر از این مدل استفاده کنید یا درستش به این روش هست :

    cmd.Parameters.Add("@duration", SqlDbType.NVarChar).Value = textBox3.Text;

  6. #6
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط ebrahim.rayatparvar مشاهده تاپیک
    مهندس جان سلام اگه دارین از متد Add استفاده میکنید بهتر از این مدل استفاده کنید یا درستش به این روش هست :

    cmd.Parameters.Add("@duration", SqlDbType.NVarChar).Value = textBox3.Text;
    برای بنده فرقی نمی کنه چه متودی باشه حتی مثل بقیه از Addwithvalue هم استفاده کردم
    این متد هم استفاده کردم نتیجه یکی بود حتی با اینکه توی این روش Data type هم مشخص شده موقع نمایش در برنامه سی شارپ(datagridview) باز به صورت تاریخ نمایش میده

    البته من دیتابیس رو هم bind کردم به datagridview که خودش یه دستور
    this.phoneTableAdapter7.Fill(this.db3DataSet4.phon  e);


    در formload قرارمیده که کل داده ها پر میشن ولی این ستون Duration همچنان به صورت تاریخ میاد !!




    راستی تایمر هم بدین صورت نوشته شده :


    //timer
    Timer tim = new Timer();
    long sec = 0;
    //
    public Form2()
    {
    InitializeComponent();


    }

    //timer
    void t_Tick(object sender, EventArgs e)
    {
    seC++‎‎‎‎‎;
    if (textBox3.InvokeRequired)
    {
    Action act = () => textBox3.Text = string.Format("{0:00}:{1:00}", sec >= 60 ? sec / 60 : 0, sec < 60 ? sec : sec % 60);
    textBox3.Invoke(act);
    }
    else
    {
    textBox3.Text = string.Format("{0:00}:{1:00}", sec >= 60 ? sec / 60 : 0, sec < 60 ? sec : sec % 60);
    }

  7. #7

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نوع ستون duration رو به Time(7) تغییر بده. در اینصورت فرمت ذخیره به hh:mm:ss تغییر میکنه و البته باید کنترل کنی مقادیر از حد مجاز فراتر نروند.

    راه بهتر شاید همون استفاده از TimeSpan هست.

  8. #8

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    فرمت فیلدی که توی دیتاگریدویو هست رو تبدیل کن به کامبو باکس ببین بازم همینجوری هس یا نه. اگه درست شد تبدیلش کن به لیبیل جتما درست میشه انشالله

  9. #9
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    نوع ستون duration رو به Time(7) تغییر بده. در اینصورت فرمت ذخیره به hh:mm:ss تغییر میکنه و البته باید کنترل کنی مقادیر از حد مجاز فراتر نروند.

    راه بهتر شاید همون استفاده از TimeSpan هست.

    ممنون بابات پیگیری

    ولی تایم ها توی ستون SQL تغییر کردند و از ثانیه پریدن به دقیقه و زمان لود شدن به DGV هم ارور دارم:
    load sql error.JPG



    فکر کنم مشکل از تایمر باشه کلا چون با اجرا شدن یه Event دیگه شروع میکنه به شمردن و چون فرمت مناسبی نداره موقع سیو و یا لود شدن مشکل پیش میاد

    نمیشه یه تایمر ساده با TimeSpan نوشت که با اجرا شدن فرم دوم شروع کنه به شمردن ؟ که راحت بشه سیو کرد در SQL و این مشکلات اینچنینی و پیش نیاره؟

  10. #10
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    Lightbulb نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    برادر من یه برنامه کوچیک نوشتم برای این مورد و تایمر دستی ساده (ساده ترین طرحی که تا الان نوشتم!) برای اون طراحی کردم که هر جا شما بخوای میشه ذخیره کرد و در sql امتحان کردم. فایل پروژه و تصویر از اون هم اینجا گذاشتم تا به دردت بخوره.

    ابتدا یه تایمر در پروژه قرار می دیم و در form load کد زیر را:
    private void Form1_Load(object sender, EventArgs e)
    {
    timer1.Start();
    timer1.Interval = 1000;

    }


    در قسمت timer_tick کد زیر را قرار می دیم. البته من دو متغییر ثانیه و دقیقه رو سراسری زدم چون می خواستم به صورت رشته در کد درج(بعد این کد گذاشتم) ذخیره کنم.

    short s = 0;
    short m = 0;

    private void timer1_Tick(object sender, EventArgs e)
    {
    s+=1;
    if (s == 60)
    {
    s = 0;
    m += 1;
    }
    }


    ودر آخر ذخیره

    SqlCommand a = new SqlCommand("insert into Table_1(saa) values('" + m.ToString() + ":" + s.ToString() + "')", c);
    c.Open();
    a.ExecuteNonQuery();
    c.Close();

    در اینجا saa همون duration هست. (دستم گرفت شد saa )


    تصویری از روال برنامه
    فایل های ضمیمه فایل های ضمیمه

  11. #11
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط asman.abi مشاهده تاپیک


    ممنون بابات کد بالا تایمر ساده ای که نوشتی خیلی نظرم جلب کرد فقط تا چد میشموره؟ 1 ساعت؟ مثلا 4 ساعت و 35 دقیقه و 26 ثانیه و نشون نمیده (4:35:26)؟

    بعد کدی که بابت ذخیره در SQL نوشتی به صورت تکی ای هست اگر پست های من دیده باشی من حداقل 10 ستون میخوام همزمان موقع ثبت رکورد سیو بشه که این مدزمان سپری شده یه ستونه که باهاش مشکل داشتم اونم نه تو سیو کردن!! موقع نمایش تو دیتا گرید
    حالا سعی می کنم کد ها و ادغام کنم ببینم چی میشه

    ممنون بابات پیگیری و کد نویسی خیلی مردی...

  12. #12
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط reza1011 مشاهده تاپیک
    ممنون بابات کد بالا تایمر ساده ای که نوشتی خیلی نظرم جلب کرد فقط تا چد میشموره؟ 1 ساعت؟ مثلا 4 ساعت و 35 دقیقه و 26 ثانیه و نشون نمیده (4:35:26)؟

    بعد کدی که بابت ذخیره در SQL نوشتی به صورت تکی ای هست اگر پست های من دیده باشی من حداقل 10 ستون میخوام همزمان موقع ثبت رکورد سیو بشه که این مدزمان سپری شده یه ستونه که باهاش مشکل داشتم اونم نه تو سیو کردن!! موقع نمایش تو دیتا گرید
    حالا سعی می کنم کد ها و ادغام کنم ببینم چی میشه

    ممنون بابات پیگیری و کد نویسی خیلی مردی...
    آره چرا نمی شه. اتفاقا من نوشتم دیدم شما تو شماتیک کارت دقیقه بود من دیگه ساعت رو حذف کردم. خیلی ساده میشه روز، هفته، ماه و سال هم اضافه کرد.
    اگه می خوای با ساعت بگم. یعنی چیزی که شما گفتید.
    اینا منطق کد نویسی هست شما اگه مسئله رو بفهمی می تونی پیچیده ترین کار ها رو ساده حل کنی. (خصوصیت منه)
    چون سریع کد رو نوشتم فقط duration که مدت زمان سپری شده رو می خواستی ذخیره کردم. شما می تونی ادامه دستور ذخیره من، تغییراتتو اعمال کنی. الان با این روش ذخیره به مشکل بر نمی خوری. مقدار فیلد duration در پایگاه هم nchar یا nvarchar کن.
    خواستی بیشتر توضیح می دم.

    موفق باشید

  13. #13
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط asman.abi مشاهده تاپیک
    آره چرا نمی شه. اتفاقا من نوشتم دیدم شما تو شماتیک کارت دقیقه بود من دیگه ساعت رو حذف کردم. خیلی ساده میشه روز، هفته، ماه و سال هم اضافه کرد.
    اگه می خوای با ساعت بگم. یعنی چیزی که شما گفتید.
    اینا منطق کد نویسی هست شما اگه مسئله رو بفهمی می تونی پیچیده ترین کار ها رو ساده حل کنی. (خصوصیت منه)
    چون سریع کد رو نوشتم فقط duration که مدت زمان سپری شده رو می خواستی ذخیره کردم. شما می تونی ادامه دستور ذخیره من، تغییراتتو اعمال کنی. الان با این روش ذخیره به مشکل بر نمی خوری. مقدار فیلد duration در پایگاه هم nchar یا nvarchar کن.
    خواستی بیشتر توضیح می دم.

    موفق باشید
    سلام ممنون بابات کد تایمر که تا ساعت پیش بره فکر کنم اینشکلی بشه البته اگه جایی ناقص هست بگید


    public void timer1_Tick(object sender, EventArgs e)
    {
    {
    s += 1;
    if (s == 60)
    {
    s = 0;
    m += 1;
    }
    } while (m==60)
    {
    s = 0;
    m = 0;
    h += 1;
    }
    }



    نوع ستون Duration از اول هم nvarchar بود ولی دیگه اینقدر پرسجو کردم راجب این قضیه دچار کلی تغییر تحولات شد که باز گذاشتمش فرمت قبلی که بود همون nvarchar ()100

    راجب سیو کردن هم اگه می شد به جز تایمر با همین کد های خودت که نوشتی یه مثال برای سیو کردن چند مقدار برای ستون های دیگه مثلا نام و اینا هرچی.. دیگه بزنی که به همراه تایمر ذخیره میشن
    نمونش ببینم متوچه روند کار میشم و بقیه ستون ها هم خودم اضافه می کنم

    راستی میشه زمان لود شدن فرم زمان سپری شده رو ببینم تو یه تکست باکسی یا لیبلی چیزی ؟ چون اینجوری خودش میشموره و سیو میشه و تازمانی که داده توی دیتا گرید لود نشن متوجه نمیشم چقدر تایم سیو شده منظورم اینه از همون ثانیه اول که داره میشموره به صورت آنی ببینم تایم و

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

  14. #14
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

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

    برای کد هم از if های تو در تو استفاده کن من با اون میذارم. ولی روال همونه که نوشتی.
    راجب سیو کردن هم اگه می شد به جز تایمر با همین کد های خودت که نوشتی یه مثال برای سیو کردن چند مقدار برای ستون های دیگه مثلا نام و اینا هرچی.. دیگه بزنی که به همراه تایمر ذخیره میشن
    نمونش ببینم متوچه روند کار میشم و بقیه ستون ها هم خودم اضافه می کنم

    راستی میشه زمان لود شدن فرم زمان سپری شده رو ببینم تو یه تکست باکسی یا لیبلی چیزی ؟ چون اینجوری خودش میشموره و سیو میشه و تازمانی که داده توی دیتا گرید لود نشن متوجه نمیشم چقدر تایم سیو شده منظورم اینه از همون ثانیه اول که داره میشموره به صورت آنی ببینم تایم و


    بله با مقادیر دیگه هم به سادگی ذخیره میشه. کد کامل رو در ضمیمه میذارم.
    بله چرا نمیشه اتفاقا من برای آزمایش همین کار و کردم ببینم درست انجام میشه یا نه
    آخرین ویرایش به وسیله asman.abi : دوشنبه 11 خرداد 1394 در 17:42 عصر

  15. #15
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

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

    برای کد هم از if های تو در تو استفاده کن من با اون میذارم. ولی روال همونه که نوشتی.


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

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

    بعد من کلا 25 تا ستون داره دیتابیس اصلیم همرو باید بکنم تو این پرانتز!! خیلی ناجور میشه که ...

  16. #16
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    شما می تونی همین رو به صورت پارامتری بدی. ولی چون عادت دارم خیلی کد اضافی نزنم کلا به صورت خطی نوشتم.

    تصویری از برنامه
    فایل پروژه در ضمیمه طبق نیاز شما

    در این جا ساعت تا مقدار زیادی می ره جلو. یعنی محدودیتی براش قرار داده نشده. مثلا 135 ساعت و 2 دقیقه و 26 ثانیه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله asman.abi : دوشنبه 11 خرداد 1394 در 21:50 عصر

  17. #17
    کاربر تازه وارد آواتار reza1011
    تاریخ عضویت
    اردیبهشت 1390
    پست
    36

    نقل قول: مشکل با نمایش داده ذخیره شده در SQL در datagridview

    نقل قول نوشته شده توسط asman.abi مشاهده تاپیک
    شما می تونی همین رو به صورت پارامتری بدی. ولی چون عادت دارم خیلی کد اضافی نزنم کلا به صورت خطی نوشتم.

    تصویری از برنامه
    فایل پروژه در ضمیمه طبق نیاز شما

    در این جا ساعت تا مقدار زیادی می ره جلو. یعنی محدودیتی براش قرار داده نشده. مثلا 135 ساعت و 2 دقیقه و 26 ثانیه

    اقا fsdhv عالی بود ولی من هنوز نفهمیدم چه طور شرطی به این طریق سیو کنم از طریق Radio button که نمیشد واسه همین یه کمبو باکس ساختم و ایند کد و گذاشتم تو کد ها که دیدم خالی(null) سیو میکنه

    '"+gendercombo.SelectedValue+"' 

تاپیک های مشابه

  1. مشکل در نمایش متن ذخیره شده با ckeditor
    نوشته شده توسط sairon123 در بخش PHP
    پاسخ: 2
    آخرین پست: چهارشنبه 14 آبان 1393, 12:23 عصر
  2. مشکل در نمایش عکس ذخیره شده
    نوشته شده توسط setareh2013 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 07 تیر 1393, 10:58 صبح
  3. نمایش عکس ذخیره شده در sql در gidview در محیط C#‎.net
    نوشته شده توسط amir123123 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 11 آذر 1391, 17:59 عصر
  4. مشکل در دریافت عکس ذخیره شده در sql
    نوشته شده توسط bazardeh در بخش C#‎‎
    پاسخ: 6
    آخرین پست: دوشنبه 15 فروردین 1390, 18:33 عصر
  5. مشکل: عدم نمایش تصاویر ذخیره شده در دیتابیس
    نوشته شده توسط fereshte22 در بخش ASP.NET Web Forms
    پاسخ: 13
    آخرین پست: پنج شنبه 22 اسفند 1387, 03:58 صبح

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

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