السلام عليكم : ارجو من الاخوة في المنتدى المساعدة ... كنت قد عملت كشف حساب باستخدام Access ولكن عندما بدلت ال DB الى SQL فشلت العملية ... الخطوات التي اقوم بها لكشف الحساب هي انشاء عمود محتسب باستخدام جملة SQL حيث اخذ مجموع المدين - الدائن وبعدها باستخدام حلقة While اقوم بالمرور على كل شجلات الاستعلام لكي يكون الرصيد صحيح عند كل عملية كمبيعات او سند قبض وهكذا ارجو من الاخوة المساعدة او لو توجد عملية اسهل من هذه لكشف الحساب النموذجي ... وشكراً
عمل كشف حساب بواسطة Delphi + Sql Server
السلام عليكم : لا توجد اي اجابة او توضيح .. انا اريد ان اعرف لماذا في الاكسس يمكنني التخزين المؤقت في عمود محتسب ناتج من استعلام مثلاً select field1,field2 ,sum(madin-da2en)as balance from table حيث لما كنت استخدم الاكسس عادي يتم تخزين قيم مؤقته في العمود المحتسب الناتج من الاستعلام الذي هو balance ولكن لما بدلت على القاعدة SQL يظهر خطأ مفاده field balance can not found .. ارجو من الاخوة في المنتدى المشاركة وشكـــــــــــــــراً
السلام عليكــم ورحمـة الله وبركاتــه ،،
ارجو توضح السوال جيدا او قم ارفاق مثال علي مشكلتك
ليس هنالك مشكلة في كود حيث قمت بتفيذها علي sql ولم يعطيني اي خطأ
السلام عليكم :
المشكلة هنا الكود كان يعمل في ال Access ولكن باستخدام SQL لا يمكن ...
with data.kashef_buy do
begin
close;
SQL.Clear ;
SQL.Add('SELECT cust_id,date_operater,operater_name,sanad_num,maden_buy,da2en_morta_pay,sum(made
n_buy-da2en_morta_pay)as bala from operaters_buy');
SQL.Add('where cust_id=:D and date_operater between :a and :b ');
SQL.Add('GROUP BY maden_buy,da2orta_pay,sanad_num,operater_name,date_operater,cust_id,bala');
Prepared;
Parameters.ParamByName('a').Value:=DateToStr(DateTimePicker1.Date);
Parameters.ParamByName('b').Value:=DateToStr(DateTimePicker2.Date);
Parameters.ParamByName('d').Value:=data.customer.fieldbyname('cus_id').Value;
Open ;
if FieldByName('da2en_morta_pay').Value <>0 then
begin
Edit;
FieldByName('bala').Value:= temp+FieldByName('da2en_morta_pay').Value*-1 ;
temp:=FieldByName('bala').Value;
end;
end;
المشكلة في الحقل المحتسب يكتب انه غير موجود .
السلام عليكــم ورحمـة الله وبركاتــه ،،
لازم الحقل bala يكون موجود في الجدول kashef_buy حتي تسيطيع اسناد قيمة ليه
وقم بتغير حقل جمع القيم من bala الي اي اسم اخر مثلا (sumbala) لان هذا الحقل (bala) موجود ضمن حقول الجدول
ثم قم بتغير الtemp الي FieldByName('sumbala').Value
السلام عليكم : الاخ العزيز format انه استعلام وليس جدول واسند اليه الحقل المحتسب من خلال جملة الاستعلام select حيث مع قاعدة البيانات اكسس كانت كل حاجة تمام لا اعرف ما السبب ...
السلام عليكــم ورحمـة الله وبركاتــه ،،
يبدو لي الخطأ في هذا الكود قم بحذها ثم نفذ البرنامج لكي تتأكد من ان الخطأ هنا
اقتباسif FieldByName('da2en_morta_pay').Value <>0 thenbegin
Edit;
FieldByName('bala').Value:= temp+FieldByName('da2en_morta_pay').Value*-1 ;
temp:=FieldByName('bala').Value;
end;
السلام عليكم : الاخ العزيز انا اعرف ان الخطأ في الحقل المحتسب هنا
FieldByName('bala').Value:= temp+FieldByName('da2en_morta_pay').Value*-1 ;
ولكن هي هذه الجملة التي احتاجها ... المشكلة يا اخ فورمات لم يدخل احد من الاخوة الاعضاء الا انت مشكور ..
السلام عليكــم ورحمـة الله وبركاتــه
temp متغير معرف ليك ام حاصل الجمع
اذا كان حاصل الجمع انت وضعتها في baba في الكود
sum(maden_buy-da2en_morta_pay)as bala from operaters_buy
تم تعديل هذه المشاركة بواسطة format82 في 8 أكتوبر 2009 في 17:38
السلام عليكم : Temp هو متغير معرف وظيفته اخذ الحساب السابق ويقوم وضعه بشكل مؤقت في الحقل المحتسب bala ..
الســــلام عليكم : ارجو من احد من المنتدى المساعدة
هل هذه طريقة صحيحة لتكوين الحقل المحتسب بشكل اوتوماتيكي
VAR
sField : tStringField;
Begin
sField := tStringField.Create(NIL);
sField.fieldname:='balance';
sField.FieldKind:=fkCalculated;
sField.Calculated:=True;
sField.DataSet:=kashef_buy;
kashef_buy.Fields.Add(sField);
End;
والشق الثاني من السؤال ما الطريق لتخزين قيمة مؤقتة في حقل محتسب في الاكسس اوكي ولكن في ال SQL لا يمكن .. للاسف لم يشارك احد الا الاخ فورمات مشكور ...