我现在有一个access数据库文件,1.mdb,放在c:\1.mdb
我想在程序中动态连接,就使用了组件:TADOConnection,TADOTable,首先在TADOTable中的属性栏中设置了Connection为TADOConnection1
然后我在 procedure Tmainform.FormCreate(Sender: TObject) 中写:
 Tmainform.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=c:\1.mdb;Persist Security Info=False';
Tmainform.ADOConnection1.Connected :=True;   但是运行的时候,有报错:Access violation at address 0049D77B in module 'Project1.exe',Read of address 00000344   这是什么原因那?'

解决方案 »

  1.   

    Tmainform.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1.mdb;Persist Security Info=False';
    //Tmainform.ADOConnection1.Connected :=True;
      

  2.   

    试了一下,还是不行,同样的报错内容,只是最后的 Read of address 00000344 改为了:
    Read of address 00000330
      

  3.   

    其他的就没有设置了,
    我是看帖子,都这么说,可是我自己用的时候就出错了,
    我发现好像只要我再程序中给TADOConnection组件的ConnectString赋值就会出错,那个connected赋值也不行,还有就是给TADOTable的Active属性也不能赋值,只能在delphi的环境中设属性。
      

  4.   

    先要断开连接,然后设置ConnectString,
      

  5.   

    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(ParamStr(0))
             +'database\MarketManager.mdb;Persist Security Info=False';你用这个啊!
    才从我程序拷出来的!
      

  6.   

    碰到这种只读的问题,十之八九是没有Create那个Form
      

  7.   

    Tmainform.ADOConnection1.Connected :=True;
    这一句可以不要 我这么写都不会错啊
    if Adoconn1.ConnectionString = '' then
    Adoconn1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=c:\1.mdb;Persist Security Info=False';
      

  8.   

    如果我只用 ADOTable,不用 ADOConnection行么?
    这样好像在静态ADOTable时都不可以用Provider=Microsoft.Jet.OLEDB.4.0,只能用ODBC连,怎么回事呢?
      

  9.   

    你用什么版本的,听说老版本有BUG
    我的连接方法是设置.udl文件,很方便的
      

  10.   

    如果我只用 ADOTable,不用 ADOConnection行么?
    这样好像在静态ADOTable时都不可以用Provider=Microsoft.Jet.OLEDB.4.0,只能用ODBC连,怎么回事呢?
    两各都是可以的,你自己试试看就知道了。另外Adotable确实有问题,我在用的时候也经常出现问题,有时候在Sqlserver下可以,但连接其他数据库就会出现问题。