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

📄 uu1.pas.~2~

📁 用串口发送手机短信 需要GSM Mode设备
💻 ~2~
📖 第 1 页 / 共 5 页
字号:
  			+'[XH3]	  [tinyint] DEFAULT 255  NULL ,'
        +'[cJZ]		[tinyint] DEFAULT 255  NULL ,'    //当前基站ID
		  	+'[cXH]	  [tinyint] DEFAULT 255  NULL ,'    //当前信号强度
        +'[JZo]		[tinyint] DEFAULT 255  NULL ,'    //上一基站ID
  			+'[XHo] 	[tinyint] DEFAULT 255  NULL ,'    //上一信号强度
        +'[Vol]		[tinyint] DEFAULT 0  NULL ,'    //当前卡的电压
  			+'[wd]  	[tinyint] DEFAULT 0  NULL ,'    //当前卡的温度
	  		+'[tT]		[datetime] NOT NULL ,'            //接收时间
        +'[基站状态]		[tinyint] DEFAULT 255  NULL ,'
			  +'[卡状态]	     [tinyint] DEFAULT 0  NULL ,'        //$80    $40    $20    $10        $08    $04      $02    $01
        +'[iDU]	 [tinyint] DEFAULT 1  NULL ,' //下上井标识  //盲区  卡警   软警   超时       超人数  限制区域 补采   井下(若为0表示状态不明)
  			+'PRIMARY KEY([卡ID],[tT])	)';
      adoQury.SQL.Add(sql);

      sql :='if not exists (select [name] from sysobjects where [name] = ''_历史基站数据表'+toInt_xs(i,2)+''')'
        +'CREATE TABLE [_历史基站数据表'+toInt_xs(i,2)+'] ('
    		+'[id]			[bigint] IDENTITY(-2000000000, 1) NOT NULL ,'
		    +'[基站ID]		  [tinyint] NOT NULL ,'
    		+'[基站类型ID]	[tinyint]  NOT NULL ,'
        +'[当前人数]		[smallint] NULL ,'		//直接收到的人数
    		+'[过滤人数]		[smallint] NULL ,'    //重复采集后经处理的人数
		    +'[基站状态]		[tinyint]  NULL ,'
    		+'[接收时间]		[datetime] NOT NULL ,'
		    +'PRIMARY KEY([基站ID],[接收时间])	)';
      adoQury.SQL.Add(sql);

      sql :='if not exists (select [name] from sysobjects where [name] = ''故障表'')'
        +'CREATE TABLE [故障表] ('
		    +'[sbNo]		[int] NOT NULL ,'     //故障设备号
    		+'[iTime]  	[int] NOT NULL ,'     //开始时间
        +'[sbLX]		[tinyint] NOT NULL ,' //设备类型     9代表分站
    		+'[fTim]		[datetime] NOT NULL ,'    //开始时间
        +'[lTim]		[datetime] NOT NULL ,'    //结束时间
		    +'[cntC]		[int]  DEFAULT 0 NOT NULL ,'      //统计次
        +'[cntS]		[int]  DEFAULT 0 NOT NULL ,'      //统计秒
    		+'[sCS]	  	[nvarchar] (20) NULL ,'
		    +'PRIMARY KEY([sbNo],[iTime],[sbLX])	)';
      adoQury.SQL.Add(sql);




      

      sql :='if not exists (select [name] from sysobjects where [name] = ''_历史数据'+toInt_xs(i,2)+''')'
			  +'CREATE TABLE [_历史数据'+toInt_xs(i,2)+'] ('
  			+'[cd]		[int] NOT NULL ,'        //测点号
        +'[lx]	  [tinyint] NULL ,'        //类型
		  	+'[cgq]   [tinyint] NULL ,'        //传感器号
        +'[val]	  [real]  NULL ,'          //监测值
        +'[sta]	  [smallint]  NULL ,'      //状态
        +'[tim]	  [datetime]  Not NULL ,'  //时间
		  	+'PRIMARY KEY([cd],[tim])	)';
      adoQury.SQL.Add(sql);

      sql :='if not exists (select [name] from sysobjects where [name] = ''_小时数据'+toInt_xs(i,2)+''')'
			  +'CREATE TABLE [_小时数据'+toInt_xs(i,2)+'] ('
        +'[id]		[int] IDENTITY(-2000000000, 1) NOT NULL ,'
  			+'[cd]		[int] NOT NULL ,'
		  	+'[mbs]   [tinyint] Not NULL ,'
        +'[miV]	  [real]  NULL ,'
        +'[agV]	  [real]  NULL ,'
        +'[maV]	  [real]  NULL ,'
        +'[tim]	  [datetime]  Not NULL ,'
		  	+'PRIMARY KEY([cd],[tim])	)';
      adoQury.SQL.Add(sql);
    end;
  end; //if flag then begin  //seei库
      

  try try
    adoQury.ExecSQL; //隐含了事务处理,当字段数不正确时全不写入,当关键字重复时仅跳过重复行
    rtn :=true;      //不管是否创建表,都为True(隐含了事务处理)
  except end finally
    adoQury.Close;
  end;

  //函数
  //与 Cmp按位与后是否等于 cmp  相等返回1  不等返回0
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE FUNCTION funCmp(  @iData tinyint, @iCmp tinyint ) ');
  adoQury.SQL.Add('RETURNS bit AS');
  adoQury.SQL.Add('begin');
  adoQury.SQL.Add('  declare @rtn bit');
  adoQury.SQL.Add('  if (@iData & @iCmp)=@iCmp begin ');
  adoQury.SQL.Add('	    set @rtn=1 ');
  adoQury.SQL.Add('  end else begin');
  adoQury.SQL.Add('     set @rtn=0 ');
  adoQury.SQL.Add('  end');
  adoQury.SQL.Add('  return @rtn');
  adoQury.SQL.Add('end');
  adoQury.ExecSQL;

  //与 Cmp按位与后是否等于 0   不等于0返回1  等于0返回0
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE FUNCTION funCmpZero(  @iData tinyint, @iCmp tinyint ) ');
  adoQury.SQL.Add('RETURNS bit AS');
  adoQury.SQL.Add('begin');
  adoQury.SQL.Add('  declare @rtn bit');
  adoQury.SQL.Add('  if (@iData & @iCmp)<>0 begin ');
  adoQury.SQL.Add('	    set @rtn=1 ');
  adoQury.SQL.Add('  end else begin');
  adoQury.SQL.Add('     set @rtn=0 ');
  adoQury.SQL.Add('  end');
  adoQury.SQL.Add('  return @rtn');
  adoQury.SQL.Add('end');
  adoQury.ExecSQL;
{
  adoQury.SQL.Clear;
  adoQury.SQL.Add('/*查找一个煤矿一个测点(关联传感器)一天的最大值*/');
  adoQury.SQL.Add('/*煤矿号,测点号,传感器号,天*/ ');
  adoQury.SQL.Add('CREATE FUNCTION fun1(  ');
  adoQury.SQL.Add('  @sMK nvarchar(10), @sCD varchar(8), ');
  adoQury.SQL.Add('  @iNo int,@yyyyMMdd char(8) ) ');
  adoQury.SQL.Add('RETURNS float AS');
  adoQury.SQL.Add('begin');
  adoQury.SQL.Add('  declare @rtn float');
  adoQury.SQL.Add('  set @rtn=(select Max(最大值) from 小时数据');
  adoQury.SQL.Add('	    where 煤矿号=@sMK and 测点号=@sCD and 传感器号=@iNo ');
  adoQury.SQL.Add('  	    and (iTime Between @yyyyMMdd+''00'' and @yyyyMMdd+''23'') ) ');
  adoQury.SQL.Add('  if @rtn is null begin set @rtn=-999998.5 end');
  adoQury.SQL.Add('  return @rtn');
  adoQury.SQL.Add('end');
  adoQury.ExecSQL;
  }
  //返回一月的天数,取一月的最后一天
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE function mthDays(@tT DateTime) returns int');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('begin');
  adoQury.SQL.Add('  declare  @rtn  int,@Y  int,@M  int');
  adoQury.SQL.Add('  set @Y=Cast(DATEPART(year, @tT) AS int)');
  adoQury.SQL.Add('  set @M=Cast(DATEPART(month, @tT) AS int)');
  adoQury.SQL.Add('  if (@M=1)or(@M=3)or(@M=5)or(@M=7)or(@M=8)or(@M=10)or(@M=12)');
  adoQury.SQL.Add('    set @rtn=31');
  adoQury.SQL.Add('  else if (@M=4)or(@M=6)or(@M=9)or(@M=11)');
  adoQury.SQL.Add('    set @rtn=30');
  adoQury.SQL.Add('  else if (@M=2)');
  adoQury.SQL.Add('    if (@Y%400=0) or (@Y%4=0 and @Y%100<>0) set @rtn=29');
  adoQury.SQL.Add('    else    set @rtn=28');
  adoQury.SQL.Add('  else  set @rtn=-1');
  adoQury.SQL.Add('  return   @rtn');
  adoQury.SQL.Add('end');
  adoQury.ExecSQL;

  // /*因涉及跨表查数据,故要根据一个时间推出合适的上月时间(从12点算)*/
  // /*是1月或不是当月的1号,返回原传入的时间,  否则返回上月最后一天的后12小时*/
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE function preTime(@tT DateTime) returns DateTime ');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('begin');
  adoQury.SQL.Add('  declare  @rtn DateTime, @Y int, @M int, @D int ');
  adoQury.SQL.Add('  declare @oldM int,  @olds int ');
  adoQury.SQL.Add('  set @Y=Cast(DATEPART(year, @tT) AS int) ');
  adoQury.SQL.Add('  set @M=Cast(DATEPART(month, @tT) AS int) ');
  adoQury.SQL.Add('  set @D=Cast(DATEPART(day, @tT) AS int) ');
  adoQury.SQL.Add('  if (@M<>1)and(@D=1) begin ');
  adoQury.SQL.Add('    set @oldM=@M-1 ');
  adoQury.SQL.Add('    if (@oldM=4)or(@oldM=6)or(@oldM=9)or(@oldM=11) ');
  adoQury.SQL.Add('      set @olds=30 ');
  adoQury.SQL.Add('    else if (@oldM=2) ');
  adoQury.SQL.Add('      if (@Y%400=0) or (@Y%4=0 and @Y%100<>0) set @olds=29 ');
  adoQury.SQL.Add('      else    set @olds=28 ');
  adoQury.SQL.Add('    else set @olds=31 ');
  adoQury.SQL.Add('    set @rtn=Cast(Cast(@Y as varchar)+''-''+Cast(@oldM as varchar) ');
  adoQury.SQL.Add('            +''-''+Cast(@olds as varchar)+'' 12:00:00'' As DateTime) ');
  adoQury.SQL.Add('  end else begin ');
  adoQury.SQL.Add('    set @rtn=@tT ');//  /*是1月或不是当月的1号,返回原传入的时间*/
  adoQury.SQL.Add('  end ');
  adoQury.SQL.Add('return   @rtn ');
  adoQury.SQL.Add('end ');
  adoQury.ExecSQL;

  // /*因涉及跨表查数据,故要根据一个时间推出合适的后一月时间*/
  // /*若是12月返回原传入的时间*/
  // /*若是31号23点59分59秒返回后一月1号的前10小时*/
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE function aftTime(@tT DateTime) returns DateTime ');
  adoQury.SQL.Add('AS ');
  adoQury.SQL.Add('begin ');
  adoQury.SQL.Add('  declare  @rtn DateTime, @Y int, @M int, @D int, @H int, @F int ');
adoQury.SQL.Add('  declare @lstM int,  @iMthDays int ');
  adoQury.SQL.Add('  set @Y=Cast(DATEPART(year, @tT) AS int) ');
  adoQury.SQL.Add('  set @M=Cast(DATEPART(month, @tT) AS int) ');
  adoQury.SQL.Add('  set @D=Cast(DATEPART(day, @tT) AS int) ');
  adoQury.SQL.Add('  set @H=Cast(DATEPART(Hour, @tT) AS int) ');
  adoQury.SQL.Add('  set @F=Cast(DATEPART(minute, @tT) AS int) ');
  adoQury.SQL.Add('  if (@M=4)or(@M=6)or(@M=9)or(@M=11) ');
  adoQury.SQL.Add('    set @iMthDays=30 ');
  adoQury.SQL.Add('  else if (@M=2) ');
  adoQury.SQL.Add('    if (@Y%400=0) or (@Y%4=0 and @Y%100<>0) set @iMthDays=29 ');
  adoQury.SQL.Add('    else    set @iMthDays=28 ');
  adoQury.SQL.Add('  else set @iMthDays=31 ');
  adoQury.SQL.Add('  if (@M<>12)and(@D=@iMthDays)and(@H=23)and(@F=59) begin ');
  adoQury.SQL.Add('    set @lstM=@M+1 ');
  adoQury.SQL.Add('    set @rtn=Cast(Cast(@Y as varchar)+''-''+Cast(@lstM as varchar)+''-01 12:00:00'' As DateTime) ');
  adoQury.SQL.Add('  end else begin ');
  adoQury.SQL.Add('    set @rtn=@tT ');
  adoQury.SQL.Add('  end ');
  adoQury.SQL.Add('return   @rtn ');
  adoQury.SQL.Add('end ');

  //存储过程
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPartMents');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  select 部门ID,部门名,等级=1,上级号=0 from 部门表1');
  adoQury.SQL.Add('  union');
  adoQury.SQL.Add('  select 部门ID,部门名,等级=2,上级号=部门ID1 from 部门表2');
  adoQury.SQL.Add('  union');
  adoQury.SQL.Add('  select 部门ID,部门名,等级=3,上级号=部门ID2 from 部门表3');
  adoQury.SQL.Add('  order by 等级,上级号,部门ID');
  adoQury.ExecSQL;

  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPartMentView2');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  SELECT dbo.部门表2.部门ID, dbo.部门表2.部门名, dbo.部门表2.部门ID1, ');
  adoQury.SQL.Add('    dbo.部门表2.负责人, dbo.部门表2.负责人ID, dbo.部门表2.联系电话1, ');
  adoQury.SQL.Add('    dbo.部门表2.联系电话2, dbo.部门表1.部门名 AS 部门名1');
  adoQury.SQL.Add('  FROM dbo.部门表2 LEFT OUTER JOIN');
  adoQury.SQL.Add('  dbo.部门表1 ON dbo.部门表2.部门ID1 = dbo.部门表1.部门ID');
  adoQury.ExecSQL;

  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPartMentView3');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  SELECT dbo.部门表3.部门ID, dbo.部门表3.部门名, dbo.部门表3.部门ID2, ');
  adoQury.SQL.Add('    dbo.部门表3.负责人, dbo.部门表3.负责人ID, dbo.部门表3.联系电话1, ');
  adoQury.SQL.Add('    dbo.部门表3.联系电话2, dbo.部门表2.部门名 AS 部门名2, dbo.部门表2.部门ID1, ');
  adoQury.SQL.Add('    dbo.部门表1.部门名 AS 部门名1');
  adoQury.SQL.Add('  FROM dbo.部门表2 LEFT OUTER JOIN');
  adoQury.SQL.Add('    dbo.部门表1 ON dbo.部门表2.部门ID1 = dbo.部门表1.部门ID RIGHT OUTER JOIN');
  adoQury.SQL.Add('    dbo.部门表3 ON dbo.部门表2.部门ID = dbo.部门表3.部门ID2');
  adoQury.ExecSQL;

  /////////////////
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPartMentSimply2');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  SELECT dbo.部门表2.部门ID AS 部门ID2, dbo.部门表2.部门名 AS 部门名2, ');
  adoQury.SQL.Add('    dbo.部门表1.部门ID AS 部门ID1, dbo.部门表1.部门名 AS 部门名1');
  adoQury.SQL.Add('  FROM dbo.部门表2 LEFT OUTER JOIN');
  adoQury.SQL.Add('  dbo.部门表1 ON dbo.部门表2.部门ID1 = dbo.部门表1.部门ID');
  adoQury.ExecSQL;

  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPartMentSimply3');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  SELECT dbo.部门表3.部门ID AS 部门ID3, dbo.部门表3.部门名 AS 部门名3, ');
  adoQury.SQL.Add('    dbo.部门表2.部门ID AS 部门ID2, dbo.部门表2.部门名 AS 部门名2, ');
  adoQury.SQL.Add('    dbo.部门表1.部门ID AS 部门ID1, dbo.部门表1.部门名 AS 部门名1');
  adoQury.SQL.Add('  FROM dbo.部门表2 LEFT OUTER JOIN');
  adoQury.SQL.Add('    dbo.部门表1 ON dbo.部门表2.部门ID1 = dbo.部门表1.部门ID RIGHT OUTER JOIN');
  adoQury.SQL.Add('    dbo.部门表3 ON dbo.部门表2.部门ID = dbo.部门表3.部门ID2');
  adoQury.ExecSQL;
  {
  adoQury.SQL.Clear;
  adoQury.SQL.Add('CREATE Procedure wpgPerson');
  adoQury.SQL.Add('AS');
  adoQury.SQL.Add('  SELECT dbo.人员表.人员ID, dbo.人员表.iTime, dbo.人员表.卡ID, dbo.人员表.姓名,');
  adoQury.SQL.Add('    dbo.人员表.身份证, dbo.人员表.性别, dbo.人员表.出生日期, dbo.人员表.部门1, ');
  adoQury.SQL.Add('    dbo.人员表.部门2, dbo.人员表.部门3, dbo.人员表.工种, dbo.人员表.职务, ');
  adoQury.SQL.Add('    dbo.人员表.联系电话, dbo.人员表.主要工作地点, dbo.人员表.日下井时间, ');
  adoQury.SQL.Add('    dbo.人员表.月下井次, dbo.人员表.班次, dbo.部门表3.部门名 AS 部门名3, ');

⌨️ 快捷键说明

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