منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
ما الخطأ في هذه الجملة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : ما الخطأ في هذه الجملة (/showthread.php?tid=25079)

الصفحات: 1 2 3


ما الخطأ في هذه الجملة - atefkhalf2004 - 24-05-18

update  school set arround2= (SELECT Count(id)     from student2  where artak2='دون' )

يظهر الرسالة

Operation must use an updateable query.


RE: ما الخطأ في هذه الجملة - mrnooo2000 - 24-05-18

يجب أن تحدد اسم حقل العدد فى الاستعلام 
جرب هذه الجملة 

كود :
update school set arround2= (SELECT Count(id)  AS CountOfID from student2  where artak2='دون' )



RE: ما الخطأ في هذه الجملة - atefkhalf2004 - 24-05-18

كود :
cmd.CommandText = " update  school set arround2= (SELECT Count(id)  as CountOfID   from student2  where artak2='دون' ) "
نقس  الخطا
Operation must use an updateable query.

ما يدهشتي ان الجملة صحيحة من وجهة نظري  يا ريت احد يعرق الخطأ فين ؟؟؟؟؟


RE: ما الخطأ في هذه الجملة - elgokr - 24-05-18

لتوضيح اين يقع الخطاء
شوف هنا كده

انت الان تقوم بتطبيق هذا الشكل من الكود كما يلى
كود :
update  school set arround2= (SELECT Count(id)  as CountOfID   from student2  where artak2='دون' )

تحويله منطقياً للهدف المطلوب
كود :
update  school set arround2=20

هل تلاحظ ما ينقص الكود هنا


انت حالياً بتطلب من قاعدة البيانات عمل تحديث بجدول school
وهو بطبيعى هيقول حاضر مع السؤال فى اى جزء بهذا الجدول

فجت الجزء خاصة Set اللى بتطلب منه لقيمة arround2
فلما جه يطبق حدث الخطاء انك لم تقم بتعريف arround2 لاى شخص داخل الجدول
وبذلك عليه التطبيق على كل الجدول
لذلك يجب اضافة where

لان من المنطق الكود يكون بهذا الشكل
كود :
update school set arround2=20 where id=1

ليتحول الكود الى طريقة كتابتك
كود :
update school set arround2= (SELECT Count(id)  as CountOfID from student2  where artak2='دون' ) where id=???

ولكن الخطاء هنا وارد ان يكون عن القيمة المدخلة
بما انك عامل استعلام لجلب اليمة من الممكن الجول لا يحتوى على id خاصة Count(id)
وبما ان فى خطاء بالجزء ده تسبب فى تعطيل التنفيذ

يارب يكون الشرح مبسط ويوضح ما سبب الخطاء وكيفية التعامل معها دائماً
كل ما عليك هو تغيير جزء 
PHP كود :
id=??? 

للمعرف الذى يوم بتغيير قيمة arround2 منه

تحياتى لك
وتمنياتى لك التوفيق



RE: ما الخطأ في هذه الجملة - atefkhalf2004 - 24-05-18

السيد الفاضل   هو سجل واحد في الجدول  school

شرحك جميل  لكن  هو سجل واحد  

المطلوب تحديث  الحقل  arround    بالقيمة التي يقراها  من جملة  select  الثانية 

المطلب  تحيث  كل  الحقل في جدول school

تغلبت عليه  بالكود لتالي
لكن  ما الخطأ  في الكود السابق   للتعلم  وتوفير الوقت
  'cmd18.CommandText = "  SELECT Count(*) as totalar     from student2  where artak2='دون'   "
        'Conn.Open()
        'DR1 = cmd18.ExecuteReader
        'DR1.Read()
        'cmd.CommandText = " update  school set arround2=" & DR1.Item("totalar") & " "
        'cmd.ExecuteNonQuery()
        'Conn.Close()


RE: ما الخطأ في هذه الجملة - elgokr - 24-05-18

(24-05-18, 04:55 PM)atefkhalf2004 كتب : السيد الفاضل   هو سجل واحد في الجدول  school

شرحك جميل  لكن  هو سجل واحد  

المطلوب تحديث  الحقل  arround    بالقيمة التي يقراها  من جملة  select  الثانية 

المطلب  تحيث  كل  الحقل في جدول school

تغلبت عليه  بالكود لتالي
لكن  ما الخطأ  في الكود السابق   للتعلم  وتوفير الوقت
  'cmd18.CommandText = "  SELECT Count(*) as totalar     from student2  where artak2='دون'   "
        'Conn.Open()
        'DR1 = cmd18.ExecuteReader
        'DR1.Read()
        'cmd.CommandText = " update  school set arround2=" & DR1.Item("totalar") & " "
        'cmd.ExecuteNonQuery()
        'Conn.Close()


لا يوجد اختلاف بين الكود السابق والكود الحالى

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

فقط قم بتجربة كلاً من الاكواد التالية بدلاً من :

استبدل : بـ
كود :
cmd.CommandText = "update school set arround2=(SELECT Count(id) from student2 where artak2='دون')"

أو ان لم يعمل الكود وظهر خطاء بـ
كود :
cmd.CommandText = "update school set arround2=(SELECT Count(*) from student2 where artak2='دون')"

أو بـ
كود :
cmd.CommandText = "update school set arround2=(SELECT Count(*) as totalar from student2 where artak2='دون')"


تحياتى لك 
وتمنياتى لك التوفيق



RE: ما الخطأ في هذه الجملة - atefkhalf2004 - 24-05-18

الاحظ  الثلاث جمل واحد لا يوجد اختلاف  وجاري التجربة
وان كان  نفس الكود
شكرا وجاري


RE: ما الخطأ في هذه الجملة - elgokr - 24-05-18

(24-05-18, 05:17 PM)atefkhalf2004 كتب : الاحظ  الثلاث جمل واحد لا يوجد اختلاف  وجاري التجربة
وان كان  نفس الكود
شكرا وجاري


نعم الثلاثة واحد وكلاهمها نفس الناتج
وكل الفرق بينهم جلب الاجمالى عن طريق عمود ID والاخر للجميع

لكن ما اريد ملاحظته اذا ظهر اى رسالة خطاء مع كتابة معينة منهم او لا فقط ليس اكثر

تحياتى لك
وبانتظار ردك



RE: ما الخطأ في هذه الجملة - mrnooo2000 - 24-05-18

اعتذر اليك أخى الكريم 
 
ففى المشاركة الاولى حاولت التعديل بشكل سريع دون التمعن فى الكود
و لكن بعد اعادة النظر 

هذا الاستعلام لن يعطيك ما تريد لماذا؟
لأن الاستعلام الداخلى ستكون نتيجته عبارة عن جدول 
و عملية التحديث تحتاج الى قيمة محددة لاستخدامها فى عملية التحديث

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

و لكن ماذا لو كان الجدولين غير مرتبطين 
فى هذه الحالة سنلجأ الى دالة من دوال الاكسس و هى عبارة عن استعلام و لكن نتيجته قيمة محددة 
و هى دالة DCount

و تطبيقا على ذلك جرب هذا الكود

كود :
UPDATE school SET arround2 = DCount("id","student2"";"artak2='دون'");



RE: ما الخطأ في هذه الجملة - atefkhalf2004 - 24-05-18

السادة الافاضل
السيد  الجوكر  
الثلاث جمل  نفس النتيجة

السيد  [b]mrnooo2000[/b]
الجملة  في اكسس  وفي  الفيجوال اعطت خطأ   خط ازرق 
تحت
كود :
;"artak2='دون'"

اتمني الحصول علي اجابة

يظهر الرسالة

Operation must use an updateable query.