PDA

View Full Version : سوال: جلوگیری از ذخیره دوباره اطلاعات موجود



nima_8m
شنبه 10 تیر 1396, 19:07 عصر
با سلام
در رویداد ذخیره چکار باید کرد وقتی اطلاعات رو دوباره ثبت میکنیم رکود جدید اضافه نشود و فقط تغییرات ذخیره شود یا اصلاً اتفاقی نیوفته و فقط ذخیره بشه

samiasoft
شنبه 10 تیر 1396, 20:46 عصر
با سلام
در رویداد ذخیره چکار باید کرد وقتی اطلاعات رو دوباره ثبت میکنیم رکود جدید اضافه نشود و فقط تغییرات ذخیره شود یا اصلاً اتفاقی نیوفته و فقط ذخیره بشه

درود

منظورتون در دیتابیس هست؟
خب برای یکی از ستون هاتون کلید اصلی قرار بدید....وقتی داده تکراری ذخیره بشه خطا خواهد اومد که اونو با TRY و CATCH کنترل کنید

nima_8m
یک شنبه 11 تیر 1396, 00:49 صبح
درود بر شما
بله منظورم در دیتا بیس هستش الان آی دی کلید اصلی هست ولی دکمه ثبت رو میزنم دوباره همون رکورد رو تکرار میکنه با تغییرات جدید
براا جلوگیری از اینکار مجبور شدم دکمه آپدیت بزارم میدونم این راهش نیست اگه ممکنه راهنمایی بفرمایید.

samiasoft
یک شنبه 11 تیر 1396, 10:25 صبح
درود بر شما
بله منظورم در دیتا بیس هستش الان آی دی کلید اصلی هست ولی دکمه ثبت رو میزنم دوباره همون رکورد رو تکرار میکنه با تغییرات جدید
براا جلوگیری از اینکار مجبور شدم دکمه آپدیت بزارم میدونم این راهش نیست اگه ممکنه راهنمایی بفرمایید.

مشکلتون همینجاست!

چرا ایدی کلید اصلیه؟ ایدی رو نبایستی کلید اصلی میکردید....یکی دیگر از ستون ها رو که نباید تکراری باشه کلید اصلی میکردین.

برای مثال اگر کالایی ثبت میکنید در انبار ، نباید نام کالا تکراری باشه پس مجبوریم نام کالا را به عنوان کلید اصلی انتخاب کنیم.

ستون ایدی رو هم از نوع نامبر انتخاب کنید و هربار که رکورد ذخیره میکنید عددش رو خودتون ثبت کنید.برای مثال اخرین رکورد رو بخونید + 1 کنید تا ایدی رو تشکیل بدهد.

nima_8m
یک شنبه 11 تیر 1396, 18:37 عصر
درود بر شما
حالا Error Handling رو چطور انجام بدم الان پیغامی رو که فرموین میده

The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

nima_8m
یک شنبه 11 تیر 1396, 19:01 عصر
البته در حال حاضر دارم از try استفاده میکنم ولی باز جواب نمیده این کد رویداد ذخیره است اگه جایش لازمه تغییر بدم


Private Sub btn_hava_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_hava_save.Click
con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
If txt_hava.Text = Nothing Then
MessageBox.Show("وارد کردن نوع سکه الزامیست", "اطلاعات سکه", MessageBoxButtons.OK, MessageBoxIcon.Information)
txt_hava.Focus()
Exit Sub
End If
Try
Dim strSQL As String =
"INSERT INTO t3 (hava,hava_price)" &
"VALUES (@hava,@hava_price)"
Dim cmd As New OleDbCommand(strSQL, con)
With cmd
.Parameters.Add(New OleDbParameter("@hava", txt_hava.Text))
.Parameters.Add(New OleDbParameter("@hava_price", txt_price.Text))
End With
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Catch sqlExc As OleDbException
MessageBox.Show(sqlExc.ToString, "SQL Exception Error!",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch exc As Exception
End Try
MessageBox.Show(" عملیات ثبت انجام شد",
"حواله های ارزی", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Call hava_()
btn_hava_save.Enabled = False
frm_list.lbl_hava_rep.Visible = True
frm_list.lbl_hava_rep.ForeColor = Color.Green
frm_list.lbl_hava_rep.Text = "یک مورد جدید به لیست اضافه شد"
txt_hava.Text = Nothing
txt_price.Text = Nothing
End Sub

samiasoft
یک شنبه 11 تیر 1396, 20:47 عصر
چه زمانی خطا میده؟

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

http://barnamenevis.org/showthread.php?539388-%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB%8C%D8%AF-%D8%A8%D8%A7%DB%8C%D9%86%D8%AF-%D8%B4%D8%AF%D9%87-%D8%A8%D9%87-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%DB%8C%D8%A7-%D8%A8%D8%A7%D9%84%D8%B9%DA%A9%D8%B3