PDA

View Full Version : سوال: خطا در کد ویرایش



jpjpjp
سه شنبه 29 مهر 1393, 10:45 صبح
میشه بگید مشکل این کد چیه؟
توی ویرایش کردن خطای سینتکس میده نمیدونم چیکارش کنم...

cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\testdb.accdb");
OleDbCommand command = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();

command.CommandType = CommandType.Text;
command.CommandText = "UPDATE tbltest SET name='" + txtName.Text + "' , number='" + txtNumber.Text + "' WHERE ID=" + txtId.Text;

da.SelectCommand = command;
command.Connection = cn;

cn.Open();
command.ExecuteNonQuery();
cn.Close();

gerdioz
سه شنبه 29 مهر 1393, 11:36 صبح
سلام دستورت مشکلی نداره
فقط باید ببینی تو بانکت رابطه خاصی کلیدی و یا نوع
اینها رو بررسی کن

behzadkhan
سه شنبه 29 مهر 1393, 14:14 عصر
با سلام

پیغام خطا و شماره آن خط را برای راهنمایی بهتر قرار دهید.

با تشکر

jpjpjp
سه شنبه 29 مهر 1393, 16:42 عصر
متن خطا

Syntax error in UPDATE statement.

mortezasar
سه شنبه 29 مهر 1393, 16:56 عصر
سلام فیلد ID در جدولت از چه نوعی هست ؟عدد یا رشته ؟

jpjpjp
سه شنبه 29 مهر 1393, 17:01 عصر
سلام فیلد ID در جدولت از چه نوعی هست ؟عدد یا رشته ؟

AutoNumber انتخابه
راستی یه چیزی وقتی این خط رو مینویسم درست عمل میکنه
command.CommandText = "update tbltest set name= '" + txtName.Text + "' where ID=" + txtId.Text;

mortezasar
سه شنبه 29 مهر 1393, 17:09 عصر
عزیز دل برادر یک (") کم گذاشتی یکی ام نه بیششتر و (+) هم نذاشتی به انتهای دستور آپدیت دقت کن برادر :متفکر:
در کل این قسمت کدت خطا داره برو درستش کن برادر برو برو :عصبانی++::لبخندساده:

WHERE ID=" + txtId.Text;

behzadkhan
سه شنبه 29 مهر 1393, 19:52 عصر
با سلام

طبق گفته دوستمون:


command.CommandText = "update tbltest set name= '" + txtName.Text + "' where ID='" + txtId.Text + "'";





با تشکر

jpjpjp
چهارشنبه 30 مهر 1393, 08:29 صبح
عزیز دل برادر یک (") کم گذاشتی یکی ام نه بیششتر و (+) هم نذاشتی به انتهای دستور آپدیت دقت کن برادر :متفکر:
در کل این قسمت کدت خطا داره برو درستش کن برادر برو برو :عصبانی++::لبخندساده:

WHERE ID=" + txtId.Text;


این کدی که تو خط زیر نوشتم درست عمل میکنه ولی وقتی میخام number هم ویرایش بشه خطا میگیره (خط دوم).
command.CommandText = "update tbltest set name= '" + txtName.Text + "' where ID=" + txtId.Text;

command.CommandText = "UPDATE tbltest SET name='" + txtName.Text + "' , number='" + txtNumber.Text + "' WHERE ID='" + txtId.Text+"'";

behzadkhan
چهارشنبه 30 مهر 1393, 10:00 صبح
با سلام

پیغام خطا را بذار تا بهتر بتونیم کمکت کنیم.

با تشکر

gerdioz
چهارشنبه 30 مهر 1393, 10:48 صبح
number='" + txtNumber.Text + "'
نشون دهنده اینه که فیلد نامبر شما به جایی لینک هست
شاید کلید خارجی باشه ؟

jpjpjp
چهارشنبه 30 مهر 1393, 11:48 صبح
با سلام

پیغام خطا را بذار تا بهتر بتونیم کمکت کنیم.

با تشکر

متن خطا

Syntax error in UPDATE statement.

RIG000
چهارشنبه 30 مهر 1393, 11:57 صبح
مننکردم تا حالا این کار رو !!!
اما شما موقع ثبت داری خودت ID میدی که حالا بخای ID رو عوض کنی.!!
مگه ID شما AUTONUMBER نیست؟ نمیشه UPDATESH کرد! من تا حالا نشده که ببینم اینکار رو میکنن حداقل

RIG000
چهارشنبه 30 مهر 1393, 11:58 صبح
الان ای NUMBER هم ID هست؟
یانه؟

RIG000
چهارشنبه 30 مهر 1393, 12:16 عصر
من موندم چرا دوستا ن اصلا نمیگن که شما پارامتری بر خورد کنید با داده ها تون ... و نه اینجوری کد بزنید.

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

OleDbConnection CON = new OleDbConnection(); CON.ConnectionString = strcon;
OleDbCommand cmd =
new OleDbCommand(
"UPDATE Table1 SET name=@name , number=@number WHERE id = " +
textBox3.Text + " ", CON);
cmd.Parameters.AddWithValue("@name", textBox1.Text);
cmd.Parameters.AddWithValue("@number", textBox2.Text);
CON.Open();
cmd.ExecuteNonQuery();
CON.Close();

behzadkhan
چهارشنبه 30 مهر 1393, 14:01 عصر
با سلام

محبت کن کد sql این جدولی(tbltest) را که باهاش کار می کنی را بزار.

با تشکر

jpjpjp
چهارشنبه 30 مهر 1393, 15:43 عصر
مننکردم تا حالا این کار رو !!!
اما شما موقع ثبت داری خودت ID میدی که حالا بخای ID رو عوض کنی.!!
مگه ID شما AUTONUMBER نیست؟ نمیشه UPDATESH کرد! من تا حالا نشده که ببینم اینکار رو میکنن حداقل

اون ID واسه اینه که یعنی وقتی شما تو تکس باکست ID (شماره ردیف) مورد نظر رو وارد میکنی ویرایش بشه.
یعنی شما تو تکس باکس (txtEdit) یه شماره ردیف مینویسی بعد میای تو تکس باکس name نام جدید و تکس باکس number تلفن جدید رو مینویسی و وقتی دکمه ویرایش رو میزنی میره جای قبلیه میشینه.

اینم کد ویرایش:
بیزحمت یه نفر بگه این چرا خطای سینتکسی میده آخه جاییش مشکل نداره (اگه فقط name رو آپدیت کنم مشکلی پیش نمیاد ولی وقتی number هم به ادامه دستورات آپدیت اضافه میکنم ارور میده)
cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source=|DataDirectory|\\testdb.accdb");
OleDbCommand command = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();

command.CommandType = CommandType.Text;
command.CommandText = "UPDATE tbltest SET name='" + txtName.Text + "' , number='" + txtNumber.Text + "' WHERE ID=" + txtEdit.Text;

da.SelectCommand = command;
command.Connection = cn;

cn.Open();
command.ExecuteNonQuery();
cn.Close();

UpdateRecords();

RIG000
چهارشنبه 30 مهر 1393, 16:10 عصر
اخر txtedit رو اینجوری بنویس
;"'"+
کدی که برات گذاشتم رو تست گرفتی؟

jpjpjp
چهارشنبه 30 مهر 1393, 16:33 عصر
اخر txtedit رو اینجوری بنویس
;"'"+
کدی که برات گذاشتم رو تست گرفتی؟

خیلی ممنون ولی اینطوری هم تست کردم نشد.
کدتون هم تست کردم:متعجب:

RIG000
چهارشنبه 30 مهر 1393, 16:41 عصر
کد من که رو برنامه انجام داده بودم رو گذاشته بودم. شما اینجوری بنویس برادر

string cmdtext = "UPDATE Table1 SET [name]='" + textBox2.Text + "', [number]='" + textBox4.Text + "' WHERE ID=" + textBox1.Text ;
اینم تست گرفتم گذاشتم :) یکم با دقت برای خودتو جایگزین کن :)

jpjpjp
چهارشنبه 30 مهر 1393, 16:57 عصر
کد من که رو برنامه انجام داده بودم رو گذاشته بودم. شما اینجوری بنویس برادر

string cmdtext = "UPDATE Table1 SET [name]='" + textBox2.Text + "', [number]='" + textBox4.Text + "' WHERE ID=" + textBox1.Text ;
اینم تست گرفتم گذاشتم :) یکم با دقت برای خودتو جایگزین کن :)

درست شد دستت درد نکنه خیلی هم ممنون و مچکر
مشکلش این بود که این [] رو نذاشته بودم.:قلب::بوس::تشویق::لبخندس اده:
:قلب::قلب::قلب::قلب::قلب: