PDA

View Full Version : فهمیدن تغییر در رکورد ها



seeker
یک شنبه 28 بهمن 1386, 19:18 عصر
با سلام
من فکر میکنم که سوالم تکراری باشه ولی هرچی سرچ کردم چیزی پیدا نکردم
به هر حال
من میخوام موقع بسته شدن یک فرم متوجه بشم که رکوردها نسبت به اون چیزی که موقع لود شدن فرم فیل شده بودند تغییر کردند یا نه که اگر جواب مثبت بود و کاربر هم سیو (آپدیت) نکرده بود به اون متذکر بشم که سیو نکرده
اما نمیدونم چطور

رضا عربلو
یک شنبه 28 بهمن 1386, 21:15 عصر
از پراپرتی RowState سطرها (DataRow) می تونی استفاده کنی.

ghafoori
یک شنبه 28 بهمن 1386, 22:03 عصر
دوست عزیز می توانید با متد getchange دیتاتیبل و یا دیتاست اطلاعاتی که تغییر کرده اند را بدست اورید قطعا اگر جدول خالی به شما بدهد شما می فهمید جدول تغییر نکرده

odiseh
دوشنبه 29 بهمن 1386, 08:18 صبح
دوست عزیز می توانید با متد getchange دیتاتیبل و یا دیتاست اطلاعاتی که تغییر کرده اند را بدست اورید قطعا اگر جدول خالی به شما بدهد شما می فهمید جدول تغییر نکرده

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

ممنون

mohammad-hossein
دوشنبه 29 بهمن 1386, 08:53 صبح
اگر تعداد رکوردها بیشتر از صفر بود، یعنی تغییر کرده

if objDataSet.Tables(#TableName#).GetChanges.Rows.Cou nt >0 then #Data has been Change#

حتی تغییرات رو هم می تونی از همین راه و با استفاده ازADO.NET در DB ذخیره کنی!

odiseh
دوشنبه 29 بهمن 1386, 13:17 عصر
آخه چطوری DataRow به DataGridviewRow ارتباط پیدا میکنه؟ چون RowState مربوط به DataRow هست نه DataGridViewRow , ما توی گرید ویو فرممون در واقع سطر گرید رو تغییر میدیم نه سطر DataTable v v رو. آیا موقع تغییر درجا توی DataTable یا DataSet هم تغییر سرایت میکنه؟

seeker
دوشنبه 29 بهمن 1386, 15:46 عصر
من فکر میکنم جناب غفوری و جناب محمد حسین فرمودند اینکار را بکنم:

Dim cng As New System.Data.DataTable
cng = Me.CtDataSet.person.GetChanges()

If cng.Rows.Count > 0 Then
MsgBox("kgksd")
End If


ولی متاسفانه جواب نمیده و میگه که cng نول هست
من حتی رکورد هارو هم تغیر دادم ولی باز هم این ایراد رو میگیره

ghafoori
دوشنبه 29 بهمن 1386, 16:19 عصر
حتما شما اشتباهی را مرتکب شده اید کدهای زیر را امتحان کنید تا با این متد بیشتر اشنا شوید


Dim d As New DataTable
d.Columns.Add()
d.Rows.Add("1")
d.Rows.Add("2")

Dim d1 As DataTable
d1 = d.GetChanges
If Not d1 Is Nothing Then
MsgBox(d1.Rows.Count)
End If


Dim d2 As DataTable
d2 = d.GetChanges(Data.DataRowState.Unchanged)
If Not d2 Is Nothing Then
MsgBox(d2.Rows.Count)
End If
d.AcceptChanges()

d.Rows(0).Delete()


Dim d3 As DataTable
d3 = d.GetChanges(Data.DataRowState.Deleted)
If Not d3 Is Nothing Then
MsgBox(d3.Rows.Count)
End If

seeker
دوشنبه 29 بهمن 1386, 17:08 عصر
یه اشتباه فاحش کرده بودم و اون اینکه فراموش کرده بودم که قبل از این کدها تغیرات رو به دیتا تیبل ارسال کنم lol
me.bindingSource.EndEdit