نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
khashaya
من دستور آپدیت رو به صورت زیر نوشتم اما خطا میده
جالب اینه که این کد رو در یه پروژه جدا گانه استفاده کردم و بدون مشکل اجرا میشه
ولی اینجا خطای syntax update eror رو میده
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
con = New System.Data.OleDb.OleDbConnection("provider=micros oft.jet.oledb.4.0;data source=D:\poroje payani\1\web froshgah\logindb.mdb")
con.Open()
cmd = New System.Data.OleDb.OleDbCommand("update kala set code='" + txteditcod.Text + "',name='" + txteditnam.Text + "',price='" + txteditprc.Text + "',image='" + txteditaks.Text + "' where code=@code", con)
cmd.Parameters.AddWithValue("@name", txteditnam.Text)
cmd.Parameters.AddWithValue("@code", txteditcod.Text)
cmd.Parameters.AddWithValue("@price", txteditprc.Text)
cmd.Parameters.AddWithValue("@image", txteditaks.Text)
cmd.ExecuteNonQuery()
con.Close()
بانکم اکسس هست و فیلدهای بانکم همه از نوع text هستن به جز فیلد code که از نوع number هست و فیلد code کلید اصلی بانکمم هست
خیلی ممنون میشه اگر کسی راه حلی بهم پیشنهاد کنه چون واقعا کارم گیره و هفته آینده باید این پروژه رو تحویل بدم
فکر میکنم مشکل عملگر + باشه که استفاده کردید ! چون فیلد Code شما عددی هستش وقتی از + استفاده میکنید میخواد String شما را با اون عدد جمع کنه !
اینجوری یه تست کنید :
cmd = New System.Data.OleDb.OleDbCommand("update kala set code='" & txteditcod.Text & "',name='" & txteditnam.Text & "',price='" & txteditprc.Text & "',image='" & txteditaks.Text & "' where code=@code", con)
در ضمن Connection String تون هم مشکل داره:
provider=micros oft.jet
provider=microsoft.jet
نقل قول: مشکل با دستور آپدیت
شما این تیکه رو حذف و امتحان کنید:
code='" + txteditcod.Text + "',
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
Alirezanet
فکر میکنم مشکل عملگر + باشه که استفاده کردید ! چون فیلد Code شما عددی هستش وقتی از + استفاده میکنید میخواد String شما را با اون عدد جمع کنه !
اینجوری یه تست کنید :
cmd = New System.Data.OleDb.OleDbCommand("update kala set code='" & txteditcod.Text & "',name='" & txteditnam.Text & "',price='" & txteditprc.Text & "',image='" & txteditaks.Text & "' where code=@code", con)
احتمال شما کمه
احتمال زیاد ایشون چون داخل دستور Update کلید اصلی رو هم set می کنن خطا میگیره
و یا اینکه کلید اصلی از نوع عددی هست و دارن یه رشته می فرستن (با تک نقل قول)
در هر دو صورت نیازی به set ;vnk کلید اصلی نیست
نقل قول: مشکل با دستور آپدیت
دوستان اول مرسی که جواب دادید
اما هر دو تا کاری که گفتید رو انجام دادم ولی بازم به جواب نرسیدم :ناراحت:
هم به جای + از عملگر & استفاده کردم هم code رو حذف کردن از قسمت set ولی بازم فایده نداشت
بازهم این پیغام رو میده Syntax error in UPDATE statement.
دیگه عقلم به جایی نمیرسه
یک نکته دیگه که هست بانکم یک جدول دیگه هم داره که تو اون جدول فیلد code وجود داره و کلید هم هست
اما من ارتباطی بین این دو تا جدول برقرار نکردم کلید خارجی تعریف نکردم براشون
ممکن ایراد از اون باشه؟
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
khashaya
دوستان اول مرسی که جواب دادید
اما هر دو تا کاری که گفتید رو انجام دادم ولی بازم به جواب نرسیدم :ناراحت:
هم به جای + از عملگر & استفاده کردم هم code رو حذف کردن از قسمت set ولی بازم فایده نداشت
بازهم این پیغام رو میده Syntax error in UPDATE statement.
دیگه عقلم به جایی نمیرسه
یک نکته دیگه که هست بانکم یک جدول دیگه هم داره که تو اون جدول فیلد code وجود داره و کلید هم هست
اما من ارتباطی بین این دو تا جدول برقرار نکردم کلید خارجی تعریف نکردم براشون
ممکن ایراد از اون باشه؟
نه ربطی به اون نداره !
1بار query تون رو توی خود Access اجرا کنید ببینید مشکل نداره !
بعد من الان دقت میکردم دیدم شما 4 پارامتر دارید میفرستید ولی فقط از Code استفاده میکنید ! یا مقدارتون رو با پارامترها Set کنید یا توی Command !
نقل قول: مشکل با دستور آپدیت
سلام کدتون رو به شکل زیر تغییر بدین ببین درست میشه :
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
con = New System.Data.OleDb.OleDbConnection("provider=micros oft.jet.oledb.4.0;data source=D:\poroje payani\1\web froshgah\logindb.mdb")
con.Open()
cmd = New System.Data.OleDb.OleDbCommand("update kala set name=@name,price=@price,image=@image where code=@code", con)
cmd.Parameters.AddWithValue("@name", txteditnam.Text)
cmd.Parameters.AddWithValue("@price", txteditprc.Text)
cmd.Parameters.AddWithValue("@image", txteditaks.Text)
cmd.Parameters.AddWithValue("@code", txteditcod.Text)
cmd.ExecuteNonQuery()
con.Close()
نقل قول: مشکل با دستور آپدیت
سلام
اینو تست کن:
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
con = New System.Data.OleDb.OleDbConnection("provider=micros oft.jet.oledb.4.0;data source=D:\poroje payani\1\web froshgah\logindb.mdb")
con.Open()
cmd = New System.Data.OleDb.OleDbCommand("update kala set name=@name ,price=@price ,image=@image where code=@code", con)
cmd.Parameters.AddWithValue("@name", txteditnam.Text)
cmd.Parameters.AddWithValue("@code", txteditcod.Text)
cmd.Parameters.AddWithValue("@price", txteditprc.Text)
cmd.Parameters.AddWithValue("@image", txteditaks.Text)
cmd.ExecuteNonQuery()
con.Close()
شما دارید فیلد کد رو با شرط برابری فیلد کد با یک مقداری, با همون مقدار آپدیت می کنید. پس لازم نیست که فیلد کد آپدیت شه. البته این خطا نیست.
موفق باشید
نقل قول: مشکل با دستور آپدیت
من یک پروژه دیگه ایجاد کردم با یک بانک جدید
تو اون دقیقا همون کدی رو که در پست اول نوشتم قرار دادم و جواب داد
واقعا دیگه نمی فهمم چرا اونجا جواب میده ولی تو پروژه اصلی نه!!!!!
نقل قول: مشکل با دستور آپدیت
نقل قول:
من یک پروژه دیگه ایجاد کردم با یک بانک جدید
بانک رو عوض نکنید ! ببینید مشکل داره !
نقل قول: مشکل با دستور آپدیت
براي من تقريبا يه اتفاق مشابهي افتاد كه با از نو نوشتن برنامه حل شد نمي دونم چرا ولي فكر مي كنم بعضي وقتا اين مشكل از خود ويژوال استديو ايجاد مي شه تا حالا دو با اين مشكل افتاده كه پروژه رو از نو ايجاد كردم حل شد ولي هيچ دليل قانع كننده اي پيدا نكردم البته پروژه من كاملا فرق داشت ولي دقيقا همين ارور رو مي داد
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
Alirezanet
بانک رو عوض نکنید ! ببینید مشکل داره !
اینکارو کردم دوباره همون ارور رو داد
به نظرتون مشکل از بانکه؟ چطور میشه مطمئن شد؟
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
kiarashk
براي من تقريبا يه اتفاق مشابهي افتاد كه با از نو نوشتن برنامه حل شد نمي دونم چرا ولي فكر مي كنم بعضي وقتا اين مشكل از خود ويژوال استديو ايجاد مي شه تا حالا دو با اين مشكل افتاده كه پروژه رو از نو ايجاد كردم حل شد ولي هيچ دليل قانع كننده اي پيدا نكردم البته پروژه من كاملا فرق داشت ولي دقيقا همين ارور رو مي داد
یعنی کل پروژه رو از نو بنویسم یا فقط این تیکه که ایراد داره؟
منم فکر می کنم مشکل از ویژوال باشه به چند نفر که نشون دادم همه تعجب می کنن میگن کد درسته و باید کار کنه
حتی تغییراتی که دوستان گفتن هم انجام دادم ولی بازم نشد
نقل قول: مشکل با دستور آپدیت
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
khashaya
یعنی کل پروژه رو از نو بنویسم یا فقط این تیکه که ایراد داره؟
منم فکر می کنم مشکل از ویژوال باشه به چند نفر که نشون دادم همه تعجب می کنن میگن کد درسته و باید کار کنه
حتی تغییراتی که دوستان گفتن هم انجام دادم ولی بازم نشد
بله من new project ايجاد كردم و فقط كد ها رو كپي كردم البته ديدم كه مشابه اين اتفاق براي كامپايلر هاي ديگه هم افتاده
نقل قول: مشکل با دستور آپدیت
نقل قول:
نوشته شده توسط
khashaya
اینکارو کردم دوباره همون ارور رو داد
به نظرتون مشکل از بانکه؟ چطور میشه مطمئن شد؟
خوب اگه شما توی پروژه جدیدتون برای اتصال به DB همین اررور رو میبینید احتمالا مشکل از دیتابیس هستش ! احتمال داره اشتباهی توی طراحیش کرده باشید . مثلا شاید کلید اصلیتون AutoNumber باشه و توی جدیده نباشه! البته این مثال بود موارد دیگه رو هم چک کنید
نقل قول: مشکل با دستور آپدیت
دوستان ممنون از همه من مشکلم حل شد
کد درست رو گفتم بیام بذارم که اگه در آینده کسی به مشکل بر خورد بتونه حل کنه
ظاهرا مشکل این بود که اسم یکی از فیلدهای جدول رو کلمه کلیدی در نظر می گرفت ( احتمالا image ) که با استفاده از کلوشه مشکل حل شد
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
Dim sql As String
con = New System.Data.OleDb.OleDbConnection("provider=micros oft.jet.oledb.4.0;data source=D:\poroje payani\1\web froshgah\logindb.mdb")
con.Open()
sql = "update kala set [name]='" + txteditnam.Text + "',[price]='" + txteditprc.Text + "',[image]='" + txteditaks.Text + "'where [code]=@code"
cmd = New System.Data.OleDb.OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("@code", Convert.ToInt32(txteditcod.Text)
cmd.ExecuteNonQuery()
con.Close()