电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

经典案例 财务管理系统(12)[3]


发布日期:2023/6/9
 

//在输入分录表时调用DLL中的表格选择科目名称和号码

procedure TDocuInputStringGridDblClick(Sender: TObject);

var

showForm:TShowDllForm;

module:Thandle;

begin

//只有双击指定列才有效

if curCol<> then exit;

//读入DLL

module:=loadlibrary(secdll);

//如果读入错误则module会是一个小于的错误代码

//由此可以判断是否读入成功

if module< then exit;

@showForm:=getprocaddress(modulepchar());

if @showForm=nil then exit;

//通过DLL传递参数

stringgridCells[curRow]:=showForm(applicationHandle选择科目名称科目表);

//为科目代码添加科目名称

adoqueryClose;

adoquerySQLClear;

adoquerySQLAdd(select 科目名称 from 科目表 where 科目代码

=+stringgridCells[curRow]+);

adoqueryOpen;

stringgridCells[curRow]:=adoqueryfieldbyname(科目名称)AsString;

end;

//对分录表进行插入和修改时所执行的操作

procedure TDocuInputOpType(opname: string);

var

i:integer;

inputvaloutputvaloldnum:string;

begin

//如果是新增凭证则直接将分录表中的数据逐条插入

if opname=insert then

begin

for i:= to do

begin

//如果表格中为空则跳出循环

if stringgridCells[i]= then continue;

inputval:=stringgridcells[i];

outputval:=stringgridcells[i];

//插入数据由于借方和贷方数据在sql server中为money故需要进行转换

adocommandCommandText:=insert into 分录表([凭证编号][科目代码]

[借方][贷方][摘要]) values(+dbeditText+

+stringgridCells[i]+cast(+inputval+ as money)

cast(+outputval+ as money)+stringgridCells[i]+);

adocommandExecute;

end;

end;

if opname=edit then

begin

for i:= to do

begin

if stringgridCells[i]= then continue;

inputval:=stringgridcells[i];

outputval:=stringgridcells[i];

//对凭证所属的分录表原有数据进行更新

if i<=recordnum then

adocommandCommandText:=update 分录表 set [科目代码]

=+stringgridcells[i]+[借方]=cast(+inputval+ as money)

[贷方]=cast(+outputval+ as money)[摘要]=+stringgridCells[i]

+ where 编号=+mytable[i]+

else

//插入凭证所属的分录表中的新数据

adocommandCommandText:=insert into 分录表([凭证编号][科目代码]

[借方][贷方][摘要]) values(+dbeditText+

+stringgridCells[i]+cast(+inputval+ as money)

cast(+outputval+ as money)+stringgridCells[i]+);

adocommandExecute;

end;

end;

end;

[] [] []

上一篇:经典案例 财务管理系统(12)[1]

下一篇:经典案例 财务管理系统(12)[2]