PDA

View Full Version : سوال: مشکل با یک Update Query .



Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 20:41 عصر
سلام دوستان
Query ام را بصورت CommandText معرفی کردم.
کل Query آپدیت ام را ریختم داخل رشته . ولی وقتی اجرا میکنم و روی Button کیک میکنم.
این پیغام را میده .

Syntax error (comma) in query expression '[Name] = 'Nitrogen',Subject = 'GAME',Qty = '1',Scount = '2',Location = 'پکیج2''.

برنامه مال یک پروژه دانشگاهی هست . (مال خودمه) که دارم یه بانک سی دی میزنم . این قسمت مال ویرایش فیلد ها هست . و از DataGridView استفاده کرده ام.

اینم کد :


s = "Update Discs Set [Name] = '";
s += txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += "Where[Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";

cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

M.YasPro
دوشنبه 27 اردیبهشت 1389, 20:48 عصر
سلام
مشکل لغوی هست .
در حالت trace رشته کوئری رو در sqlsrver اجرا کنید تا محل دقیق خطا مشخص شود .
موفق باشید .

Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 20:53 عصر
آره میدونم مشکلش توی این قیمت هایی هستش که هی کوتیشن گذاشتم خودمم گیج شدم.
حالا Trace میزنم خبرشو میدم.
ممنون

amir.khanlari
دوشنبه 27 اردیبهشت 1389, 21:25 عصر
سلام.
دوست عزیز لطفا کدتون رو داخل تگ کد قرار بدید که خوانایی اون حفظ بشه
من کدتون به اینصورت ویرایش کردم امتحان کنید ببنید جواب میده یه تغییر کوچولو دادم

s = "Update Discs Set [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += "Where [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

لطفا هر زمانی که به نتیجه رسیدید در تاپیک اعلام کنید کهوقتی دیگران به این تاپیک مراجعه می کنند به نتیجه برسند.ممنون

Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 21:42 عصر
سلام.
دوست عزیز لطفا کدتون رو داخل تگ کد قرار بدید که خوانایی اون حفظ بشه
من کدتون به اینصورت ویرایش کردم امتحان کنید ببنید جواب میده یه تغییر کوچولو دادم

s = "Update Discs Set [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += "Where [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

لطفا هر زمانی که به نتیجه رسیدید در تاپیک اعلام کنید کهوقتی دیگران به این تاپیک مراجعه می کنند به نتیجه برسند.ممنون


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

کدی که شما ویرایش کردید را جایگزین کردم این پیغام را میده.


Syntax error (comma) in query expression '[Name] = 'NFS MostWanted2',Subject = 'بازی2',Qty = '12',Scount = '12',Location = 'جعبه آبی 12''.

amir.khanlari
دوشنبه 27 اردیبهشت 1389, 21:56 عصر
سلام دوست عزیز
چشم حتما دفعات بعدی رعایت میکنم.

کدی که شما ویرایش کردید را جایگزین کردم این پیغام را میده.


Syntax error (comma) in query expression '[Name] = 'NFS MostWanted2',Subject = 'بازی2',Qty = '12',Scount = '12',Location = 'جعبه آبی 12''.

سلام.
دستور SQL رو توی خود SQL چک کردید . اونجا خطا نداره؟

Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 22:32 عصر
داخل Access یک Query گذاشتم واسه Update همین Error را میده مثل اینکه مشکل از Update Query ام هست.
انگار ساختاری مشکل دارم.
چک میکنم به حواب رسیدم خبر میدم.

ممنون

Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 22:40 عصر
با سپاس فراوان از دوست عزیز amir.khanlari (http://barnamenevis.org/forum/member.php?u=52178) با تست در Query خود Access با همین
Error مواجه شدم و متوجه شدم که دستور Update ام از ریشه مشکل داشته باید بین شروط از AND استفاده
میکردم . حواسم نبود از کاما استفاده کرده بودم . { از بس از این Insert استفاده کردم } .
ممنون.

Mansoor2fx
دوشنبه 27 اردیبهشت 1389, 22:50 عصر
دوستان در حال حاضر کد زیر کد من هست.
الان هیچ اتفاقی نمی افته . فقط DataGridView یکبار Refresh میشه.



s = "Update Discs Set [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += " Where [Name] = '" + txtDiscName.Text + "' AND ";
s += "Subject = '" + txtDiscSubject.Text + "' AND ";
s += "Qty = '" + txtDiscQty.Text + "' AND ";
s += "Scount = '" + txtDiscScount.Text + "' AND ";
s += "Location = '" + txtDiscLocation.Text + "'";
cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

amir.khanlari
سه شنبه 28 اردیبهشت 1389, 00:09 صبح
سلام .
با توجه به کدی که گذاشتید این مورد طبیعی هست شما در شرطتون باید مقدار اولیه فیلد هارو وارد کنید اما در کدتون شرط با مقادیر جدید چک میشه و خوب طبیعی هست که شرط برقرار نمی شه به کد زیر نگاه کنید

s = "Update Discs Set [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += " Where [Name] = '" + OldDiscName+ "' AND ";
s += "Subject = '" + OldDiscSubject+ "' AND ";
s += "Qty = '" +OldDiscQty+ "' AND ";
s += "Scount = '" + OldDiscScount+ "' AND ";
s += "Location = '" +DiscLocation+ "'";
cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";
به جای متغییر هایی که با Old گذاشتم باید مقدار اولیه فیلد هارو بدید
موفق باشید

Mansoor2fx
سه شنبه 28 اردیبهشت 1389, 00:30 صبح
دوستان کدم را به این شکل تغییر دادم درست شد .
مقایسه با Value انتخاب شده در Cell که کلید شده داخل DataGridView
یک راه پیچیده !


s = "Update Discs Set [Name] = '" + txtDiscName.Text + "',";
s += "Subject = '" + txtDiscSubject.Text + "',";
s += "Qty = '" + txtDiscQty.Text + "',";
s += "Scount = '" + txtDiscScount.Text + "',";
s += "Location = '" + txtDiscLocation.Text + "'";
s += " Where Discs.[Name] = '" + dataGridView1.CurrentRow.Cells["Name"].Value +"' And ";
s += "Discs.Subject = '" + dataGridView1.CurrentRow.Cells["Subject"].Value + "' And ";
s += "Discs.Qty = '" + dataGridView1.CurrentRow.Cells["Qty"].Value + "' And ";
s += "Discs.Scount = '" + dataGridView1.CurrentRow.Cells["Scount"].Value + "' And ";
s += "Discs.Location = '" + dataGridView1.CurrentRow.Cells["Location"].Value + "'";
cmd.CommandText = s;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ds.Clear();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

Mansoor2fx
سه شنبه 28 اردیبهشت 1389, 00:34 صبح
amir.khanlari عزیز با تشکر فراوان از شما
راستش من دیدم متغیر جدید گرفتن و انتقال محتویات مکافات داره واسم از روش بالا استفاده کردم.
دمت گرم . حال دادی . مرسی