在Delphi中经常调用如下语句
        Query1.Close;
        Query1.SQL.Clear ;
        ssql:='SQL语句';
        Query1.SQL.Add(ssql);
        try
          Query1.open;
        except
          Query1.ExecSQL;
        end;
        ss:=Query1.fields[0].asstring;
        ****
        ssn:=Query1.fields[n].asstring;请问这能不能编写一个函数,传递一个参数,来实行上面的效果阿

解决方案 »

  1.   

    procedure TForm_Child.OpenSQL(S: String) ;
    begin
         with ADOQuery_Temp do
           begin
           if Active then Close ;
           SQL.Clear ;
           SQL.Add(S) ;
           Prepared ;
           Open ;
           end ;  //of with
    end ;procedure TForm_Child.RunSQL(S: String) ;//区分是否可以返回结果
    begin
         with ADOQuery_Temp do
           begin
           if Active then Close ;
           SQL.Clear ;
           SQL.Add(S) ;
           Prepared ;
           try
             ExecSQL ;
           except
             on E: Exception do
                ShowMessage('SQL错误:' + E.Message);
             end ; //of try
           end ;  //of with
    end;
      

  2.   

    下面就是这个公共的函数,ssql为传入的SQL语句, DBName为使用的数据库名,StrLst为返回的值,你可以通过StrLst.Strings[i] 来拿到它的值。
    procedure ExecutedSQL(ssql: String; DBName: String;StrLst: TStringList);
    var
      Query1: TQuery;
    begin
      try
        Query1 := TQuery.Create(nil);
        Query1.DatabaseName := DBName;
        Query1.Close;
        Query1.SQL.Clear ;
        Query1.SQL.Add(ssql);
        try
          Query1.open;
        except
          Query1.ExecSQL;
        end;
            StrLst.Strings.Add(Query1.fields[0].asstring);
            ****
            StrLst.Strings.Add(Query1.fields[n].asstring);
      finally
        Query1.Close;
        Query1.Free;
      end;
    end;
      

  3.   

    下面就是这个公共的函数,ssql为传入的SQL语句, DBName为使用的数据库名,StrLst为返回的值,你可以通过StrLst.Strings[i] 来拿到它的值。
    procedure ExecutedSQL(ssql: String; DBName: String;StrLst: TStringList);
    var
      Query1: TQuery;
    begin
      try
        Query1 := TQuery.Create(nil);
        Query1.DatabaseName := DBName;
        Query1.Close;
        Query1.SQL.Clear ;
        Query1.SQL.Add(ssql);
        Query1.open;
        StrLst.Add(Query1.fields[0].asstring);
        ****
        StrLst.Add(Query1.fields[n].asstring);
      finally
        Query1.Close;
        Query1.Free;
      end;
    end;
      

  4.   

    谢谢,收到,不过应该再加一个字段
    procedure TfrmMain.ExecutedSQL(ssql:string;DBName:string;qn:integer;StrLst:TStringList);
    var
      Query1: TQuery;
      i:integer;
    begin
      try
        Query1 := TQuery.Create(nil);
        Query1.DatabaseName :=DBName;
        Query1.Close;
        Query1.SQL.Clear ;
        Query1.SQL.Add(ssql);
        try
          Query1.open;
        except
          Query1.ExecSQL;
        end;
        for i:=0 to qn-1 do
        begin
          StrLst.Add(Query1.fields[0].asstring);
        end;
      finally
        Query1.Close;
        Query1.Free;
      end;
    end;