熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

經典案例 財務管理系統(12)[3]

2013-11-23 17:45:06  來源: Delphi編程 

  //在輸入分錄表時調用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;

[]  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25019.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.