📄 uu1.pas
字号:
function sqlQuryExec(name, sql:string):boolean; //执行sql语句, name为库名
var
Qury :TADOQuery;
rtn:boolean;
begin
rtn := false;
Qury := TADOQuery.Create(nil);
sqlQurySub(name,Qury);
if length(sql)>5 then begin
Qury.SQL.Text :=sql;
try try
Qury.ExecSQL; //隐含了事务处理,当字段数不正确时全不写入,当关键字重复时仅跳过重复行
rtn :=true;
except end finally
Qury.Close;
end;
end;
Qury.Close;
FreeAndNil( Qury );
Result := rtn;
end;
function sqlComdExec(name :string; sql :string):boolean; //执行sql语句, name为库名
var
Comd :TADOCommand;
rtn:boolean;
begin
rtn := false;
Comd := TADOCommand.Create(nil);
sqlComdSub(name,Comd);
if length(sql)>5 then begin
Comd.CommandText :=sql;
try try
Comd.Execute;
rtn :=true;
except end finally
end;
end;
FreeAndNil( Comd );
Result := rtn;
end;
procedure sqlLst(name,sql,c :string; var lst :TStrings); //执行sql语句, name为库名
var
Qury :TADOQuery;
str:string;
i:integer;
begin
Qury := TADOQuery.Create(nil);
sqlQurySub(name,Qury);
Qury.SQL.Text :=sql;
try
Qury.Open;
while not Qury.Eof do begin
str :=Qury.Fields[0].AsString;
for i :=2 to Qury.Fields.Count do begin
str :=str+c+Qury.Fields[i-1].Text;
end;
//lst.Add( Qury.Fields[0].AsString );
lst.Add( str );
Qury.Next;
end;
finally
Qury.Close;
FreeAndNil( Qury );
end;
end;
function existRecord(name,table,field,value :string):boolean; //是否存在记录, name为库名, table为表名, field为字段名, value为值
var
Qury :TADOQuery;
rtn:boolean;
begin
rtn := false;
Qury := TADOQuery.Create(nil);
sqlQurySub(name,Qury);
Qury.SQL.Text :='select '+field+' from '+table+' where '+field+'='''+value+'''';
try try
Qury.Open ;
if Qury.RecordCount>0 then begin
rtn :=true;
end;
except end finally
Qury.Close;
FreeAndNil( Qury );
end;
Result := rtn;
end;
function existRecordSql(name,sql :string):boolean; //是否存在记录, 用sql语句判断
var
Qury :TADOQuery;
rtn:boolean;
begin
rtn := false;
Qury := TADOQuery.Create(nil);
sqlQurySub(name,Qury);
Qury.SQL.Text :=sql;
try try
Qury.Open ;
if Qury.RecordCount>0 then begin
rtn :=true;
end;
except end finally
Qury.Close;
FreeAndNil( Qury );
end;
Result := rtn;
end;
function sRecordSql(name,sql :string):string;//用sql语句返回第一条记录的第一字段数据
var
Qury :TADOQuery;
rtn:string;
begin
rtn := '^-^';
Qury := TADOQuery.Create(nil);
sqlQurySub(name,Qury);
Qury.SQL.Text :=sql;
try try
Qury.Open ;
if Qury.RecordCount>0 then begin
rtn :=Qury.Fields[0].AsString;
end;
except end finally
Qury.Close;
FreeAndNil( Qury );
end;
Result := rtn;
end;
procedure sqlStrGrd3(name, sql:string; var sg:TStringGrid; s1:string='-'; s2:string='-');
{//***********汪平刚**********
直接通过sql语句返回一个 TStringGrid 表
s1 s2 不为 '-' 时表示sql语句带有两个参数
sql := 'select 测点号,传感器号,最小值,最大值,时间 from 小时数据 where 时间 between :tt1 and :tt2';
s1 := '2007-7-18 8:59:59';
s2 := '2007-7-18 12:59:59';
uU1.oleStrGrd3('D:\ZMAT\mdb\20070718.mdb','seei', sql, StringGrid1,s1,s2);
}
var
adoQury: TADOQuery;
i,j:integer;
begin
adoQury := TADOQuery.Create(nil);
sqlQurySub(name,adoQury);
adoQury.SQL.Text := sql;
if s1<>'-' then begin
adoQury.Parameters.Items[0].Value := s1;
if s2<>'-' then adoQury.Parameters.Items[1].Value := s2;
end;
adoQury.Open;
sg.ColCount := adoQury.Fields.Count;
sg.RowCount := adoQury.RecordCount+1; //第一行为标头
for j :=1 to sg.RowCount-1 do sg.Rows[j].Clear;
for j:=0 to adoQury.Fields.Count-1 do sg.Cells[j,0] := 'Fld'+IntToStr(j);
i:=1; adoQury.First;
while not adoQury.Eof do begin
for j:=0 to adoQury.Fields.Count-1 do begin
sg.Cells[j,i] := adoQury.Fields[j].Text ;
end;
adoQury.Next;
Inc(i);
end;
adoQury.Close;
FreeAndNil(adoQury);
end;
function tabToRow(tmpStr:string; col:SmallInt; var sg:TStringGrid):LongInt;
{/*************汪平刚*************
* 在 TStringGrid 中通过第 col列 的 tmpStr值 定位测点的行
* 若没有此关键字的记录,返回 -1
* 若有多个关键字,返回第一条
* ******************************/}
var
rtn , i : LongInt;
begin
rtn := -1;
for i:=1 to sg.RowCount do begin
if (Trim(sg.Cells[col,i-1])=tmpStr) then begin
rtn := i-1;
break;
end;
end;
Result := rtn;
end;
function tabToRow2(Str1,Str2:string; col1,col2:SmallInt; var sg:TStringGrid):LongInt;
{/*************汪平刚*************
* 在 TStringGrid 中通过第 col列 的 tmpStr值 定位测点的行
* 此函数由两个关键字查找
* 若没有此关键字的记录,返回 -1
* 若有多个关键字,返回第一条
* ******************************/}
var
rtn , i : LongInt;
begin
rtn := -1;
for i:=1 to sg.RowCount do begin
if (Trim(sg.Cells[col1,i-1])=Str1)and(Trim(sg.Cells[col2,i-1])=Str2) then begin
rtn := i-1;
break;
end;
end;
Result := rtn;
end;
function tabToRow3(Str1,Str2,Str3:string; col1,col2,col3:SmallInt; var sg:TStringGrid):LongInt;
{/*************汪平刚*************
* 在 TStringGrid 中通过第 col列 的 tmpStr值 定位测点的行
* 此函数由三个关键字查找
* 若没有此关键字的记录,返回 -1
* 若有多个关键字,返回第一条
* ******************************/}
var
rtn , i : LongInt;
begin
rtn := -1;
for i:=1 to sg.RowCount do begin
if (Trim(sg.Cells[col1,i-1])=Str1)
and(Trim(sg.Cells[col2,i-1])=Str2)
and(Trim(sg.Cells[col3,i-1])=Str3)
then begin
rtn := i-1;
break;
end;
end;
Result := rtn;
end;
function tabToRow_s(tmpStr:string; col,colRtn:SmallInt; var sg:TStringGrid):string;
{/*************汪平刚*************
* 在 DataTable 中通过第 col列 的 No值 查找 colRtn列 的值
* 若没有此关键字的记录,返回 ^-^
* 若有多个关键字,返回第一条
* ******************************/}
var
rtn : string;
i : LongInt;
begin
rtn := '^-^';
for i:=1 to sg.RowCount do begin
if (Trim(sg.Cells[col,i-1])=tmpStr) then begin
rtn := sg.Cells[colRtn,i-1];
break;
end;
end;
Result := rtn;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -