الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ في جملة استعلام

مغلق
بدأه mooj22 في 3 مايو 2007 · 9 رد · 1,091 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي مشكلة في هذه الجملة و لكن لا أعرف بالضبط هذه المشكلة

Line 49: cmd = New OleDbCommand("Update PollAnswer set PollCount=PollCount+1 where PollAnsID=" & Lstpoll.SelectedValue & " and POllId=" & CInt(TextBox2.Text), Conn)

Line 50: Conn.Open()

Line 51: cmd.ExecuteNonQuery()

Line 52: Conn.Close()

المشكلة اهي

Syntax error (missing operator) in query expression 'PollAnsID= and POllId=24'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Syntax error (missing operator) in query expression 'PollAnsID= and POllId=24'.

Source Error:

#2

السلام عليكم :

أولاً : يجب أن يوجد في شرط التحقق Where الفواصل النصية المفردة (') (') بحيث تحيط بقيمة التحقق ... يعني :

Update TableName Set FieldName = NewValue Where AnotherField = ' Value '

فيصبح لديكم :

cmd = New OleDbCommand("Update PollAnswer Set PollCount = PollCount + 1 Where PollAnsID = '" & 

Lstpoll.SelectedValue & "' and PollId = '" & CInt(TextBox2.Text) & "'",Conn)

ثانياً : نصيحتي أن لا تسحب قيم مباشرة من الأدوات في جمل SQL , بل احفظها في Parameters ثم أدخل تلك Parameters في الاستعلام لأن

ذلك يقلل من الخطأ في تنفيذ جمل SQL كما أنه يزيد من الأداء , ولن تحتاج لإدخال الفواصل النصية الفردية (') . أي يصبح لدينا كما يلي :

cmd = New OleDbCommand("Update PollAnswer Set PollCount = PollCount + 1 Where PollAnsID = @PollAnsID and PollId = @PollID",Conn)
Dim param1 As OleDbParameter = cmd.Parameters.Add("@PollAnsID", OleDbType.VarChar)  
param1.Value = Lstpoll.SelectedValue

Dim param2 As OleDbParameter = cmd.Parameters.Add("@PollID", OleDbType.Integer)
param2.Value = CInt(TextBox2.Text)

ثم نقوم بفتح الاتصال و إجراء اللازم ......

وفقكم الله ......

#3

السلام عليكم

ال control Lstpoll لا يوجد value للعنصر المحدد

هل عامل data binding لل listcontrol Lstpoll ؟؟

وجرب ان تستخدم SelectedItem بدل ال SelectedValue

والله أعلم

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#5

شكرا للجميع على الرد

و لكن جميع الحلول لم تنفع معي

و لهذا ارفق مع هذا الموضوع مشروع برنامج التصويت و اتمنى من أحدكم الاطلاع عليه و حل المشكلة

و شكراً

poll.zip

#6

أعتقد الاخ Mo7eb_Alrasool اعطاك الحل الاكيد وهو انك بتتدخل قيمة فارغة في الجملة وهذا واضح من الارور ماسج :

اقتباس
in query expression 'PollAnsID= and POllId=24'

لاحظ أن الحقل'PollAnsID لم يعين له قيمة

وذلك ببساطة لانك استخدمت Lstpoll.SelectedValue

ويفضل انك لو استخدمت Lstpoll.SelectedItem,Value

مع التأكد من اختيار قيمة في الاصل من Lstpoll

#7

اخ سكوول

أنا عارف أن 'PollAnsID قيمته فارغة و هذه المشكلة على الرغم من اني عامل data binding

بس مش قادر يقراها. انا حاولت جميع الطرق و سويت بحث في قوقل و بعد ما لقيت الحل

#8

السلام عليكم

حبيت اقول للجميع بعد ساعات طويلة من البحث لحل المشكلة وجدت الحل

وهو ان من نافذة proparties الخاصة ب radiobuttonlist المفروض اغير خاصية appenddatabounditem و اخليها true

بعد هذه الطريقة قدرت اني اسوي update للداتابيس

و لهذا فإني حبيت أشكر الجميع على اهتمامهم بمشكلتي و مساعدتي

هذا الموضوع مغلق.

مواضيع مشابهة