求教,代码执行到adoquery1.execsql的时候报错missing connection or connectionstring
谢谢各位
求教原因procedure TForm1.BitBtn1Click(Sender: TObject);var
access:string;
const
link_str='Provider=%s; Data Source=%s';
dataprovider='microsoft.jet.oledb.4.0';
begin
open_database.FileName:='*.mdb';
if open_database.Execute then
begin
    access:=open_database.FileName;
    edit1.Text:=access;
    adoconnection1.Connected:=false;
    adoconnection1.ConnectionString:=format(link_str,[dataprovider,access]);
    adoconnection1.Connected:=true;
    adoconnection1.GetTableNames(listbox1.Items);end;end;procedure TForm1.BitBtn2Click(Sender: TObject);
var
tablename:string;
begin
dbgrid1.DataSource:=datasource1;
datasource1.DataSet:=adoquery1;
tablename:=listbox1.Items.Strings[listbox1.itemIndex];adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select * from '+tablename+'';
try
  adoquery1.ExecSQL;
except
 showmessage('error');
 end;

解决方案 »

  1.   

    用open也是一样的,出一样的错误
      

  2.   

    adoconnection1.Connected:=true;
    ADOQuery1.Connection := ADOConnection1;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        ADOConnection1: TADOConnection;
        open_database: TOpenDialog;
        ListBox1: TListBox;
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      access:string;
    const
      link_str='Provider=%s; Data Source=%s';
      dataprovider='microsoft.jet.oledb.4.0';
    begin
      open_database.FileName:='*.mdb';
      if open_database.Execute then
      begin
        access:=open_database.FileName;
        edit1.Text:=access;
        adoconnection1.Connected:=false;
        adoconnection1.ConnectionString:=format(link_str,[dataprovider,access]);
        adoconnection1.Connected:=true;
        adoconnection1.GetTableNames(listbox1.Items);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      tablename:string;
    begin
      dbgrid1.DataSource:=datasource1;
      datasource1.DataSet:=adoquery1;
      //tablename:=listbox1.Items.Strings[listbox1.itemIndex];
      tablename:=ListBox1.Items.Strings[0];
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Text:='select * from '+tablename+'';
      try
        //adoquery1.ExecSQL;
        ADOQuery1.Open;
      except
       showmessage('error');
      end;
    end;
    end.
      

  4.   

    问题已经解决,忘记设置adoconnection了,谢谢各位