把query1.execsql
改为query1.active:=true;

解决方案 »

  1.   

    DataSource1.DateSet := Query1;
      

  2.   

    改成:
    Query1.DataBaseName:=xxx
    Query1.DataSource:=DataSource1DBGrid1.DataSource:=DataSource1;procedure TfrmBook.FormCreate(Sender: TObject);
    begin
    if Query1.Active then
        Query1.Close();
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from book.db');
    Query1.Open;
    end;
      

  3.   

    你的query,datasouse,DBGrid间关系可能有误:
    Query1.DataBaseName:=xxxDataSource.DataSet:= Query1;//数据源!!!!!!!!!!!!!!!!!!!!!!DBGrid1.DataSource:=DataSource1;procedure TfrmBook.FormCreate(Sender: TObject);
    begin
    if Query1.Active then
        Query1.Close();
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from book.db');
    Query1.Open;
    end;
      

  4.   

    Query1.DataBaseName:=xxx
    Query1.DataSource:=DataSource1DBGrid1.DataSource:=DataSource1;procedure TfrmBook.FormCreate(Sender: TObject);
    begin
    if Query1.Active then
        Query1.Close();
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from book.db');
    Query1.open;                //改
    end;
      

  5.   

    把query1.execsql改为query1.active:=true就可以了,execute不返回数据集