![]() |
|
اجراء عمليات حسابية عن طريق DBGrid - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : اجراء عمليات حسابية عن طريق DBGrid (/showthread.php?tid=3218) |
اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 22-06-2011 السلام عليكم ورحمة الله وبركاته
هل هناك طريقة او مكون يمكنني من التعديل على خلية في DBGrid بالاعتماد على خلية أخرى ،، على سبيل المثال: لو كان عندي DBGrid مكونة من 4 اعمدة ، عندما أقوم بعملية الادخال في الخلية 1 يتم اخذ القيمة المدخلة و اجراء عملية حسابية وتظهر النتيجة في الخلية 2(او اي خلية انا احددها) (شئ مشابه لـ on cell change) مع ملاحظة ان عمليات الاضافة والتعديل والحذف تتم مباشرة عن طريق الـ DBGrid وليس باستخدام الـ SQL اجراء عمليات حسابية عن طريق DBGrid - kachwahed - 22-06-2011 وعليكم السلام ورحمة الله وبركاته shdotcom أهلا ومرحبا بك في دلفي للعرب البيانات لا تخزن في TDBGrid وإنما في TDataSet ، انظر: http://www.delphi4arab.net/forum/showthread.php?tid=2698 بالتوفيق. اجراء عمليات حسابية عن طريق DBGrid - Lam.Abdeldjalil - 22-06-2011 السلام عليكم إذا كنت تقصد Calculated Fields 'الحقول الحسابية' راجع (بالبحث) : http://www.delphi4arab.net/forum/search.php?searchid=216533 بالتوفيق اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 24-06-2011 kachwahed كتب :البيانات لا تخزن في TDBGrid وإنما في TDataSetالسلام عليكم ورحمة الله وبركاته الاخ kachwahed انا لم أذكر بأن البيانات تخزن في DBGrid وانما عن طريق الـ DBGrid اعتقد الفرق شاسع بين المعنيين ،،يعني تتم الاضافة الى قاعدة البيانات مباشرة عن طريق الـ DBGrid وليس عن طريق جملة Insert او اي وسيلة اخرى ..وعلى العموم ليس لدي مشكلة في عملية الاضافة او التعديل عن طريق الـ DBGrid ،،،وانما سؤالي كان عن كيفية اخذ القيمة من الخلية1 مباشرة بمجرد ادخالها،، وتنفيذ عملية حسابية على هذه القيمة ،ومن ثم وضع النتيجة في خلية اخرى،،، ولقد ذكرت سابقا : (شئ مشابه للحدث On Cell Change) بالنسبة للرابط الذي وضعته ،، ليس هو المطلوب ،،،، شكرا" Lam.Abdeldjalil كتب :راجع (بالبحث) : http://www.delphi4arab.net/forum/search.php?searchid=216533السلام عليكم ورحمة الله وبركاته الاخ Lam.Abdeldjalil Calculated Fields ربع الحل،، لكن تبقى مسالة اخذ القيمة من الخلية1 بمجرد ادخالها كيف ؟ اجراء عمليات حسابية عن طريق DBGrid - Lam.Abdeldjalil - 24-06-2011 وعليكم السلام ورحمة الله وبركاته إقتباس :Calculated Fields ربع الحلهل شاهدت هذا ؟ إقتباس :لكن تبقى مسالة اخذ القيمة من الخلية1 بمجرد ادخالها كيف ؟يمكن اخذ قيمة الحقل عوض ذلك بالتوفيق اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 24-06-2011 السلام عليكم ورحمة الله وبركاته الاخ Lam.Abdeldjalil هذه الطريقة تنفع فقط اذا كانت البيانات مخزنة مسبقا في قاعدة البيانات ،، اما في حالة ادخال البيانات واجراء العملية الحسابية في نفس الوقت،، فأعتقد لايمكن استخدام هذه الطريقة .. Lam.Abdeldjalil كتب :يمكن اخذ قيمة الحقل عوض ذلكلا يمكن اخذ قيمة الحقل الا اذا كانت مخزنه مسبقا في قاعدة البيانات . شكراً على التواصل ... اجراء عمليات حسابية عن طريق DBGrid - Lam.Abdeldjalil - 24-06-2011 وعليكم السلام و رحمة الله وبركاته إقتباس :هذه الطريقة تنفع فقط اذا كانت البيانات مخزنة مسبقا في قاعدة البيانات ،، اما في حالة ادخال البيانات واجراء العملية الحسابية في نفس الوقت،، فأعتقد لايمكن استخدام هذه الطريقة ..من قال هذا ؟ كود : http://docwiki.embarcadero.com/VCL/en/API:ADODB.TCustomADODataSet.OnCalcFieldsإقتباس : إقتباس :لا يمكن اخذ قيمة الحقل الا اذا كانت مخزنه مسبقا في قاعدة البيانات .أو في الذاكرة ، أرفق محاولة إذا واجهت مشكلة بالتوفيق اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 25-06-2011 السلام عليكم ورحمة الله وبركاته Lam.Abdeldjalil كتب :من قال هذا ؟في المثال الذي ارفقته في المشاركة السابقة وهو : Calculated/Lookup عندما قمت باضافة سجل ظهر الخطا التالي:
Project1
وجدت الحل وذلك بتعديل الخاصية AutoCalcFields = False ، لكن ظهرت مشكلة في الحقل category حيث لم تظهر القيمة المختارة الا بعد ملأ جميع الحقول ،،، ما الحل ؟Row cannot be located for updating. Some values may have been changed since it was last read. OK بقيت مسالة أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟؟؟ شكرا" اجراء عمليات حسابية عن طريق DBGrid - Lam.Abdeldjalil - 25-06-2011 وعليكم السلام و رحمة الله وبركاته تلك الرسالة تظهر عند إضافة سجل مع عدم تحديد قيم : Qtt و Price أما إذا حددت القيم لا تظهر السبب الحقلان لهما قيم إفتراضية محددة في القاعدة defaulf Value و هي 0 ( يمكنك إلغائها ) عند إضافة سجل مع عدم تحديد القيم تعطى القيم 0 أوتوماتيكيا تصبح الـ DataSet لا تملك آخر تحديث أي مثل حالة تعدد المستخدمين ، للتخلص من الرسالة : * عليك القيام بـ Refresh بعد الإضافة (لا ينصح بها في حالة dataset ضخمة ،طبعا مع clUseClient ـ ) * أو تعيد جلب التسجيل المضاف فقط بـ : كود : ADoTable1.Recordset.Properties['Update Criteria'].Value:=1;
ADoTable1.Recordset.Properties['Update Resync'].Value:=1+4+8;
ADoTable1.UpdateBatch(arcurrent);بالتوفيق اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 25-06-2011 السلام عليكم ورحمة الله وبركاته lam.abdeldjalil كتب :* أو تعيد جلب التسجيل المضاف فقط بـ :هل بالامكان توضيح الاسطر السابقة ؟ lam.abdeldjalil كتب :الشرح في الجزء 3 من تعمق في الـ ado ( إن شاء الله)؟ ماذا عن: أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟ |