PDA

View Full Version : ثبت تغییرات در بانک اکسس



omid85m
دوشنبه 11 اردیبهشت 1391, 13:01 عصر
سلام خدمت همه دوستان
من یه برنامه دارم که خب ورود اطلاعات هست و یک دیتا گرید که اطلاعات رو نمایش میده
حالا هر آدم یا ماشینی که خارج میشه یک ساعت ورود هم داره که کاربر اطلاعات ثبت شده رو جستجو میکنه و ساعت ورود رو وارد میکنه . حالا میخوام ساعت ورود که وارد شد ذخیره بشه

یه دکمه گذاشتم با این کد Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
Dim cmd As New OleDbCommand
With cmd
.Connection = my_con
.CommandType = Data.CommandType.Text
.CommandText = "update carsherkat set rannande='" & TextBox10.Text & "' , machinnumber='" & TextBox9.Text & "' , khorojinumber='" & TextBox8.Text & "' ,vorodsaat='" & TextBox21.Text & "' , khorojsaat='" & TextBox20.Text & "', mabda='" & TextBox7.Text & "' , maghsad='" & TextBox6.Text & "' , paletstyle='" & ComboBox1.Text & "', paletstyle2='" & ComboBox3.Text & "' , paletnumber='" & TextBox11.Text & "' , paletnumber2='" & TextBox30.Text & "' , ezharnamenumber='" & TextBox12.Text & "' , tozihat='" & RichTextBox2.Text & "' , tarikh='" & TextBox28.Text & "'"
If .Connection.State <> ConnectionState.Open Then
.Connection.Open()
End If
.ExecuteNonQuery()
my_con.Close()
End With
End Sub

ولی وقتی اطلاعات وارد میشه و کاربر دکمه ثبت تغییرات رو میزنه همه رکورد های من به اون چیزی که ثبت کرده تبدیل میشه یعنی رو همه رکورد ها ذخیره میشه .
میشه یه اصلاحیه واسه کد بهم بدید ؟

ممنون

ROSTAM2
دوشنبه 11 اردیبهشت 1391, 13:30 عصر
Data.CommandType.Text

.CommandText = "update carsherkat set rannande='" & TextBox10.Text & "' , machinnumber='" & TextBox9.Text & "' , khorojinumber='" & TextBox8.Text & "' ,vorodsaat='" & TextBox21.Text & "' , khorojsaat='" & TextBox20.Text & "', mabda='" & TextBox7.Text & "' , maghsad='" & TextBox6.Text & "' , paletstyle='" & ComboBox1.Text & "', paletstyle2='" & ComboBox3.Text & "' , paletnumber='" & TextBox11.Text & "' , paletnumber2='" & TextBox30.Text & "' , ezharnamenumber='" & TextBox12.Text & "' , tozihat='" & RichTextBox2.Text & "' , tarikh='" & TextBox28.Text & "'"

راستش و بخوای اینجوری مشخص نیست چی به چیه ! شما خودتون دچار سردرگمی نمی شین ؟!!!
قبل از همه برای این دستور یه تابع جمع و جور بنویسید که اینهمه درهم و بر هم نباشه !


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

یک سوال پیش میاد: جدولی که شما اطلاعات در اون ذخیره می کنید فیلد ID برای اون تعریف شده یا نه؟
برای ثبت اطلاعات منحصر و بروزرسانی دقیق به فیلد ID که با هر رکورد جدید یه مقدار جدید صعودی بگیره لازمه

omid85m
دوشنبه 11 اردیبهشت 1391, 13:45 عصر
خب واسه همین کمک خواستم دیگه :لبخند:
من رو اطلاعات دیتاگرید کلیک میکنم اطلاعات رو تکست باکس ها میشینه
بعد کاربر ویرایشش میکنه
ولی وقتی با این کد آپدیت میشه
همه رکورد هام مثل همین رکورد میشه

ROSTAM2
دوشنبه 11 اردیبهشت 1391, 13:49 عصر
سوال منو جواب ندادی

جدولی که شما اطلاعات در اون ذخیره می کنید فیلد ID برای اون تعریف شده یا نه؟

omid85m
دوشنبه 11 اردیبهشت 1391, 13:58 عصر
بله تعریف شده . چطور میتونم ازش کمک بگیرم
ممنون میشم اگر سورس کمکی بتونید معرفی کنید .

ROSTAM2
دوشنبه 11 اردیبهشت 1391, 15:32 عصر
اینم لینک دانلو سورس یه منبع اکسس

http://uplod.ir/c0ffyneomtif/WindowsApplication3.zip.htm

فرید نجفلو
دوشنبه 11 اردیبهشت 1391, 15:45 عصر
دوست عزیز شما باید یک فیلد برای مثال ID از نوع AutoNumber به جدول اضافه کنید که کلید جدول باشه ( یا هر فیلدی که خودتون به عنوان کلید ایجاد می کنید)
بعد در آخر همون دستور کد زیر رو اضافه کنید
& " WHERE ID = " & Me.DataGridView1.SelectedRow.Cells("ID").Value.Tostring

omid85m
سه شنبه 12 اردیبهشت 1391, 09:15 صبح
دوست عزیز شما باید یک فیلد برای مثال ID از نوع AutoNumber به جدول اضافه کنید که کلید جدول باشه ( یا هر فیلدی که خودتون به عنوان کلید ایجاد می کنید)
بعد در آخر همون دستور کد زیر رو اضافه کنید
& " WHERE ID = " & Me.DataGridView1.SelectedRow.Cells("ID").Value.Tostring

ممنون بابت کد
ولی من یک مشکل برخوردم
" WHERE ID =' " & DataGridView2.SelectedRows(0).Cells(0).Value & ""
این کد رو به انتهای کد آپدیت اضافه کردم ولی این ارور رو باهاش مواجه شدم
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

در ضمن من ID رو به دیتا گرید ویو اضافه کردم نه با 0 و نه با -1 و نه با یک هیچ کدوم جواب نداد و این پیغام رو داد ...

مشکل کجاست و چی رو اشتباه انجام دادم ؟ vb2010 کار میکنم در ضمن ...

davood-ahmadi
سه شنبه 12 اردیبهشت 1391, 10:57 صبح
ولی من یک مشکل برخوردم
" WHERE ID =' " & DataGridView2.SelectedRows(0).Cells(0).Value & ""
این کد رو به انتهای کد آپدیت اضافه کردم ولی این ارور رو باهاش مواجه شدم
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

در ضمن من ID رو به دیتا گرید ویو اضافه کردم نه با 0 و نه با -1 و نه با یک هیچ کدوم جواب نداد و این پیغام رو داد ...

مشکل کجاست و چی رو اشتباه انجام دادم ؟ vb2010 کار میکنم در ضمن ...

کد اصلاحی :

" WHERE ID = " & DataGridView2.SelectedRows(0).Cells(0).Value

ROSTAM2
سه شنبه 12 اردیبهشت 1391, 13:32 عصر
شما باید selectionMode از Datagridview رو برابر FullRowSelect مقدار بدید
بعدشم باید یه شرط بذارید اگه SelectedRows.Count مساوی با 1 بود یا بیشتر از 0

omid85m
سه شنبه 12 اردیبهشت 1391, 17:32 عصر
کد اصلاحی :

" WHERE ID = " & DataGridView2.SelectedRows(0).Cells(0).Value



کد اصلاحی هم همون ارور رو میده

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

omid85m
سه شنبه 12 اردیبهشت 1391, 17:33 عصر
شما باید selectionMode از Datagridview رو برابر FullRowSelect مقدار بدید
بعدشم باید یه شرط بذارید اگه SelectedRows.Count مساوی با 1 بود یا بیشتر از 0

میشه لطف کنید خط کدش رو برام بنویسید . با 2010 که نتونستم ...
ممنون

فرید نجفلو
سه شنبه 12 اردیبهشت 1391, 18:09 عصر
میشه لطف کنید خط کدش رو برام بنویسید . با 2010 که نتونستم ...
ممنون
if DataGridView2.SelectedRows.Count<= 0 then exit sub
و selectionMode هم که در پروپورتی گرید هست و باید انتخاب کنید

omid85m
چهارشنبه 13 اردیبهشت 1391, 10:10 صبح
الان اون ارور حل شد ولی ارور دیگه ای اومده اونم به این شرح

Syntax error in string in query expression 'ID = '1'

فرید نجفلو
چهارشنبه 13 اردیبهشت 1391, 13:23 عصر
سلام
کل کوری رو بذارید تا ببینیم چی نوشتید

omid85m
چهارشنبه 13 اردیبهشت 1391, 14:53 عصر
سلام
کل کوری رو بذارید تا ببینیم چی نوشتید

من یه گرید ویو دارم که وقتی روی یه ردیفش کلیک میکنم فرمم رو با اون اطلاعات پر میکنه
حالا میخوام محتویات یه تکست باکسو تغییر بدم و با زدن دکمه تغییرات ثبت بشه

برای دستور دکمه این کد رو نوشتم

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
Dim cmd As New OleDbCommand
With cmd
.Connection = my_con
.CommandType = Data.CommandType.Text
.CommandText = "update carsherkat set rannande='" & TextBox10.Text & "' , machinnumber='" & TextBox9.Text & "' , khorojinumber='" & TextBox8.Text & "' ,vorodsaat='" & TextBox21.Text & "' , khorojsaat='" & TextBox20.Text & "', mabda='" & TextBox7.Text & "' , maghsad='" & TextBox6.Text & "' , paletstyle='" & ComboBox1.Text & "', paletstyle2='" & ComboBox3.Text & "' , paletnumber='" & TextBox11.Text & "' , paletnumber2='" & TextBox30.Text & "' , ezharnamenumber='" & TextBox12.Text & "' , tozihat='" & RichTextBox2.Text & "' , tarikh='" & TextBox28.Text & "' WHERE ID = '" & DataGridView2.CurrentRow.Cells(0).Value.ToString & ""
If .Connection.State <> ConnectionState.Open Then
.Connection.Open()
End If
.ExecuteNonQuery()
my_con.Close()
End With
End Sub
End Class
که اون ارور رو میده
در ضمن ستون اول گرید ویو من هم ID هست که از نوع autonumber در بانک اکسس موجوده

فرید نجفلو
چهارشنبه 13 اردیبهشت 1391, 20:48 عصر
سلام
دوست عزیز قسمت Where رو به شکل زیر تغییر بدید ببینید حل میشه یا نه(تک نقل قول ها حذف شدن):

& "' WHERE ID = " & DataGridView2.CurrentRow.Cells(0).Value.ToString

omid85m
شنبه 16 اردیبهشت 1391, 06:56 صبح
سلام
دوست عزیز قسمت Where رو به شکل زیر تغییر بدید ببینید حل میشه یا نه(تک نقل قول ها حذف شدن):

& "' WHERE ID = " & DataGridView2.CurrentRow.Cells(0).Value.ToString


بسیار عالی . از کمکتون واقعا ممنون . مشکل حل شد ...