PDA

View Full Version : جلو گیری از ثبت تکراری



aknj56
یک شنبه 03 اردیبهشت 1391, 09:46 صبح
سلام دوستان
من توی فرمم یک تکس باکس دارم که با یک عدد پر میشه و این کد که توی این تکس باکس هم میزارم به عنوان کلید در اکسس گذاشتم میخام اگر این عدد تکراری وارد بشه پیام بده و جلوگیری کنه از ثبت اطلاعات لطفا راهنمایی کنید

hakim22
یک شنبه 03 اردیبهشت 1391, 10:11 صبح
اصولا شما نباید فیلدی که کاربر وارد می کنه رو به عنوان کلید معرفی کنید.
کلیدها باید فیلدهایی باشند که خودکار اکسس پر کنه و زحمتش گردن شما نباشه (AutoNumber)
برای اینکه فیلدی اطلاعات تکراری نگیره در SQL تنظیمات خودکار وجود داره.
اما در اکسس شما باید قبل از وارد کردن داده دستی با گزارشگیری چک کنید که تکراری نباشد

hamed68
یک شنبه 03 اردیبهشت 1391, 10:29 صبح
سلام دوست گلم

این کد برای جلوگیری از ثبت کد تکراری


Dim da As New SqlDataAdapter
Dim ds As New DataSet

da.SelectCommand = New SqlCommand("select id from YourTable where id=" + TextBox1.Text, YourSqlConnection)
da.Fill(ds, "YourTable")
If ds.Tables("YourTable").Rows.Count <> 0 Then
MsgBox("کد وارد شده تکراری است", MsgBoxStyle.Exclamation)
Exit Sub
End If

A_1397
یک شنبه 03 اردیبهشت 1391, 10:34 صبح
سلام. میتونید از دستور filter استفاده کنی روی Recordset:
Recordset1.Filter = "FieldName=" & Me.TextBox1.Text
بعد چک کن ببین آیا رکوردی برگردونده شده یا نه:
If RecordSet1.RecordCount>0 Then
' "تکراریه"
End If

Hybrid
یک شنبه 03 اردیبهشت 1391, 11:34 صبح
سلام دوستان
من توی فرمم یک تکس باکس دارم که با یک عدد پر میشه و این کد که توی این تکس باکس هم میزارم به عنوان کلید در اکسس گذاشتم میخام اگر این عدد تکراری وارد بشه پیام بده و جلوگیری کنه از ثبت اطلاعات لطفا راهنمایی کنید
سلام ، 2 راه دارین :

1 ) همون که دوستمون در بالا گفتن که چک کنید ببین رکوردی وجود داره که این مقدار رو داشته باشه ( که بهتره از این روش استفاده کنید)

2 ) وقتی که شما مقداری رو وارد کنید که قبلا یک رکورد اون مقدار رو داره ویژوال استودیو یک خطای زمان اجرا میده مبنی بر اینکه این مقدار قبلا وارد شده که شما میتونین با استفاده از try catch پیغامی رو به کاربر نشون بدین و بگین که این مقدار تکراری هست.

موفق باشید

Majid842
پنج شنبه 14 اردیبهشت 1391, 23:09 عصر
این کد رو نوشتم یکسری کدهای دیگه رو هم پیدا کردم توی انجمن نوشتم ولی روی تمام کد ها این خطا رو داشتم ؟؟؟؟؟؟؟؟/
The ConnectionString property has not been initialized.
86645

aknj56
پنج شنبه 14 اردیبهشت 1391, 23:22 عصر
سلام دوست عزیز من از try catch استفاده کردم کارم حل شد و تکراری ثبت نمیکنه

Majid842
پنج شنبه 14 اردیبهشت 1391, 23:34 عصر
باز هم خطا میده میره توی catch

Try
oda.SelectCommand = New SqlCommand("select * from Bank where code_bank=" + Trim(txt_code_bank.Text), ocn)
oda.Fill(ds, "Bank")
If ds.Tables("Bank").Rows.Count <> 0 Then
MsgBox("کد وارد شده تکراری است", MsgBoxStyle.Exclamation)
Exit Sub
Else
ocn.ConnectionString = cn
ocm.Connection = ocn
ocm.CommandText = "insert into Bank(name_bank,code_bank)values(@name_Bank,@code_b ank)"
ocm.Parameters.Clear()
ocm.Parameters.AddWithValue("@name_bank", Trim(txt_name_bank.Text))
ocm.Parameters.AddWithValue("@code_bank", Trim(txt_code_bank.Text))
ocn.Open()
ocm.ExecuteNonQuery()
ocn.Close()
ocm.Clone()
ocn.Dispose()
ocm.Dispose()
MsgBox("OK insert")
End If
Catch
MsgBox("error")
End Try

hosseinenayati_2009
جمعه 15 اردیبهشت 1391, 00:01 صبح
سلام این کد یه نمونه است جواب میده 100%



try

{

bool tek = false;
OleDbCommand com1 = newOleDbCommand();
OleDbDataReader dr;
com1.Connection = login.con;
com1.CommandText = "select codemali from personel where codemali = '" + codemali.Text + "' ";
dr = com1.ExecuteReader();
while (dr.Read())
{
tek = true;
}
if (tek)
{
MessageBox.Show("این کد ملی از قبل وجود دارد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
codemali.Text = "";
codemali.Focus();
}

}
catch (Exception exp)
{
MessageBox.Show(exp.Message, this.Text);
}

Hybrid
جمعه 15 اردیبهشت 1391, 00:04 صبح
خطا معلومه چی میگه ،

شما اصلا کانکشن استرینگ رو برای شی ocn تعریف نکردین !! یعنی چیزی شبیه کد زیر رو ننویشتین :

ocn.connectionString=cs

Majid842
جمعه 15 اردیبهشت 1391, 00:13 صبح
آقا مشکل حل شده (Vbboss) دست همگی درد نکنه ممنون !!
Try
ocn.ConnectionString = cn
oda.SelectCommand = New SqlCommand("select * from Bank where code_bank=" + Trim(txt_code_bank.Text), ocn)
oda.Fill(ds, "Bank")
If ds.Tables("Bank").Rows.Count <> 0 Then
MsgBox("کد وارد شده تکراری است", MsgBoxStyle.Exclamation)
Exit Sub
Else
ocn.ConnectionString = cn
ocm.Connection = ocn
ocm.CommandText = "insert into Bank(name_bank,code_bank)values(@name_Bank,@code_b ank)"
ocm.Parameters.Clear()
ocm.Parameters.AddWithValue("@name_bank", Trim(txt_name_bank.Text))
ocm.Parameters.AddWithValue("@code_bank", Trim(txt_code_bank.Text))
ocn.Open()
ocm.ExecuteNonQuery()
ocn.Close()
ocm.Clone()
ocn.Dispose()
ocm.Dispose()
MsgBox("OK insert")
End If
Catch
MsgBox("error")
End Try
این هم کد کاملش برای آنهایی که لازم دارن!!!