F1Book 自定义的数据库访问函数(200分)

  • 主题发起人 主题发起人 饿饱鹅
  • 开始时间 开始时间
饿

饿饱鹅

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在Formual One v5 .or. v6中实现 支持自定义的数据库访问函数
支持不同报表间的数据运算?
要能给出源程序。
实在不行的话也可用 EXCEL 也行。

 
Formual One 只是一个类似EXCEL的东东,又不象DBGRID可以直接连
数据库。数据库的访问和运算全部靠自己写,取数和运算结束了然后在F1BOOK
里面显示。要一个格子一个格子地填。
所以自定义的数据库访问函数,怎么写都行。
 
不是说在程序中写具体的取数关系,而是程序完成后提供给用户一个函数,由用户
自行计算。例提供一个“ABS()”类的函数。
 
他支持ODBC 你可以查以下帮助

不同报表有公式你可以查SHEET1.A1
 
那你可以用到一些计算控件,如TMathParser。当用户定义了一个表达式,
你原样保存下来,需要计算时把表达式传给TMathParser,如ABS(-12),
还有加减乘除、四则运算、括号等等,该控件就会算出结果,你把结果返回
给对应的格子就行了。用于数学计算的控件有很多,到网上很多地方可以DOWN。
 
EXCEL?简单,我的一段代码:
var
Templete: Variant;
MsExcel:Variant;
MsExcelWorkBook:Variant;
i:integer;
begin
file://Create OLE link
Showmessage('可能需要等待一些时间,按确定开始执行报表!');
Templete := ReadRpt + RPT_COMPACT1;
try
MsExcel:=CreateOleObject('Excel.Application.8');
MsExcelWorkBook:=MsExcel.WorkBooks.Add(Templete);
except
Showmessage('请先安装 Microsoft Excel 97 或更高版本。');
exit;
end;
Screen.Cursor := crHourGlass;
file://ID
MsExcelWorkbook.ActiveSheet.Range['H3'].Value := AQCompactMain.Fields[0].AsString;
file://Date
MsExcelWorkbook.ActiveSheet.Range['H4'].Value := AQCompactMain.Fields[2].AsString;
MsExcel.Visible := true;
 
你要求的是不同报表间的运算,这好办。要建立一个表,或者一个字段,
里面存放使用者对该格子取数的定义,如B3=B1+B2,到时候把B1+B2这个
字符串分解一下,从B1、B2中把数取过来,用一个计算控件计算一下就得了。
这是简单的,复杂的还有更复杂的存放方法。
具体怎么保存要看你的报表取数的表是怎么设计的。我见过各种不同的设计
方法和思路,各有优缺点。你做之前还要考虑你开发的系统大不大,报表是否
太复杂,格式是固定的还是用户可以自己画的……等等,要好好规划。
后面的开发都不是很难的。
 
规划倒不需要,我只是看到一些程序的思路,想自己搞一个公用模块,为其它的一些
程序所能共用。特别是我看了一些财务软件的报表编制系统。可是各位同志们的回答
好象于我的提问有些偏。希望能得到更好的答案,谢谢。
另外大家提到了一些控件,要有表间计算和向其它文件,如数据库取数的功能,
希望能提供下载网址。


 
>>
arm、adminis的方法都是可取的!
 
接受答案了.
 
后退
顶部