delphi4arab منتديات دلفي للعرب
اجراء عمليات حسابية عن طريق 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)

الصفحات: 1 2 3 4


اجراء عمليات حسابية عن طريق 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
اعتقد الفرق شاسع بين المعنيين Smile ،،يعني تتم الاضافة الى قاعدة البيانات مباشرة عن طريق الـ DBGrid وليس عن طريق جملة Insert او اي وسيلة اخرى ..وعلى العموم ليس لدي مشكلة في عملية الاضافة او التعديل عن طريق الـ DBGrid ،،،
وانما سؤالي كان عن كيفية اخذ القيمة من الخلية1 مباشرة بمجرد ادخالها،، وتنفيذ عملية حسابية على هذه القيمة ،ومن ثم وضع النتيجة في خلية اخرى،،، ولقد ذكرت سابقا :
(شئ مشابه للحدث On Cell Change)

بالنسبة للرابط الذي وضعته ،، ليس هو المطلوب ،،،، شكرا"
Lam.Abdeldjalil كتب :راجع (بالبحث) : http://www.delphi4arab.net/forum/search.php?searchid=216533
[/B]
السلام عليكم ورحمة الله وبركاته

الاخ 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
إقتباس :
OnCalcFields is triggered when:
A dataset is opened.
A dataset is put into dsEdit state.
A record is retrieved from a database.
إقتباس :لا يمكن اخذ قيمة الحقل الا اذا كانت مخزنه مسبقا في قاعدة البيانات .
أو في الذاكرة ،

أرفق محاولة إذا واجهت مشكلة

بالتوفيق


اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 25-06-2011

السلام عليكم ورحمة الله وبركاته
Lam.Abdeldjalil كتب :من قال هذا ؟
في المثال الذي ارفقته في المشاركة السابقة وهو : Calculated/Lookup
عندما قمت باضافة سجل ظهر الخطا التالي:
Project1
Row cannot be located for updating. Some values may have been changed since it was last read.
OK
وجدت الحل وذلك بتعديل الخاصية AutoCalcFields = False ، لكن ظهرت مشكلة في الحقل category حيث لم تظهر القيمة المختارة الا بعد ملأ جميع الحقول ،،، ما الحل ؟
بقيت مسالة أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟؟؟
شكرا"


اجراء عمليات حسابية عن طريق 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);
الشرح في الجزء 3 من تعمق في الـ ADO ( إن شاء الله)

بالتوفيق


اجراء عمليات حسابية عن طريق DBGrid - shdotcom - 25-06-2011

السلام عليكم ورحمة الله وبركاته

lam.abdeldjalil كتب :* أو تعيد جلب التسجيل المضاف فقط بـ :
هل بالامكان توضيح الاسطر السابقة ؟

lam.abdeldjalil كتب :الشرح في الجزء 3 من تعمق في الـ ado ( إن شاء الله)
؟
ماذا عن: أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟