PDA

View Full Version : مبتدی: کنترل تکراری نبودن فیلد تلفن قبل ویرایش



piter11
پنج شنبه 20 شهریور 1393, 16:26 عصر
من می خوام قبل از ویرایش کردن چک کنم ببینم آیا تلفن وارد شده تکراری نیست این قطعه کدم ممنون میشم بگید مشکلش کجاش

Try

'این کد میاد چک میکنه که اگه کانکشن بسته بود اونو باز میکنه
If con.State = ConnectionState.Closed Then
con.Open()
End If


'find that user is not registered before
con = New SqlConnection(My.Settings.Conn)
cmd = New SqlCommand()
cmd.Connection = con
Dim dt As New DataTable

cmd.CommandText = "SELECT * FROM Tbvip WHERE tell=@tell"
cmd.Parameters.Add("@tell", SqlDbType.NVarChar, 50).Value = txttell.Text
Dim DA As New SqlDataAdapter
DA.SelectCommand = cmd
dt.Clear()

DA.Fill(dt)

If dt.Rows.Count <> 0 Then
MsgBox("این شماره تلفن قبلا ثبت شده است")
Else



cmd.Parameters.Clear()

cmd.CommandText = "UPDATE Tbvip SET Name=@Name,family=@family,tell=@tell,tarikh=@tarik h,adres=@adres,inf=@inf WHERE(id=@id)"
cmd.Parameters.Add("@id", SqlDbType.Int).Value = txtcode
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 50).Value = TextBox4.Text
cmd.Parameters.Add("@family", SqlDbType.NVarChar, 50).Value = TextBox5.Text
cmd.Parameters.Add("@tell", SqlDbType.NVarChar, 50).Value = txttell.Text
cmd.Parameters.Add("@tarikh", SqlDbType.NVarChar, 50).Value = HM_FarsiCalendar3.Text
cmd.Parameters.Add("@adres", SqlDbType.NVarChar, 350).Value = TextBox7.Text
cmd.Parameters.Add("@inf", SqlDbType.Text).Value = txtinf.Text


Dim count As Integer
If con.State = ConnectionState.Open Then
count = cmd.ExecuteNonQuery()
con.Close()

If count > 0 Then



MessageBox.Show("تغییرات جدید اعمال شد")

Else : MessageBox.Show("مشتری مورد نظر پیدا نشد")

End If
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try

mohammad reza beizavi
پنج شنبه 20 شهریور 1393, 17:00 عصر
درود
من خیلی وقته با VB کد ننوشتم اما کدتون موردی نداره، کوئری رو توی خود بانک اطلاعاتی مثلا sql پک کردین ببینید چی بر می گردنه؟
از اینم بگذره مشکلتون اینه که کد اجرا نمیشه یا اجرا میشه ولی تلفنی که وجود داره رو میگه وجود نداره؟؟؟

piter11
پنج شنبه 20 شهریور 1393, 17:15 عصر
درود
من خیلی وقته با VB کد ننوشتم اما کدتون موردی نداره، کوئری رو توی خود بانک اطلاعاتی مثلا sql پک کردین ببینید چی بر می گردنه؟
از اینم بگذره مشکلتون اینه که کد اجرا نمیشه یا اجرا میشه ولی تلفنی که وجود داره رو میگه وجود نداره؟؟؟
سلام دوست عزیز اجرا میشه کد هیچ ارروری هم نداره ولی هویت سنجش که همین تشخیص تکراری بودن تلفن باشه کار نمیکنه !

mohammad reza beizavi
پنج شنبه 20 شهریور 1393, 17:26 عصر
خب یک braek point بزار روی خط If dt.Rows.Count <> 0 Then
برنامه رو اجرا کن تا برسه به این خط، حالا ببین توی dt اطلاعاتی داری یا نه؟
اگر اطلاعات باشه که مشکلی نیست. اما به نظر من هیچ اطلاعاتی با توجه به شرط کوئری پیدا نمیکنه.
1 سوال: مقدار فیلد تلفن عدد یا رشته؟؟؟؟

piter11
پنج شنبه 20 شهریور 1393, 17:40 عصر
مقدارش رشتس

mohammad reza beizavi
پنج شنبه 20 شهریور 1393, 18:07 عصر
اکی، پس اون BREAK POINT قبلی رو که گفتم چک کنید ببینید اصلا مقداری بر میگرده یا نه

gilsoft
پنج شنبه 20 شهریور 1393, 21:00 عصر
سلام دوست عزیز

از کد زیر استفاده کن :
If dt.Rows.Count > 0 Then MsgBox("این شماره تلفن قبلا ثبت شده است")
Else
'
'
'
End If
موفق باشید ...

piter11
پنج شنبه 20 شهریور 1393, 23:15 عصر
سلام دوست عزیز

از کد زیر استفاده کن :
If dt.Rows.Count > 0 Then MsgBox("این شماره تلفن قبلا ثبت شده است")
Else
'
'
'
End If
موفق باشید ...

خوب منم که همینو نوشتم نمیدونم عدد تکراری وارد کنی پیغامش درست ولی یه عددی دیگه وارد کنی واسه ویرایش میره تو try catch

mohammad reza beizavi
پنج شنبه 20 شهریور 1393, 23:17 عصر
نمی تونید کد و دیتابیش رو بذارید چک کنم؟؟؟

gilsoft
جمعه 21 شهریور 1393, 01:02 صبح
خوب منم که همینو نوشتم نمیدونم عدد تکراری وارد کنی پیغامش درست ولی یه عددی دیگه وارد کنی واسه ویرایش میره تو try catch

شما بجای <> از < استفاده کن ....

piter11
جمعه 21 شهریور 1393, 03:22 صبح
نمی تونید کد و دیتابیش رو بذارید چک کنم؟؟؟

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

piter11
جمعه 21 شهریور 1393, 03:23 صبح
نمی تونید کد و دیتابیش رو بذارید چک کنم؟؟؟


شما بجای <> از < استفاده کن ....

انجام دادام نشد

محمد آشتیانی
جمعه 21 شهریور 1393, 04:13 صبح
سلام
شما تکه کد مربوط به چک کردن مقادیر تکراری رو به این صورت بنویس ، ببین نتیجه چه خواهد شد


'find that user is not registered before
con = New SqlConnection(My.Settings.Conn)
cmd = New SqlCommand()
cmd.Connection = con
cmd.Parameters.AddWithValue("@tell", txttell.Text)
cmd.CommandText = "SELECT COUNT(tell) FROM Tbvip WHERE tell = @tell"
Dim count As Integer = CInt(cmd.ExecuteScalar)
If count > 0 Then
MsgBox("این شماره تلفن قبلا ثبت شده است")
Else


اگر باز هم کار نکرد ، شما میتونی توی SqlServer مستقیما کوئری که عرض کردم رو با یه شماره تلفن اجرا کنی و ببینی چه نتیجه ای برگردونده میشه