📄 uu1.pas.~4~
字号:
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, ');
adoQury.SQL.Add(' dbo.部门表2.部门名 AS 部门名2, dbo.部门表1.部门名 AS 部门名1');
adoQury.SQL.Add(' FROM dbo.人员表 LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表1 ON dbo.人员表.部门1 = dbo.部门表1.部门ID LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表2 ON dbo.人员表.部门2 = dbo.部门表2.部门ID LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表3 ON dbo.人员表.部门3 = dbo.部门表3.部门ID');
adoQury.ExecSQL;
}
adoQury.SQL.Clear;
adoQury.SQL.Add('CREATE Procedure wpgSomeTh');
adoQury.SQL.Add('AS');
adoQury.SQL.Add(' select 采区ID as iID,采区名 as sName,类别=1 from 采区表');
adoQury.SQL.Add(' union');
adoQury.SQL.Add(' select 工种ID,工种名,类别=2 from 工种表');
adoQury.SQL.Add(' union');
adoQury.SQL.Add(' select 职务ID,职务名,类别=3 from 职务表');
// adoQury.SQL.Add(' union');
// adoQury.SQL.Add(' select 主要工作地ID,主要工作地点,类别=4 from 主要工作地点表');
adoQury.SQL.Add(' order by 类别,iID');
adoQury.ExecSQL;
adoQury.SQL.Clear;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -