下面的代码中这一句为什么adoconnection1.ConnectionString:=format(conststr,[provider.text,dataprovider.text,edtdatasource.text]);
老出现错误,是不是我定义错了!!还望大家多帮帮忙,谢谢!(还望讲讲format的具体使用方法,什么时候一般要用?)unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, ADODB, DB, DBTables,
  ComCtrls;type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    DataSource1: TDataSource;
    Table1: TTable;
    Database1: TDatabase;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    ADOConnection2: TADOTable;
    DataSource2: TDataSource;
    OpenDialog2: TOpenDialog;
    BtnOpen: TButton;
    RadioGroup1: TRadioGroup;
    DBGrid1: TDBGrid;
    BtnBrowser: TButton;
    BtOpenFile: TButton;
    Tabel1: TButton;
    provider: TEdit;
    Edit1: TEdit;
    EdtDataSource: TEdit;
    ComboBox1: TComboBox;
    BtnOpen2: TButton;
    BtnBrowser2: TButton;
    ComboBox2: TComboBox;
    DBGrid2: TDBGrid;
    edtDriver: TEdit;
    EdtDataBase: TEdit;
    procedure BtnOpenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BtnOpenClick(Sender: TObject);
const
   conststr='provider=%s ;data provider=%s;data source=%s';
begin
    if not adoconnection1.Connected then
   adoconnection1.ConnectionString:=format(conststr,[provider.text,dataprovider.text,edtdatasource.text]);
    try
    adoconnection1.Open();
    except
       exception.create(conopenadoerror);
end;end.

解决方案 »

  1.   

    format没有错,你看看错误提示是什么,弄清楚是谁的错误
      

  2.   

    在你的format那一句里面打个断点测试跟踪一下执行前和执行后你的ConnectionString是什么值,你就知道了!
      

  3.   

    还望朋友们能帮下忙!!我的下面的程序又出问题了!找了好久都是没找到!!出错住处显示的是adoconnection1.GetTableNames(cbtablename.items,false);这一句。[Error] Unit1.pas(69): Record, object or class type required
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, ADODB, DB, DBTables,
      ComCtrls;type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        Panel1: TPanel;
        DataSource1: TDataSource;
        Table1: TTable;
        Database1: TDatabase;
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        ADOConnection2: TADOTable;
        DataSource2: TDataSource;
        OpenDialog2: TOpenDialog;
        BtnOpen: TButton;
        RadioGroup1: TRadioGroup;
        DBGrid1: TDBGrid;
        BtnBrowser: TButton;
        BtOpenFile: TButton;
        Tabel1: TButton;
        provider: TEdit;
        Edit1: TEdit;
        EdtDataSource: TEdit;
        ComboBox1: TComboBox;
        BtnOpen2: TButton;
        BtnBrowser2: TButton;
        ComboBox2: TComboBox;
        DBGrid2: TDBGrid;
        edtDriver: TEdit;
        EdtDataBase: TEdit;
        procedure BtnOpenClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BtnOpenClick(Sender: TObject);
    const
      conststr='provider=%s ;data provider=%s;data source=%s';
      var
         cbtablename:string;
    begin
      if not adoconnection1.Connected then
      adoconnection1.ConnectionString:=format(conststr,[provider.text,provider.text,edtdatasource.text]);
      try
      adoconnection1.Open();
      except
      exception.create('conopenadoerror');
    end;
      adoconnection1.GetTableNames(cbtablename.items,false);
      cbtablename.itemindex:=0;
      adotable1.close;
      adotable.connection:=adoconnection1;
      adotable1.tablename:=cbtablename.text;
      adotable.open;
    end;end.