PDA

View Full Version : چطور تغییرات ایجاد شده بر روی دیتا گرید را در بانک ذخیره کنم؟



alih988
دوشنبه 24 دی 1386, 00:06 صبح
به نام خدا
سلام و عرض ادب
زمانی که اطلاعاتی را با استفاده از یک dataset در یک datagridview نمایش می دهم ، و خاصیت های ویرایش و حذف کردن را در دیتا گرید true می کنم ، مو خواهم اطلاعاتی را که در دیتا گرید تغییر داده ام و یا حذف کرده ام در بانک اطلاعاتی هم ایت تغییرات بوجود بیایید! چکار کنم؟

saman_itc
دوشنبه 24 دی 1386, 11:37 صبح
سلام
شما با دستور update باید این کارو انجام بدی


ol_cm = New OleDbCommand("UPDATE factor_shali SET idkeshavarz = " & idk.Text & ", noe = '" &
" & DataGridView1.Rows(e.RowIndex).Cells(0).Value & "
& "', tedad = '"
" & DataGridView1.Rows(e.RowIndex).Cells(1).Value & "
"', radif = '"
" & DataGridView1.Rows(e.RowIndex).Cells(2).Value & "
"', olavi= '"
" & DataGridView1.Rows(e.RowIndex).Cells(3).Value & "
"',factorsh= '" &
" & DataGridView1.Rows(e.RowIndex).Cells(4).Value & "
"' WHERE id = "
" & DataGridView1.Rows(e.RowIndex).Cells(5).Value & "
" ", ol_cn)
ol_cm.ExecuteReader()

alih988
دوشنبه 24 دی 1386, 12:06 عصر
آقا سامان بسیار ممنون از راهنمایی شما ، ولی این کد کمی گنگ به نظر می رسد !
شما بفرمایید که آیا برای این عمل باید از command و دستور Update استفاده کرد ؟ و یا از متد update در dataadapter ?
شما ظاهرا از دستور Update sql استفاده کردید! در مورد آرگومان e و کلمه set هم اگر امکان دارد کمس توضیح بدهید !

در ضمن ، اگر کاربر هم تغییراتی اعمال کرده باشد ، و یا رکوردی را حذف هم کرده باشد و رکوردی را هم اضافه کرده باشد ، می شود با استفاده از این دستور کلیه تغییرات را یکباره به بانک ارائه کرد ؟
ممنونم

saman_itc
دوشنبه 24 دی 1386, 12:46 عصر
عزیزم فکر کنم کد آسونی.
شما با هر بانکی که کار کنید دستور آپدیتو میتونید استفاده کنید
مهم دسترسی به خونه های dateg که من براتون نوشتم
بگین دقیق که با چه ایونتی تغییرات اعمال بشه تا براتون یه مثال اجرایی بزارم

alih988
سه شنبه 25 دی 1386, 14:56 عصر
اشکال کار اینجا بود که من ساختار دستور UPDATE را بلد نبودم که نتواستن کد شما را بفهمم!

ولی باز سوال من بی جواب ماند ، فرض کنید یک دیتاست را به یک دیتاگرید انتقال می دهیم ، حال کاربر ((( در داخل دیتا گرید 8 تا رکورد را پاک کند ، 4 تا رکورد اضافه کند ، 20 تا رکورد را تغییر دهد ))) ، حالا قصد دارد کلیه این تغییرات در بانک اطلاعاتی هم ایجاد شود ! چه کار باید کرد؟؟؟

alih988
جمعه 28 دی 1386, 13:03 عصر
کسی نیست که مرا یاری کند ؟

top7news
جمعه 28 دی 1386, 16:58 عصر
سلام دوست عزیز
من یه راه آسون تر جلو پات میذارم
اون جدولی و که از تو بانکت می خوای توش ثبت و حذف انجام بدی و رو
توی solution Explorer توی قسمت data source اضافه کن
بعد کل دیتا سورسی و که اضافه میشه روش کلیک کن و درگ کن توی فرمت
خود Visual برات یه دیتا گرید با همه امکانات اضافه میکنه
و جالبترین کارش اینه که یه نوار ابزار بهت میده که همه امکانات ثبت ، حذف ، اضافه کردن و کلی امکانات دیگه داره
حتما امتحانش کن

اگه هم می خوای اینم کدای update , delet مستقیم

Try
SqlDataAdapter1.Update(DataSet1, "m1")
DataSet1.Clear()
SqlDataAdapter1.Fill(DataSet1, "m1")
DataGrid1.DataSource = DataSet1.Tables("m1")
MsgBox("تغیرات با موفقیت ثبت شد", MsgBoxStyle.Information, "توجه")
Catch
MsgBox("متاسفانه سیستم در حال حاضر قادر به ثبت اطلاعات نمیباشد", MsgBoxStyle.Exclamation, "توجه")
End Try

واسه delet هم به جای updatecommand دستور deletcommand زو قرار بده

saman_itc
جمعه 28 دی 1386, 17:15 عصر
سلام


اشکال کار اینجا بود که من ساختار دستور UPDATE را بلد نبودم که نتواستن کد شما را بفهمم!

ولی باز سوال من بی جواب ماند ، فرض کنید یک دیتاست را به یک دیتاگرید انتقال می دهیم ، حال کاربر ((( در داخل دیتا گرید 8 تا رکورد را پاک کند ، 4 تا رکورد اضافه کند ، 20 تا رکورد را تغییر دهد ))) ، حالا قصد دارد کلیه این تغییرات در بانک اطلاعاتی هم ایجاد شود ! چه کار باید کرد؟؟؟

شما میتونی تو خاصیت dategeril_cell_end edit یه کد بنویسی که کد dateg شمارو به همان جدول خودش بریزه .ببین مشکلت حل میشه؟
کدش هم همان کد که شما واسه ثبت کردن یه سری text box مینویسی
یه شرط هم داره که تا رکرد تو Date gird وجود داره این کارو بکنه





If e.RowIndex >= 0 Then
ol_cm = New OleDbCommand("INSERT INTO Factor_shali (Datein, IdKeshavarz, noe, Tedad, Radif, DateTahvil, Olavi,factorsh)VALUES ('" & DataGridView1.Rows(e.RowIndex).Cells(0).Value & "', " & DataGridView1.Rows(e.RowIndex).Cells(0).Value & ",'" & DataGridView1.Rows(e.RowIndex).Cells(1).Value & "', '" & DataGridView1.Rows(e.RowIndex).Cells(2).Value & "', '" & DataGridView1.Rows(e.RowIndex).Cells(3).Value & "', '" & DataGridView1.Rows(e.RowIndex).Cells(0).Value & "', '" & olavi.Text.ToString & "', '" & DataGridView1.Rows(e.RowIndex).Cells(5).Value & "')", ol_cn))
ol_da = New OleDbDataAdapter(ol_cm)
ds = New DataSet
ol_da.Fill(ds, "Factor_shali")

به نظر من این کد مشکل ندادره.اگه خواستی بگو خط به خط توضیح بدم دوباره

Dariuosh
جمعه 28 دی 1386, 21:18 عصر
اشکال کار اینجا بود که من ساختار دستور UPDATE را بلد نبودم که نتواستن کد شما را بفهمم!

ولی باز سوال من بی جواب ماند ، فرض کنید یک دیتاست را به یک دیتاگرید انتقال می دهیم ، حال کاربر ((( در داخل دیتا گرید 8 تا رکورد را پاک کند ، 4 تا رکورد اضافه کند ، 20 تا رکورد را تغییر دهد ))) ، حالا قصد دارد کلیه این تغییرات در بانک اطلاعاتی هم ایجاد شود ! چه کار باید کرد؟؟؟

اون TableAdapter ایی که از طریق متد Fill اون دیتاگرید رو باهاش پر میکنی متدای Insert ,Update وDelete هم داره که میتونی از طریق اونا این کارو بکنی ، فقط باید تو اون ایونتی که بد از اون میخوای این اتفاق بیوفته صداشون کنی همین
اگر هم مشکلت خود Quary اوناس بگو تا برات بزارم