📄 raveprint.pas
字号:
unit RavePrint;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, RpBase, RpSystem, RpDefine, RpRave, StdCtrls, RpCon,
RpConDS, RpConBDE,ActiveX;
type
PDouble = ^Double; // 定义指针类型(双精度)
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
RaveExec: TButton;
Label1: TLabel;
RvProject: TRvProject;
RvSystem1: TRvSystem;
ADODSthick: TADODataSet;
ADODShead: TADODataSet;
ADODSend: TADODataSet;
RvDataSetConthick: TRvDataSetConnection;
RvDataSetConhead: TRvDataSetConnection;
RvDataSetConend: TRvDataSetConnection;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Label6: TLabel;
Edit5: TEdit;
SaveBtn: TButton;
Label7: TLabel;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure RaveExecClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
private
{ private declarations }
public
{ Public declarations }
end;
//////////////////////////////////////////////////////////////////////////////
function SaveData(hi, esthi:Integer; dataesthead, thicknessdata, dataestend:PDouble):Boolean;stdcall;
///////////////////////////////////////////////////////////////////////////////
var
Form1: TForm1;
h:Integer; //测点总数
esth:Integer; //评估点数
thick,head2,daend:PDouble; //厚度数据指针,表头数据2指针,表尾指针
implementation
{$R *.dfm}
function SaveData(hi, esthi:Integer; dataesthead, thicknessdata, dataestend:PDouble):Boolean; //显示数据保存页面
begin
CoInitialize(nil); //此函数在ActiveX中,功能是导出ADO类库
/////////////////////////////////////////////////////////////////
h :=hi; esth:=esthi;
head2 :=dataesthead; thick :=thicknessdata; daend :=dataestend;
/////////////////////////////////////////////////////////////////
Form1:=TForm1.Create(Application);
Form1.ShowModal;
Form1.Free;
CoUnInitialize();
Result:=True;
end;
//////////////////////////////////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
var
CurDir:String;
begin
GetDir(0,CurDir); //获得当前目录
ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurDir+'\rada.mdb;Persist Security Info=False';
ADOConnection1.Open;
RvProject.ProjectFile:=CurDir+'\rada.rav';
RaveExec.Enabled:=False;
with ADOQuery1 do //清空数据库中的原始数据
begin //清空厚度表
close;
SQL.Clear;
SQL.Add('delete from thickdata');
ExecSQL;
end;
with ADOQuery1 do //清空表头数据表
begin
close;
SQL.Clear;
SQL.Add('delete from datahead');
ExecSQL;
end;
with ADOQuery1 do //清空表尾数据表
begin
close;
SQL.Clear;
SQL.Add('delete from dataend');
ExecSQL;
end; //清空数据库完成
RvProject.Open;
end;
procedure TForm1.RaveExecClick(Sender: TObject); //打印报表
begin
RvProject.Execute;
end;
procedure TForm1.SaveBtnClick(Sender: TObject); //保存数据
var
i:integer;
stake,plant,permi,extre,ensur:String;
sampl,avera,stand,tasqr,repre,eligi:String;
zhuan,thickm:String;
thkadr:PDouble; //定义临时双精度指针
begin
with ADOQuery1 do
begin
for i:=0 to h-1 do //开始向数据库中写厚度数据
begin
thkadr:=thick; //将指针指向首位置
Inc(thkadr,i); //移动指针i个位置
zhuan:=FloatToStr(thkadr^); //工程桩号
Inc(thkadr,h); //移动指针h个位置
thickm:=FloatToStr(thkadr^); //设计厚度
//////////////////////////////////////////////////////////////////////////////
close;
SQL.clear;
SQL.Add('insert into thickdata(zhuanghao,thick)values("'+zhuan+'","'+thickm+'")');
ExecSQL;
end;
end;
with ADOQuery1 do //向数据库中写表头数据
begin
stake:=FloatToStr(head2^); //工程桩号
Inc(head2);
plant:=FloatToStr(head2^); //设计厚度
Inc(head2);
permi:=FloatToStr(head2^); // 代表值允许偏差
Inc(head2);
extre:=FloatToStr(head2^); //极值
Inc(head2);
ensur:=FloatToStr(head2^); //保证率
//Edit2.Text工程名称;Edit3.Text路线名称;Edit4.Text施工单位;Edit5.Text监理单位;Edit6.Text公路等级;Edit1.Text报表标题
close;
SQL.Clear;
SQL.Add('insert into datahead(project,roadname,construct,supervise,roadgrade,stakenom,planthick,permitwarp,extremum,ensurerate,reportcaption)');
SQL.Add('Values("'+Edit2.Text+'","'+Edit3.Text+'","'+Edit4.Text+'","'+Edit5.Text+'","'+Edit6.Text+'","'+stake+'","'+plant+'","'+permi+'","'+extre+'","'+ensur+'","'+Edit1.Text+'")');
ExecSQL;
end;
with ADOQuery1 do //向数据库中写表尾数据
begin
sampl:=IntToStr(esth); //采样点数
avera:=FloatToStr(daend^); //平均值
Inc(daend);
stand:=FloatToStr(daend^); //标准差
Inc(daend);
tasqr:=FloatToStr(daend^); //sqr 值
Inc(daend);
repre:=FloatToStr(daend^); //代表值
Inc(daend);
eligi:=FloatToStr(daend^); //合格率
///////////////////////////////////////////////////////
close;
SQL.Clear;
SQL.Add('insert into dataend(samplingcount,averagevalue,standarddif,tasqrn,representvalue,eligibilityrate)');
SQL.Add('Values("'+sampl+'","'+avera+'","'+stand+'","'+tasqr+'","'+repre+'","'+eligi+'")');
ExecSQL;
end;
RaveExec.Enabled := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -