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

📄 hrunit1.~pas

📁 delphi开发的抄表数据管理系统
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
unit HrUnit1;

interface
var
   PackStr:string;
   portname,baudname:integer;
   UserStr:array[0..32] of string;
   UserCount:string;
   ack,Wptr,Rptr,Rpoc,Poc,Rpec,TPOC,TPEC,InPack,counter:integer;
   lenflg,len:integer;
   function XLDownData_Task:integer;overload;
   function ParseData:integer;stdcall;
   function ParseTask:integer;stdcall;
   function Parse48DayCurveData:integer;stdcall;
   function Parse38DayHourCurveData:integer;stdcall;
   procedure saveData;
   procedure saveCurveData;
implementation
uses
   ADOdb,SysUtils,Dialogs,strutils,forms,pcomm,windows,Pack_CRCUnit1,ComCtrls,Variants,DateUtils,Controls,DataModuleUnit1,
  AppUtil;
//******************************************************************************
function XLDownData_Task:integer;overload;
var
    Fnum1:textfile;
    DownFileName,temp,cmd,temp2,temp3:string;
    i,j,k,count,ret,t0:integer;
    ch:array[1..1000] of string;
    flag,js,fh,exitflag:boolean;
    lvitem:tlistitem;
begin
        //****************************************生成新文件***************************************************************
            DataModule1.adoquery3.Connection:=DataModule1.ADOConnection1;
            DataModule1.adoquery3.SQL.Clear;
            DataModule1.adoquery3.Close;
            datamodule1.ADOQuery3.Filtered:=false;
            //DataModule1.adoquery3.SQL.Add('select * from 任务分配表 where 抄表员号='''+trim(operno)+''' and 区号='''+trim(quno)+''' and 抄表日期='''+formatdatetime('mmdd',strtodatetime(DownTaskForm.listview1.Items[i-1].Caption))+''' and 标记=''0'' order by 本号 asc,设备ID号 asc,抄表员号 asc;');
            //2007-01-23 改按 本号,注册号 排序
            DataModule1.adoquery3.SQL.Add('select * from 任务分配表');
            DataModule1.adoquery3.Prepared;
            DataModule1.adoquery3.open;

                assignfile(fnum1,extractfilepath(application.ExeName)+'Data\cIM_TA.db');
                rewrite(fnum1);
                if DataModule1.adoquery3.RecordCount <>0 then
                begin
                    for k:=1 to DataModule1.adoquery3.RecordCount do
                    begin
                        application.ProcessMessages;
                        if k=1 then
                            temp2:='#'
                        else
                        begin
                            if trim(datamodule1.ADOQuery3.FieldByName('区号').AsString)=midbstr(ch[k-1],32,2) then
                            begin
                                if trim(datamodule1.ADOQuery3.FieldByName('本号').AsString)=midbstr(ch[k-1],34,4) then
                                    temp2:='$'
                                else
                                    temp2:='@';
                            end
                            else
                                temp2:='%';
                        end;
                        DataModule1.adoquery4.Connection:=DataModule1.ADOConnection1;
                        DataModule1.adoquery4.SQL.Clear;
                        DataModule1.adoquery4.Close;
                        datamodule1.ADOQuery4.Filtered:=false;
                        DataModule1.adoquery4.SQL.Add('select * from 设备信息表 where 注册号='''+trim(datamodule1.ADOQuery3.fieldbyname('注册号').AsString)+'''');
                        DataModule1.adoquery4.Prepared;
                        DataModule1.adoquery4.open;
                        temp2:=temp2+leftstr(DataModule1.adoquery4.fieldbyname('设备类型').AsString,1);
                        temp2:=temp2+stringofchar(chr(32),1-length(trim(DataModule1.adoquery4.fieldbyname('通道号').AsString)))+trim(DataModule1.adoquery4.fieldbyname('通道号').AsString);
                        //************水表个数**************
                        if (trim(DataModule1.adoquery4.fieldbyname('设备类型').AsString)='WCTU') or (trim(DataModule1.adoquery4.fieldbyname('设备类型').AsString)='MCTU') then
                        begin
                            DataModule1.adoquery4.Connection:=DataModule1.ADOConnection1;
                            DataModule1.adoquery4.SQL.Clear;
                            DataModule1.adoquery4.Close;
                            datamodule1.ADOQuery4.Filtered:=false;
                            DataModule1.adoquery4.SQL.Add('select count(*) as num from 设备信息表 where 设备ID号='''+trim(datamodule1.ADOQuery3.fieldbyname('设备ID号').AsString)+''' and (设备类型=''WCTU'' or 设备类型=''MCTU'' )');
                            DataModule1.adoquery4.Prepared;
                            DataModule1.adoquery4.open;
                            if datamodule1.ADOQuery4.FieldByName('num').AsInteger>8 then
                                 temp2:=temp2+'8'
                            else
                                 temp2:=temp2+trim(DataModule1.adoquery4.fieldbyname('num').AsString);
                        end
                        else
                            temp2:=temp2+'0';
                        //**************水量抄表状态****************
                        temp2:=temp2+'N';
                        //******************************************
                        DataModule1.adoquery4.Connection:=DataModule1.ADOConnection1;
                        DataModule1.adoquery4.SQL.Clear;
                        DataModule1.adoquery4.Close;
                        datamodule1.ADOQuery4.Filtered:=false;
                        DataModule1.adoquery4.SQL.Add('select * from 设备信息表 where 注册号='''+trim(datamodule1.ADOQuery3.fieldbyname('注册号').AsString)+'''');
                        DataModule1.adoquery4.Prepared;
                        DataModule1.adoquery4.open;
                        temp2:=temp2+stringofchar(char(32),8-length(trim(DataModule1.adoquery4.fieldbyname('抄表地址').AsString)))+trim(DataModule1.adoquery4.fieldbyname('抄表地址').AsString);
                        //temp2:=temp2+stringofchar(chr(32),16-length(trim(datamodule1.adoquery3.FieldValues['注册号'])))+trim(datamodule1.adoquery3.FieldValues['注册号']);
                        if (trim(datamodule1.ADOQuery4.fieldbyname('设备类型').AsString)='MCTU') then
                            temp2:=temp2+leftbstr(trim(datamodule1.adoquery3.FieldValues['注册号']),length(trim(datamodule1.adoquery3.FieldValues['注册号']))-1)+stringofchar(chr(32),16-length(trim(datamodule1.adoquery3.FieldValues['注册号'])))+rightbstr(trim(datamodule1.adoquery3.FieldValues['注册号']),1)
                        else
                            temp2:=temp2+stringofchar(chr(32),16-length(trim(datamodule1.adoquery3.FieldValues['注册号'])))+trim(datamodule1.adoquery3.FieldValues['注册号']);
                        if ((trim(datamodule1.ADOQuery4.fieldbyname('设备类型').AsString)='WCTU') or (trim(datamodule1.ADOQuery4.fieldbyname('设备类型').AsString)='MCTU')) and (leftstr(trim(datamodule1.ADOQuery4.fieldbyname('设备类型').AsString),1)=midbstr(ch[k-1],2,1)) then
                        begin
                            if trim(datamodule1.ADOQuery4.fieldbyname('设备ID号').AsString)=temp3 then
                                temp2:=temp2+stringofchar(chr(32),2)
                            else
                                temp2:=temp2+trim(rightstr(datamodule1.adoquery3.FieldValues['抄表日期'],2));
                        end
                        else
                            temp2:=temp2+trim(rightstr(datamodule1.adoquery3.FieldValues['抄表日期'],2));
                        temp3:=trim(datamodule1.ADOQuery4.fieldbyname('设备ID号').AsString);
                        temp2:=temp2+stringofchar('0',2-length(trim(datamodule1.ADOQuery3.FieldValues['区号'])))+trim(datamodule1.ADOQuery3.FieldValues['区号']);
                        temp2:=temp2+stringofchar('0',4-length(trim(datamodule1.ADOQuery3.FieldValues['本号'])))+trim(datamodule1.ADOQuery3.FieldValues['本号']);
                        temp2:=temp2+stringofchar('0',3-length(trim(datamodule1.ADOQuery3.FieldValues['牌号'])))+trim(datamodule1.ADOQuery3.FieldValues['牌号']);
                        //**********************************************************
                        temp2:=temp2+stringofchar(chr(32),8-length(trim(datamodule1.adoquery3.FieldValues['上期指数'])))+trim(datamodule1.adoquery3.FieldValues['上期指数']);
                        temp2:=temp2+stringofchar(chr(32),8-length(trim(datamodule1.adoquery3.FieldValues['上期水量'])))+trim(datamodule1.adoquery3.FieldValues['上期水量']);
                        //**********************************************************
                        temp2:=temp2+stringofchar(chr(32),40-length(trim(datamodule1.adoquery3.FieldValues['用户名称'])))+trim(datamodule1.adoquery3.FieldValues['用户名称']);
                        temp2:=temp2+stringofchar(chr(32),50-length(trim(datamodule1.adoquery3.FieldValues['用户地址'])))+trim(datamodule1.adoquery3.FieldValues['用户地址']);
                        //******************曲线抄表状态*******************
                        temp2:=temp2+'N';
                        //*************************************************
                        ch[k]:=temp2;
                        writeln(fnum1,ch[k]);
                        DataModule1.adoquery3.Next;
                    end;
                end;
                closefile(fnum1);

            //---------------------------------------

            assignfile(fnum1,extractfilepath(application.ExeName)+'Data\cIM_DA.dbf');
            rewrite(fnum1);
            closefile(fnum1);

end;
//******************************************************************************
function ParseData:integer;stdcall;
var
   FromF:file;
   NumRead, NumWritten,j,i: Integer;
   temp:string;
   tempstr:array[1..16] of string;
   tempfj:Variant;
   dangl:real;
   Buf: array[0..51] of Char;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -