procedure TForm1.Button1Click(Sender: TObject); 
begin 
      qrysel:=TADOQuery.Create(nil); 
        try 
            qrysel.ConnectionString  :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test_ccerp;Data Source=192.168.16.229;';  //设置连接串               //qrysel.ConnectionString := TADOConnection;             with  qrysel        do 
            begin             qrysel.Active:=false; 
              qrysel.close; 
                qrysel.sql.clear; 
              qrysel.sql.add('select * from  bmdoc'); 
                try 
                qrysel.Open; 
                //qrysel.execsql; 
                //qrysel.Next;                     DataSource1.DataSet:=qrysel; 
                    DBGrid1.DataSource:=DataSource1; 
                    DBGrid1.Align := alClient; 
                      qrysel.Active:=True;                 except 
                    showmessage('error'); 
                end; 
            end;         finally 
            qrysel.free; 
        end; 
end;

解决方案 »

  1.   

                with  qrysel        do
                begin
                close;
                sql.clear;
                sql.add('select * from  bmdoc');
                 try
                   Open;
                   DataSource1.DataSet:=qrysel;
                   DBGrid1.DataSource:=DataSource1;
                   DBGrid1.Align := alClient;
                    except
                        showmessage('error');
                    end;
                end; 
      

  2.   

    如果不是星期六加班,我还空着,是不会改这个的,晕死了.没想到我还是改了.
    改的时候,还不知道,你具体错哪....一个一个看下来.....
    最后,对你的程序并不是说能运行了,因为错在哪我不知道,只是把你例出来的程序进行修正.错可能是别的地方的.
    ======================================================================================
    WITH QRYSEL DO                               //with ... do  已设置一个作用域
    begin 
        if Active=true then  active:=false;      // 你的没错,但这样写,可以少做一步. C
    //    qrysel.Active:=false;                  //A
    //    qrysel.close;                          //B
    //                                           //A句和B句等同,用上面一句C代替了.   
        ...
    ===========================
    var
     qrysel:TADOQUERY;
    begin
      qrysel:=TADOQuery.Create(nil);         // 这个前面没定义过,可能你定义的全局变量,如果是全局变量,那别的地方要引用,没必要后FINALLY
                                             // 处,把qrysel给释放掉,可以放在程序关闭时释放.
      ...
    end;
    ==========================    如果是用ADOCONNECT控件,那么连那个控件,只要保证ADOCONNECT程序打开后打开就行.别的ADO数据控件都能连它.
    qrysel.ConnectionString  :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test_ccerp;Data Source=192.168.16.229;';  //设置连接串             
    ==========================
    //                qrysel.Open;                //SQL语句SELECT都用这个.
    //qrysel.execsql;                             //UPDATE,INSERT,DELETE等,不返回记录数据为这个 
    // qrysel.Active:=True;                       //这句跟qrysel.open这句等同,有了上面OPEN,不需要这句
    =======================这三句都是在设置时,可以设置的,不需要语句再控制
                        DataSource1.DataSet:=qrysel;         //如果要控制,在OPEN前面可以设置.
                        DBGrid1.DataSource:=DataSource1;  //OPEN之后也能设置,不能说这三句是错的.
                        DBGrid1.Align := alClient;       //
    =============================
        showmessage('error');          //提示错误最好有代表,样吗抓值,要么给个代表具体意思的,如把这信息改为...'SQL查询错误'  //语句没错