مشکل Update کردن با فیلد Autonumber در اکسس
باسلام و عرض خسته نباشید خدمت همه دوستان
من در برنامه ام یه مشکل عجیب دارم
به دستورات زیر توجه بفرمائید
PrivateSub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim con As OleDbConnection = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=bank.mdb;")
Dim command As OleDbCommand = New OleDbCommand
command.Connection = con
command.CommandText = "update table1 set nam=@nam, famil=@famil, tahsilat=@tahsilat, sokoonat=@sokoonat, ghad=@ghad,pedar=@pedar,nomre=@nomre where id = '" & TextBox7.Text & "'"
command.Parameters.AddWithValue("@nam", Trim(TextBox1.Text))
command.Parameters.AddWithValue("@famil", Trim(TextBox2.Text))
command.Parameters.AddWithValue("@tahsilat", Trim(ComboBox1.Text))
command.Parameters.AddWithValue("@sokoonat", Trim(TextBox4.Text))
command.Parameters.AddWithValue("@ghad", Trim(TextBox3.Text))
command.Parameters.AddWithValue("@pedar", Trim(TextBox3.Text))
command.Parameters.AddWithValue("@nomre", Trim(TextBox6.Text))
con.Open()
command.ExecuteNonQuery()
con.Close()
EndSub
textbox7 شماره id رکوردیست که کاربر در دیتاگرید اون رو انتخاب میکنه
من یه فیلد Id در جدولم دارم که از نوع autonumber هست
متاسفانه دستور update ام با وجود این فیلد کار نمیکنه
اما زمانیکه این فیلد رو از autonumber به text تبدیل میکنم مشکلم حل میشه
آیا امکانش هست دستور update با نوع فیلد autonumber مشکل داشته باشه؟
ممنون میشم کمکم کنید
یاعلی
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
نوع فیلد id شما عددی است در صورتی که آن را با مقداری رشته ای مقایسه می کنی. کتیشن ('') های قبل و بعد TextBox7 را حذف کن و دوباره امتحان کن.
بهتر است که مقدار TextBox7 را نیز به عدد تبدیل کنی. یعنی Val(TextBox7.Text)
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
سلام
ممنون از توضیحاتتون
این راه رو هم امتحان کردم
متاسفانه نشد
به این دستور که میرسه اشکال میگیره :
command.ExecuteNonQuery()
نکته دیگه اینکه من با همین فرمت دستور delete ام رو به درستی اجرا میکنم:
Dim con As OleDbConnection = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=bank.mdb;")
Dim command As OleDbCommand = New OleDbCommand
command.Connection = con
command.CommandText = "delete * from table1 where id=@id"
command.Parameters.AddWithValue("@id", Trim(TextBox7.Text))
con.Open()
command.ExecuteNonQuery()
con.Close()
ممنون میشم راهنمایم کنید
یاعلی
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
برای Update کردن هم ID را به صورت پارامتر بفرست. احتمالا مشکل از همون نوع داده باشه. اگر نشد.
1- در قسمت Server Explorer کد SQL که تولید می کنی را اجرا کن ببین خطایی که میده چیه.
2- اگر نشد؛ متن پیغام خطا را کپی کن اینجا یا از پیغام خطا عکس بگیر ببینیم مشکلش چیه!
1 ضمیمه
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
سلام خدمت همه عزیزان
پروژه ام رو جهت مشاهده و راهنمایی در اینجا آپلود میکنم
ابتدا رکورد مورد نظر رو انتخاب کنید ، سپس جهت ویرایش رکوردها بر روی دکمه ویرایش کلیک کنید ، بعد از انجام تغییرات بر روی دکمه ثبت تغییرات کلیک کنید تا خطای مربوطه رو مشاهده بفرمائید
ممنون و متشکر از لطف شما
یاعلی
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
با سلام وتبریک سال نو ....
دوست عزیز شما تا تونسته بودین لقمه رو هی دورسرتون چرخونده بودی ......... :گیج: واسه همچین کاری اصلاً نیاز به این همه کد نبود که !!! مشکل شما از Bind کردن کنترل های تکس بود . کدها رو این جوری تغییر بده مشکلتون حل میشه ...
Imports System.Data.OleDb
Public Class Form1
Dim cnnstring As String = "provider=microsoft.jet.oledb.4.0;data source=bank.mdb;"
Sub loaddata()
Dim ad As New OleDbDataAdapter("Select * from Table1", cnnstring)
Dim dt As New DataTable
ad.Fill(dt)
grdAuthorTitles.DataSource = dt
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
loaddata()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Try
Dim cnn As New OleDbConnection(cnnstring)
Dim cmd As New OleDbCommand("update table1 set nam=@nam, famil=@famil, tahsilat=@tahsilat, sokoonat=@sokoonat, ghad=@ghad,pedar=@pedar,nomre=@nomre where id = " & CInt(TextBox7.Text), cnn)
If cnn.State = ConnectionState.Closed Then cnn.Open()
With cmd
.Parameters.Clear()
.Parameters.AddWithValue("@nam", Trim(TextBox1.Text))
.Parameters.AddWithValue("@famil", Trim(TextBox2.Text))
.Parameters.AddWithValue("@tahsilat", Trim(ComboBox1.Text))
.Parameters.AddWithValue("@sokoonat", Trim(TextBox4.Text))
.Parameters.AddWithValue("@ghad", Trim(TextBox3.Text))
.Parameters.AddWithValue("@pedar", Trim(TextBox5.Text))
.Parameters.AddWithValue("@nomre", Trim(TextBox6.Text))
.ExecuteNonQuery()
End With
cnn.Close()
MsgBox("Done !", MsgBoxStyle.Information)
loaddata()
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Exclamation)
End Try
End Sub
Private Sub grdAuthorTitles_CellMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArg s) Handles grdAuthorTitles.CellMouseUp
If Not grdAuthorTitles.Rows.Count = 0 Then
TextBox1.Text = grdAuthorTitles.CurrentRow.Cells(1).Value
TextBox2.Text = grdAuthorTitles.CurrentRow.Cells(2).Value
ComboBox1.Text = grdAuthorTitles.CurrentRow.Cells(3).Value
TextBox3.Text = grdAuthorTitles.CurrentRow.Cells(5).Value
TextBox4.Text = grdAuthorTitles.CurrentRow.Cells(4).Value
TextBox5.Text = grdAuthorTitles.CurrentRow.Cells(6).Value
TextBox6.Text = grdAuthorTitles.CurrentRow.Cells(7).Value
TextBox7.Text = grdAuthorTitles.CurrentRow.Cells(0).Value
End If
End Sub
End Class
موفق باشید ./
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
دوستان گرامی
لطفا به مسایل ابتدایی هم توجه کنین! مشکل از این بود که پیش از مقدار دهی Command کانکشن را باز نکرده بود!!!!!!!!!!!!!!!1
نقل قول: مشکل Update کردن با فیلد Autonumber در اکسس
سلام
کانکشن که باز بود:
کد HTML:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim con As OleDbConnection = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=bank.mdb;")
Dim command As OleDbCommand = New OleDbCommand
command.Connection = con
command.CommandText = "update table1 set nam=@nam, famil=@famil, tahsilat=@tahsilat, sokoonat=@sokoonat, ghad=@ghad,pedar=@pedar,nomre=@nomre where id = '" & Val(TextBox7.Text) & "'"
'command.Parameters.AddWithValue("@id", Trim(TextBox7.Text))
command.Parameters.AddWithValue("@nam", Trim(TextBox1.Text))
command.Parameters.AddWithValue("@famil", Trim(TextBox2.Text))
command.Parameters.AddWithValue("@tahsilat", Trim(ComboBox1.Text))
command.Parameters.AddWithValue("@sokoonat", Trim(TextBox4.Text))
command.Parameters.AddWithValue("@ghad", Trim(TextBox3.Text))
command.Parameters.AddWithValue("@pedar", Trim(TextBox3.Text))
command.Parameters.AddWithValue("@nomre", Trim(TextBox6.Text))
con.Open()
command.ExecuteNonQuery()
con.Close()
End Sub