procedure TForm1.Button1Click(Sender: TObject);
begin
  datasource1.DataSet :=query1;
  dbgrid1.DataSource :=datasource1;
  query1.DatabaseName :='userinfo';
  query1.DataSource :=datasource1;
  query1.Active :=true;
  query1.Close;
  query1.SQL.Clear ;
  query1.SQL.Add('select * from userinfo');
  try
  query1.Open ;
  except
  query1.ExecSQL ;
  end;
end;
为什么会出错?请指点。

解决方案 »

  1.   

    query1.DataSource :=datasource1;//这行去掉,有这行会造成循环
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      datasource1.DataSet :=query1;
      dbgrid1.DataSource :=datasource1;
      query1.DatabaseName :='userinfo';
      query1.DataSource :=datasource1;
      query1.Active :=true;这里sql里边有语句吗,你就激活它。应该是 if query1.active   then query1.close;
      query1.Close;
      query1.SQL.Clear ;
      query1.SQL.Add('select * from userinfo');
      try
      query1.Open ;
      except
      query1.ExecSQL ;
      end;
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      datasource1.DataSet :=query1;
      dbgrid1.DataSource :=datasource1;
      query1.DatabaseName :='userinfo';
      query1.Close;
      query1.SQL.Clear ;
      query1.SQL.Add('select * from userinfo');
      query1.Active :=true;
      try
        query1.Open ;
      except
        query1.ExecSQL ;
      end;
    end;
    我改为这样之后,又出现“没有足够内存执行操作”的错误。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      datasource1.DataSet :=query1;
      dbgrid1.DataSource :=datasource1;
      query1.DatabaseName :='userinfo';
      query1.DataSource :=datasource1;;;//去掉
      query1.Active :=true;;//去掉
      query1.Close;
      query1.SQL.Clear ;
      query1.SQL.Add('select * from userinfo');
      try
      query1.Open ;
      except
      query1.ExecSQL 
      end;
    end
      

  5.   

    query1.DataSource :=datasource1;
    query1.Active :=true;
    这两句应该去掉.