تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ما الخطأ في هذه الجملة
#1
update  school set arround2= (SELECT Count(id)     from student2  where artak2='دون' )

يظهر الرسالة

Operation must use an updateable query.
الرد }}}
تم الشكر بواسطة:
#2
يجب أن تحدد اسم حقل العدد فى الاستعلام 
جرب هذه الجملة 

كود :
update school set arround2= (SELECT Count(id)  AS CountOfID from student2  where artak2='دون' )
الرد }}}
تم الشكر بواسطة:
#3
كود :
cmd.CommandText = " update  school set arround2= (SELECT Count(id)  as CountOfID   from student2  where artak2='دون' ) "
نقس  الخطا
Operation must use an updateable query.

ما يدهشتي ان الجملة صحيحة من وجهة نظري  يا ريت احد يعرق الخطأ فين ؟؟؟؟؟
الرد }}}
تم الشكر بواسطة:
#4
لتوضيح اين يقع الخطاء
شوف هنا كده

انت الان تقوم بتطبيق هذا الشكل من الكود كما يلى
كود :
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 منه

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:
#5
السيد الفاضل   هو سجل واحد في الجدول  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()
الرد }}}
تم الشكر بواسطة:
#6
(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='دون')"


تحياتى لك 
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:
#7
الاحظ  الثلاث جمل واحد لا يوجد اختلاف  وجاري التجربة
وان كان  نفس الكود
شكرا وجاري
الرد }}}
تم الشكر بواسطة:
#8
(24-05-18, 05:17 PM)atefkhalf2004 كتب : الاحظ  الثلاث جمل واحد لا يوجد اختلاف  وجاري التجربة
وان كان  نفس الكود
شكرا وجاري


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

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

تحياتى لك
وبانتظار ردك
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:
#9
اعتذر اليك أخى الكريم 
 
ففى المشاركة الاولى حاولت التعديل بشكل سريع دون التمعن فى الكود
و لكن بعد اعادة النظر 

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

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

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

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

كود :
UPDATE school SET arround2 = DCount("id","student2"";"artak2='دون'");
الرد }}}
تم الشكر بواسطة:
#10
السادة الافاضل
السيد  الجوكر  
الثلاث جمل  نفس النتيجة

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

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

يظهر الرسالة

Operation must use an updateable query.


الملفات المرفقة
.rar   prep.rar (الحجم : 253.78 ك ب / التحميلات : 26)
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم