أرجو من الأخوة الأكارم مساعدتفي في تنقيح طريقة إظهاري لكشف الحساب في برنامج محاسبي بسيط لحسابات الزبائن
حيث أني قد قمت بصنع جدول للحركات المالية اسميته Inv يحوي رقم الفاتورة او الدفعة وقيمة الفاتورة او الدفعة ورقم الزبون كما قمت بإضافة الرصيد لكل سجل
أقوم بحساب الرصيد في كل إدخال لفاتورة او دفعة واقوم بتحريره كل مرة لكل السجلات المسجلة برقم حساب زبون معين وما أريده هو وجود حقل غير مرتبط بقاعدة البيانات (حقل للحساب فقط وليس ضمن الجدول الاساسي ولكني لا اعرف كيف بالضبط أستعمله )أو إن كانت هناك افكار أخرى أرجو عدم البخل علي بها
في المرفقات البرنامج بشكله البدائي للعمليات الأساسية فيه
أرجو إرشادي إلى أية أخطاء أو هفوات برمجية داخله من أصحاب العقول والقلوب النيرة
ولكم جزيل الشكر
عملية حساب وتسجيل الرصيد
function Get_Clint_balanc(Clint_id:integer):integer; var bal :integer; begin Result:=0; bal:=0; inv_.DisableControls; inv_.First; while not inv_.Eof do if inv_cust_id.AsInteger =Clint_id then begin bal := bal+ inv_inv_value.AsInteger - inv_pay_val.AsInteger; inv_.Edit; inv_balanc.AsInteger := bal; inv_.Post; inv_.next; end else inv_.next; Result:=bal; inv_.EnableControls; end;
عملية إدخال الفاتورة
procedure Tfm_inv.New_inv(numb:integer;inv_dat:real;custom_nam:string;custom_id,valu:integer);
var
bal:integer;
begin
if numb >0 then
if not daba.Inv_.Locate('inv_id',numb,[]) then
with daba do
begin
bal:= Get_Clint_balanc(custom_id);
Inv_.Insert;
inv_inv_id.AsString := IntToStr( numb );
inv_date.AsString := DateToStr(inv_dat);
Inv_cust_id.AsInteger := custom_id;
Inv_cus_name.AsString := custom_nam;
inv_inv_value.AsInteger := valu;
inv_desc.AsString:='Invoice';
inv_balanc.AsInteger:=bal+valu;
Inv_.Post;
end
end;عملية إدخال الدفعة
procedure Tfm_pay.New_pay(numb:integer;pay_dat:real;custom_nam,bank,chiq_dat,chiq_num,desc:string;custom_id,valu:integer);
var
bal:integer;
begin
if numb >0 then
if not daba.inv_.Locate('Pay_id',numb,[]) then
with daba do
begin
bal:= Get_Clint_balanc(custom_id);
Inv_.Insert;
inv_pay_id.AsString := IntToStr(numb);
Inv_date_real.AsFloat := pay_dat;
inv_date.AsString := DateToStr(pay_dat);
Inv_cust_id.AsInteger := custom_id;
Inv_cus_name.AsString := custom_nam;
inv_pay_val.AsInteger := valu;
inv_chiq_num.AsString := chiq_num;
inv_chiq_dat.AsString := chiq_dat;
inv_chiq_bank.AsString :=bank;
inv_desc.AsString :=desc;
inv_balanc.AsInteger:= bal - valu ;
Inv_.Post;
end;
end;عملية إظهار كشف الحساب
daba.q_stat.Close;
daba.q_stat.sql.Clear;
daba.q_stat.sql.add('SELECT inv.*,custm.name from inv,custm where inv.cust_id=custm.id'+' and inv.cust_id ='+edb_id.text );
daba.q_stat.open;