View Full Version : دليل اين پيغام خطا چي هست؟
bahar2008
دوشنبه 22 مهر 1387, 09:22 صبح
سلام دوستان عزيز
دليل اين پيغام خطا چي هست و به چه علتي اين پيغام خطا داده مي شه و آيا كسي تا به حال به اين پيغام برخورده؟:ناراحت:
http://i38.tinypic.com/b9apsw.jpg (http://s4.tinypic.com/b9apsw.jpg)
arsalansalar
دوشنبه 22 مهر 1387, 09:25 صبح
فکر کنم شما باید نوع فیلد"namedad"را عوض کنید.یا اندازه آن را افزایش دهید.
bahar2008
دوشنبه 22 مهر 1387, 09:40 صبح
اين پيغام براي هيچ خط خاصي صادر نمي شه و فقط موقع اجراي برنامه اين خطا اجرا مي شه و زماني اين خطا رو مي ده كه وقتي 2 بار كليك مي كنم روي سلول ديتا گريدم و مي خوام يك حرف اضافه كنم به محتويات داخل سلول (ويرايش اطلاعات قبلي ) نمايش داده مي شه :ناراحت::ناراحت:
اين هم كد برنامم كه ديتا گريدم هم به تيبل بانك بايند شده هست
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim cn As New SqlClient.SqlConnection
Dim dr As SqlDataReader
cn.ConnectionString = "Data Source=(local);Initial Catalog=project;Integrated Security=True"
Dim cmd As New SqlClient.SqlCommand
Dim i As Integer
Dim j As Integer
Dim k As Boolean
k = False
For i = 0 To DataGridView2.RowCount - 2
For j = i + 1 To DataGridView2.RowCount - 1
If DataGridView2.Rows.Item(i).Cells.Item(0).Value = DataGridView2.Rows(j).Cells(0).Value Then
MessageBox.Show("شماره داده تكراري است ")
k = True
End If
Next
Next
If k = False Then
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
With DataGridView2.CurrentRow
cmd.CommandText = " select * from dade2 where iddade='" & .Cells(0).Value & "'"
dr = cmd.ExecuteReader()
If dr.HasRows = True Then
dr.Close()
cmd.CommandText = " UPDATE dade2 SET namedade='" & .Cells(1).Value & "', vahedeandazegiri='" & _
.Cells(2).Value & "' WHERE iddade = " & .Cells(0).Value
cmd.ExecuteNonQuery()
Else
Dade2TableAdapter.Insert(.Cells(0).Value, .Cells(1).Value, .Cells(2).Value, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Button9.Enabled = True
End If
End With
cn.Close()
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
End If
End Sub
bahar2008
دوشنبه 22 مهر 1387, 09:42 صبح
نوع فيلد char هست و مقدار اون 50 هست در بانكم كه مقدارش رو به 60 هم تغيير دادم ولي هيچ فايده اي نداشت و دوباره همين پيغام رو مي داد :ناراحت:
mostafaaa
دوشنبه 22 مهر 1387, 10:45 صبح
اول بگو دیتا گریدت رو چطور پر کردی.
و دوم اینکه برای اینکه از ورود داده تکراری توی یه ستون جلو گیری کنی راههای خیلی بهتری هست.
DatGridView یه Event داره به نام DataError که میتونی از اون برای این کار استفاده کنی.
bahar2008
دوشنبه 22 مهر 1387, 11:03 صبح
قبلا كه گفتم ديتا گريدم رو بايند كردم به table و اطلاعاتش از طريق باند در ديتا گريد نمايش داده مي شه :لبخندساده:
از راهنماييتون در باره اطلاعات تكراري ممنونم :قلب:
mostafaaa
دوشنبه 22 مهر 1387, 11:32 صبح
دوست من به این مثال توجه کن .
Imports System.Data.OleDb
Public Class Form1
Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb"
Dim Connection As OleDbConnection
Dim Command As OleDbCommand
Dim DataAdapter As OleDbDataAdapter
Dim DTable As DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Connection = New OleDbConnection(ConnectionString)
Command = New OleDbCommand("SELECT ID,Name FROM tbl1", Connection)
DataAdapter = New OleDbDataAdapter(Command)
DTable = New DataTable
DataAdapter.Fill(DTable)
DTable.Columns("ID").Unique = True
Me.DataGridView1.DataSource = DTable
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
DataAdapter.UpdateCommand = New OleDbCommand("UPDATE tbl1 SET ID=@UID,Name=@UName", Connection)
DataAdapter.UpdateCommand.Parameters.Add("@UID", OleDbType.Integer).SourceColumn = "ID"
DataAdapter.UpdateCommand.Parameters.Add("@UName", OleDbType.Char).SourceColumn = "Name"
DataAdapter.InsertCommand = New OleDbCommand("INSERT INTO tbl1 VALUES(@IID,@IName)", Connection)
DataAdapter.InsertCommand.Parameters.Add("@IID", OleDbType.Integer).SourceColumn = "ID"
DataAdapter.InsertCommand.Parameters.Add("@IName", OleDbType.Char).SourceColumn = "Name"
DataAdapter.DeleteCommand = New OleDbCommand("DELET FROM tbl1 WHERE ID=@DID", Connection)
DataAdapter.DeleteCommand.Parameters.Add("@DID", OleDbType.Integer).SourceColumn = "ID"
DataAdapter.Update(DTable)
End Sub
Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArg s) Handles DataGridView1.DataError
If e.Context = 512 Then
MessageBox.Show("Item already exists!!")
ElseIf e.Context = 768 Then
MessageBox.Show("Item Type mismatchs!!")
End If
End Sub
End Class
تو این مثال اون چیزهایی رو که گفتم رعایت شده.
این خط از کد فیلدی رو که قرار داده تکراری نگیره به صورت Unique در میاره.
DTable.Columns("ID").Unique = True
و توی این Event هم میتونی خطاها رو مدیریت کنی .
Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArg s) Handles
DataGridView1.DataError
If e.Context = 512 Then
MessageBox.Show("Item already exists!!")
ElseIf e.Context = 768 Then
MessageBox.Show("Item Type mismatchs!!")
End If
End Sub
bahar2008
سه شنبه 23 مهر 1387, 09:49 صبح
ممنونم از لطفت دوست عزيز :قلب::قلب:
كدي كه داديد هر جور كه مي نويسمش يك جاييش خطا داره و درست اجرا نمي كنه
من ديتا گريدم رو بايند كردم و لطفا كدي بديد كه در اون ديتا گريد بايند شده باشه و حالا بتونم بدون خطا اطلاعاتم رو ويرايش كنم
mostafaaa
سه شنبه 23 مهر 1387, 10:38 صبح
به این Sample یه نگاهی بنداز فکر میکنم مشکلت رو حل کنه.
24404
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.