unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;type
  TForm1 = class(TForm)
    Button1: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOTable1: TADOTable;    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
hyd :tform ;
hyd1:tadotable;
k1: string;
k2:string;
k3:string;
begin
hyd:=tform.Create(self);
hyd.Show;
tadotable.Create(self); datasource1.DataSet:=hyd1;k3:='MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;'    ;
hyd1.ConnectionString:='E:\Program Files\Common Files\System\Ole DB\Data Links\DBDEMOS.udl';
hyd1.TableName:='items';
hyd1.Active:=true;
end;end.

解决方案 »

  1.   

    tadotable.Create(self);
    改成
    hyd1:=tadotable.Create(self);
      

  2.   

    对,否则你hyd1都没有被赋值,肯定出错
      

  3.   

    还是出错 提示“ODBC源名称过长”
    这是什么原因啊?
      

  4.   

    ConnectionString这个最大支持255字符,
    我看你定义了好多变量都没用,把它们删掉。
    现在窗口里面静态定义一个table,建立连接,测试一下数据源,如果成功
    把串拷贝下来,粘贴到hyd1.ConnectionString,
      

  5.   

    hyd1.ConnectionString:='E:\Program Files\Common Files\System\Ole DB\Data Links\DBDEMOS.udl';你DBDEMOS.udl里面是什么内容