المشاركات : 23
المواضيع 4
:
: 0
الإنتساب : Feb 2008
السلام عليكم ورحمة الله وبركاته
هل هناك طريقة او مكون يمكنني من التعديل على خلية في DBGrid بالاعتماد على خلية أخرى ،، على سبيل المثال:
لو كان عندي DBGrid مكونة من 4 اعمدة ، عندما أقوم بعملية الادخال في الخلية 1 يتم اخذ القيمة المدخلة و اجراء عملية حسابية وتظهر النتيجة في الخلية 2(او اي خلية انا احددها) (شئ مشابه لـ on cell change)
مع ملاحظة ان عمليات الاضافة والتعديل والحذف تتم مباشرة عن طريق الـ DBGrid وليس باستخدام الـ SQL
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله وبركاته
shdotcom أهلا ومرحبا بك في دلفي للعرب
البيانات لا تخزن في TDBGrid وإنما في TDataSet ، انظر:
http://www.delphi4arab.net/forum/showthr...p?tid=2698
بالتوفيق.
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
السلام عليكم
إذا كنت تقصد Calculated Fields 'الحقول الحسابية'
راجع (بالبحث) : http://www.delphi4arab.net/forum/search....hid=216533
بالتوفيق
المشاركات : 23
المواضيع 4
:
: 0
الإنتساب : Feb 2008
kachwahed كتب :البيانات لا تخزن في TDBGrid وإنما في TDataSet
السلام عليكم ورحمة الله وبركاته
الاخ kachwahed انا لم أذكر بأن البيانات تخزن في DBGrid وانما عن طريق الـ DBGrid
اعتقد الفرق شاسع بين المعنيين

،،يعني تتم الاضافة الى قاعدة البيانات مباشرة عن طريق الـ DBGrid وليس عن طريق جملة Insert او اي وسيلة اخرى ..وعلى العموم ليس لدي مشكلة في عملية الاضافة او التعديل عن طريق الـ DBGrid ،،،
وانما سؤالي كان عن كيفية اخذ القيمة من الخلية1 مباشرة بمجرد ادخالها،، وتنفيذ عملية حسابية على هذه القيمة ،ومن ثم وضع النتيجة في خلية اخرى،،، ولقد ذكرت سابقا :
(شئ مشابه للحدث On Cell Change)
بالنسبة للرابط الذي وضعته ،، ليس هو المطلوب ،،،، شكرا"
Lam.Abdeldjalil كتب :راجع (بالبحث) : http://www.delphi4arab.net/forum/search....hid=216533
[/B]
السلام عليكم ورحمة الله وبركاته
الاخ Lam.Abdeldjalil
Calculated Fields ربع الحل،، لكن تبقى مسالة اخذ القيمة من الخلية1 بمجرد ادخالها كيف ؟
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
وعليكم السلام ورحمة الله وبركاته
إقتباس :Calculated Fields ربع الحل
هل شاهدت
هذا ؟
إقتباس :لكن تبقى مسالة اخذ القيمة من الخلية1 بمجرد ادخالها كيف ؟
يمكن اخذ قيمة الحقل عوض ذلك
بالتوفيق
المشاركات : 23
المواضيع 4
:
: 0
الإنتساب : Feb 2008
السلام عليكم ورحمة الله وبركاته
الاخ Lam.Abdeldjalil هذه الطريقة تنفع فقط اذا كانت البيانات مخزنة مسبقا في قاعدة البيانات ،، اما في حالة ادخال البيانات واجراء العملية الحسابية في نفس الوقت،، فأعتقد لايمكن استخدام هذه الطريقة ..
Lam.Abdeldjalil كتب :يمكن اخذ قيمة الحقل عوض ذلك
لا يمكن اخذ قيمة الحقل الا اذا كانت مخزنه مسبقا في قاعدة البيانات .
شكراً على التواصل ...
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
وعليكم السلام و رحمة الله وبركاته
إقتباس :هذه الطريقة تنفع فقط اذا كانت البيانات مخزنة مسبقا في قاعدة البيانات ،، اما في حالة ادخال البيانات واجراء العملية الحسابية في نفس الوقت،، فأعتقد لايمكن استخدام هذه الطريقة ..
من قال هذا ؟
من
كود :
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.
إقتباس :لا يمكن اخذ قيمة الحقل الا اذا كانت مخزنه مسبقا في قاعدة البيانات .
أو في الذاكرة ،
أرفق محاولة إذا واجهت مشكلة
بالتوفيق
المشاركات : 23
المواضيع 4
:
: 0
الإنتساب : Feb 2008
السلام عليكم ورحمة الله وبركاته
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 حيث لم تظهر القيمة المختارة الا بعد ملأ جميع الحقول ،،، ما الحل ؟
بقيت مسالة أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟؟؟
شكرا"
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
وعليكم السلام و رحمة الله وبركاته
تلك الرسالة تظهر عند إضافة سجل مع عدم تحديد قيم : 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 ( إن شاء الله)
بالتوفيق
المشاركات : 23
المواضيع 4
:
: 0
الإنتساب : Feb 2008
السلام عليكم ورحمة الله وبركاته
lam.abdeldjalil كتب :* أو تعيد جلب التسجيل المضاف فقط بـ :
هل بالامكان توضيح الاسطر السابقة ؟
lam.abdeldjalil كتب :الشرح في الجزء 3 من تعمق في الـ ado ( إن شاء الله)
؟
ماذا عن: أخذ القيمة وتنفيذ الكود مباشرة بمجرد كتابة القيمة،، دون الضغط على انتر أو الانتقال الى خلية اخرى ،،، كيف يمكن اجراء ذلك ؟