المشاركات : 15
المواضيع 2
:
: 0
الإنتساب : Sep 2011
بسم الله الرحمان الرحيم :
أبحث عن طريقة لحساب مجموع قيم موجودة بين خانتين في عمود في dbgrid .. نوع البيانات أعداد صحيحة
جربت between في sql لكن لم تنفع لأن معطياتها كمعطيات الحصر و القيم التي في جدول ليست مرتبة ترتيبا تصاعديا إنما قيم عشوائية .
عندما أضغط على خانة ثم أضغط على خانة أخرى تظهر نتيجة مجموع القيم الموجودة في الخانات التي بين الخانتين في edit .
مثلا لدي عمود في dbgrid يحتوي على قيم مرتبة هكذا 5,2,1,6,7,4,2,3 و عندما أضغط على الخانة التي بها رقم 2 ثم الخانة التي بها رقم 7 تظهر النتيجة 13 في edit .
و شكرا
المشاركات : 1,252
المواضيع 170
:
: 1,500
الإنتساب : Jul 2009
[INDENT]
استعمل الحقل الحسابي calculated field.
وانظر غلى هذا الموضوع مع تشعباته :
كيف يتم حساب عمود حقل حسابي بدون استخدام while
[/INDENT]
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
المشاركات : 15
المواضيع 2
:
: 0
الإنتساب : Sep 2011
لا يا أخي ليس هذا ما أبحث عنه إنما أبحث عن حساب مجموع حقول معينة و لا يهمني بال while أو غير ذلك و لقد شرحت كل شيء في سؤالي .
شكرا جزيلا على الرد .
المشاركات : 378
المواضيع 44
:
: 6
الإنتساب : Feb 2008
live05 على الاقل حاول واطرح محاولتك .
هذه محاولة اكتبها فى الحدث
CellClick ل
DBGrid
PHP كود :
const
{$J+}
FirstPos : Integer = -1;
LastPos : Integer = -1;
{$J-}
var
I: Integer;
SumValue: Integer;
X, Y: Integer;
begin
if Column.Field.DataType <> ftInteger then
Exit;
SumValue := 0;
if FirstPos = -1 then
FirstPos := Column.Field.DataSet.RecNo
else
LastPos := Column.Field.DataSet.RecNo;
if (FirstPos <> -1)and(LastPos <> -1) then
begin
X := Math.Min(FirstPos, LastPos);
Y := Math.Max(FirstPos, LastPos);
Column.Field.DataSet.RecNo := X;
for I := 0 to (Y - X) do
begin
SumValue := SumValue + Column.Field.AsInteger;
Column.Field.DataSet.Next;
end;
Column.Field.DataSet.RecNo := Y;
ShowMessage('Sum For '+IntToStr(Y - X + 1) + ' Record = ' +IntToStr(SumValue));
FirstPos := -1;
LastPos := -1;
end;
end;
المشاركات : 15
المواضيع 2
:
: 0
الإنتساب : Sep 2011
شكرا جزيلا على مساعدتك أخي hanipino هذا بالضبط ما أبحث عنه ..
و قد ذكرت بأنني حاولت بال between في sql أضن بأن طريقة محاولتي كانت واضحة و لم يكن داعي لذكرها .
و أحب أن أنوه أيضا إن سمحت لي بأنه في الكود الذي كتبته ينقص شيء صغير فقط و هو
يجب كتابة math في uses حتى لا تظهر أي رسالة خطأ ويكون الكود كاملا و الكمال لله .
عدا هذا لك جزيل الشكر و أدعوا الله أن يجعله في ميزان حسناتك .
و لدي محاولة أيضا ليست جيدة بقدر طريقتك لكن سأذكرها لربما احتاج لها شخص آخر :
و هي استعمال JvDBGrid بدلا من dbgrid و ذلك لتفعيل خاصية multiselect = true
وهذه الخاصية تسمح بتحديد العديد من الأسطر بإستعمال shift أو ctrl مع زر الماوس الأيسر
ثم كتابة الكود التالي في button أو لمن يريد وضعه في CellClick عليه القيام ببعض التعديلات
تم تظهر النتيجة في edit و الكود كالتالي :
كود :
var
i: Integer;
sum : Single;
begin
if jvDBGrid1.SelectedRows.Count > 0 then
begin
sum := 0;
with jvDBGrid1.DataSource.DataSet do
begin
for i := 0 to jvDBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(Pointer(jvDBGrid1.SelectedRows.Items[i]));
sum:=sum+table1.FieldByName('total').AsFloat;
end;
end;
edit1.Text := FloatToStr(sum);
end
end;
المشاركات : 21
المواضيع 0
:
: 0
الإنتساب : Dec 2009
أبحث عن طرقة لإستخراج مجموع عمود في Dbgrid لقد أستعملت الحساب عن طريق sql لكن لايعطيني القيمة المطلوبة على أساس أنني أعمل بقاعدتين للبيانات Maitre و detail و قد أستعملت عدة طرق لكن لم أتوصل للنتيجة الحقيقية مثال على ذلك حين أنتهي من حجز بيانات ممون رقم 11 يعطيني نتيجة الممون رقم 1 هذ ا هو الكود Sql
select F1."Numfact", sum(F1."Montant") as "sumMontant"
from "Facture" F1
where (F1."Numfact")=Numfact
group by F1."Numfact"
وبرك الله فيكم