1、动态给ADOCONNECTION连接数据库后,执行一次后,再次执行会提示ADOCONNECTION出错:“对象打开时,操作不被允许”,一定要退出程序后,再次进入才可以操作,执行一次后,再次执行又会出现这种情况!2、ACCESS动不动会出些小问题,提示一个被XX占用!

解决方案 »

  1.   

    是的你dataset没有close掉吧,先close一次再连
      

  2.   

    var
      database:Tdatabase;
      datasource:Tdatasource;
      query:Tquery;
      datapath,datastring,mydate:string;
      inifile:Tinifile;
      filename:string;
    begin
      database:=tdatabase.Create(nil);
      datapath:=ExtractFilePath(Application.ExeName)+'dhdata.mdb';
      datastring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+datapath+';Persist Security Info=True;Jet OLEDB:Database Password=limingandjackson;';
      dmfrm.ADOConnection.ConnectionString:=datastring;
      dmfrm.ADOConnection.Close;
      dmfrm.ADOConnection.Connected:=false;
      dmfrm.ADOConnection.LoginPrompt:=false;
      dmfrm.ADOConnection.Connected:=true;
      filename:=ExtractFilePath(Paramstr(0))+'lsfdxx.ini';
      inifile:=tinifile.create(filename);
      mydate:=inifile.ReadString('UPDATE','UPDATEDATE','');
      with dmfrm.QuSC do
           begin
             close;
             sql.clear;
             sql.Add('select JLBH,DHSL,DHJE,DHFD,FDMC,DHR,DHRQ,DWDM,DWMC,DJBH from DHD');
             sql.add('where ZXR is not null AND ZXRQ>='''+mydate+'''');
             open;
           end;
      with database do
        begin
          close;
          Connected:=false;
          Params.Values['user name']:='sa';
          params.Values['password']:='limjackson';
          LoginPrompt:=false;
          databasename:='ZB';
          open;
        end;
        try
          database.Connected:=true;
          datasource:=TDataSource.create(nil);
          query:=TQuery.Create(nil);
          query.DatabaseName:='ZB';
          datasource.DataSet:=query;
           try
           dmfrm.QuSC.First;
           while  not dmfrm.QuSC.Eof do
            begin
              with query do
                begin
                  close;
                  sql.clear;
                  sql.Add('insert into FDCSDHD(JLBH,DHSL,DHJE,DHFD,FDMC,DJR,DHRQ,DWDM,DWMC,DJBH)');
                  sql.add('values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j)');
                  Params[0].AsInteger:=dmfrm.QuSC.Fields[0].Asinteger;
                  params[1].AsFloat:=dmfrm.QuSC.fields[1].AsFloat;
                  params[2].AsCurrency:=dmfrm.QuSC.fields[2].AsCurrency;
                  params[3].AsInteger:=dmfrm.QuSC.fields[3].AsInteger;
                  Params[4].AsString:=dmfrm.QuSC.fields[4].AsString;
                  params[5].Asstring:=dmfrm.QuSC.fields[5].Asstring;
                  params[6].AsString:=dmfrm.QuSC.fields[6].Asstring;
                  params[7].AsString:=dmfrm.QuSC.fields[7].AsString;
                  Params[8].AsString:=dmfrm.QuSC.fields[8].AsString;
                  params[9].AsString:=dmfrm.QuSC.fields[9].AsString;
                  ExecSQL;
                  dmfrm.QuSC.Next;
                end;
             end;
        except
        end;
        except
        abort;
      end;这里我用到了,DATABASE与ADOCONNECTION ,我的目的是将ADO查出来的东西再写入DATABASE中!