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

نام تاپیک: دیتاگرید بایند شده به دیتابیس یا بالعکس

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    دیتاگرید بایند شده به دیتابیس یا بالعکس در ADO.NET

    سلام دوستان

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

    نام جدول دیتابیس : Table2
    فیلد IDNumber از نوع اتونامبر می باشد.
    فیلد numer کلید اصلی دیتابیس می باشد.


     Public connect As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;  Data Source=" & Application.StartupPath & "/data.mdb") 'data.dll    Public strsql As String
    Public Bs As New BindingSource
    Public da As New OleDbDataAdapter
    Public ds As New DataSet
    Public DataRow As DataRow


    برای اتصال دیتابیس اکسس :
    connect.Open()

    strsql = "select esm,dat,fnumber,numer,idnumber from Table2 Order By idnumber "
    da = New OleDbDataAdapter(strsql, connect)


    Dim tblmap As DataTableMapping
    tblmap = da.TableMappings.Add("Table", "Table2")


    Ds.Clear()
    da.Fill(Ds, "Table2")

    Bs.DataSource = ds
    Bs.DataMember = "Table2"

    DataGridView1.DataSource = Bs

    connect.Close()


    برای اضافه کردن داده از دستور زیر استفاده کردم :
     Try            DataRow = ds.Tables(0).NewRow

    DataRow("esm") = TextBox4.Text
    DataRow("dat") = TextBox3.Text
    DataRow("fnumber") = TextBox2.Text
    DataRow("numer") = TextBox1.Text


    ds.Tables("Table2").Rows.Add(DataRow)


    Dim CB As New OleDbCommandBuilder(da)
    da.InsertCommand = CB.GetInsertCommand
    da.Update(ds)

    MsgBox("با موفقیت ثبت شد", MsgBoxStyle.Information, "hi")
    Catch ex As Exception

    DataRow.RejectChanges()

    MsgBox("تکراری")
    End Try


    برای حذف هم از دستور زیر استفاده کردم :
      DataGridView1.Rows.RemoveAt(DataGridView1.Selected  Rows(0).Index)

    Dim Cb As New OleDbCommandBuilder(da)
    da.DeleteCommand = Cb.GetDeleteCommand
    da.Update(ds, "Table2")



    برای ویرایش کردن :

      Try

    Form1.DataGridView1.SelectedRows(0).Cells(3).Value = TextBox1.Text
    Form1.DataGridView1.SelectedRows(0).Cells(2).Value = TextBox2.Text
    Form1.DataGridView1.SelectedRows(0).Cells(1).Value = TextBox3.Text
    Form1.DataGridView1.SelectedRows(0).Cells(0).Value = TextBox4.Text


    Bs.EndEdit()


    Dim CB As New OleDbCommandBuilder(da)
    da.UpdateCommand = CB.GetUpdateCommand
    da.Update(ds)


    MsgBox("با موفقیت ویرایش شد", MsgBoxStyle.Information, "hi")
    Catch ex As Exception


    ds.RejectChanges()

    MsgBox("تکراری")
    End Try



    هنگامی که دستور حذف رو میزنم به درستی کارمیکنه . مشکل زمانی پیش میاد که من بخوام دکمه ثبت رو بزنم سپس دکمه حذف همون رکورد رو بزنم خطا میاد ! به نظرتون چرا اینطوریه؟

    نکته اخر :
    آیا اینطور کد نویسی برای من مشکلی بوجود نمیاره؟ سرعت اتصال و ثبت داده به نظر خودم در این حالت خیلی عالیه. شما نظری دارید در این باره؟

    آخرین ویرایش به وسیله samiasoft : سه شنبه 30 خرداد 1396 در 00:16 صبح

  2. #2
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: دیتاگرید بایند شده به دیتابیس یا بالعکس

    دوستان نظری ندارید؟

    چرا بعد اضافه کردن و بلافاصله بعد حذف خطا میاد ؟!

    نکته ای که جالبه این هستش که
    درحالی که من رکوردی را ویرایش میکنم و بعدش همونو حذف میکنم به درستی حذف میشود.


    همچنین وقتی داده ای را اضافه میکنم و سپس میخوام اونو ویرایش کنم همچین خطایی میاد.

    به نظرم هنگام ثبت داده ما باید یه مورددیگری رو هم اپدیت میکردیم که من از قلم انداختم؟ یا اینکه دستور دیگری برای اضافه کردن بنویسم

    من همچنین دستور DataRow.AcceptChanges() رو بعد از اضافه کردن نوشتم ولی درست نشد.
    آخرین ویرایش به وسیله samiasoft : سه شنبه 30 خرداد 1396 در 00:41 صبح

  3. #3
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: دیتاگرید بایند شده به دیتابیس یا بالعکس

    دوستــــــــــــــــــان بالاخره تونستم مشکل رو حل کنم

    مشکل بابت فیلد اتونامبر
    IDNumber بود که با حذف این فیلد دیگه خطایی ندارم و به درستی کل پروژه کار میکنه.


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


    حال به نظرتون چاره چیه؟

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

  1. پاسخ: 3
    آخرین پست: جمعه 22 اسفند 1393, 18:26 عصر
  2. انتخاب آیتم بایند شده به comboBox
    نوشته شده توسط merlin_vista در بخش C#‎‎
    پاسخ: 8
    آخرین پست: سه شنبه 13 تیر 1391, 17:36 عصر
  3. سوال: پاك كردن اطلاعات بايند شده به ديتا گريد
    نوشته شده توسط h_floppy در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 04 خرداد 1388, 18:08 عصر
  4. دسترسی به عناصر listbox بایند شده به دیتابیس
    نوشته شده توسط unique1984 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: سه شنبه 15 بهمن 1387, 15:00 عصر
  5. پاسخ: 3
    آخرین پست: دوشنبه 20 آبان 1387, 16:21 عصر

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

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