⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 raveprint.pas

📁 c++与delphi数据传递
💻 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 + -