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

📄 uu1.pas

📁 用串口发送手机短信 需要GSM Mode设备
💻 PAS
📖 第 1 页 / 共 2 页
字号:

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 + -