منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : الـ Recordset لا تدعم التحديث (Update)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
من دا انفذ هذا الكود
de2.rsCommand1.MoveFirst
While Not de2.rsCommand1.EOF = True
de2.rsCommand1.Fields("no").Value = de2.rsCommand1.AbsolutePosition
de2.rsCommand1.Update
de2.rsCommand1.MoveNext
Wend
يتوقف في السطر الثالث ويعطي رسالة مفادها هذا الريكوردسيت لايدعم التحديث .وهذا ممكن بسبب التحديد من البروفايدر او نوع القفل (locktype)
طبعا ('no') مأخوذ من هذا الكود
de2.rsCommand1.Open "SELECT ' ' as [no], (contract_information.contract_id), (contract_information.contract_name),(contract_information.work_case),(contract_information.contract_company_name),(contract_information.contract_chief),(contract_information.contract_warning),(contract_information.date_warning),(progress_work.percent),(contract_information.notes)" & _
",contract_information.contract_chief " & _
" FROM (contract_information), (progress_work) " & _
" Where (contract_information.contract_id = progress_work.contract_id) and (contract_information.work_case='ãÓÊãÑ' or contract_information.work_case='ãÊæÞÝ') "
مثلاً المتغير أو الكوماند المسئول عن فتح الجدول عندك اسمه = RS
تضع هذا السطر قبل فتح الجدول

RS.cursorlocation = adclient
السلام عليكم...

أولاً الحقل no حقل وهمي (أي تم إنشاؤه بجملة SELECT و ليس حفلاً فعلياً في الجدول) و بالتالي لا يمكن تحديثه.

ثانياً: السبب في أن الـ Recordset لا تدعم التحديث (Update) هو أنها تجمع أكثر من جدول واحد. في هذه الحالة لا يمكن التحديث إلا إذا كانت جميع الحقول في جموع الجداول ذات العلاقة مشمولة في جملة SELECT.

*ملاحظات:
1. لا داعي لاستعمال كل تلك الأقواس (...) حول أسماء الحقول و الجداول. فقط استعمل الأقواس المربعة [...] إذا كان اسم الحقل أو الجدول يحتوي على فراغات أو يشبه كلمة محجوزة لمحرك قواعد البيانات.
2. عملية الترقيم باستعمال حلقة - حتى و إن نجحت - ليست أمراً عملياً و خاصة إذا كان عدد السجلات كبيراً.

سلام.
اخواني (حريف برمجة) و (ناجي إبراهيم) بارك الله بكم وجزاكم كل خير ما قصرتو كفيتو و وفيتو