问题是:我调试一个播放视频文件的程序,带有网络功能(server/client),在没有安装SQL2000时,程序运行一切正常。但安装后,当我刷新数据列表时,出现MSADO15.DLL地址错误,好象说是读取了不该读取的地址。这个程序是有Delphi5做的(升级包已安装)。在未安装之前MSADO15.DLL的大小是332K,安装之后是512K,不知SQL2000在里面添加了什么,应怎样解决?请各位高手指教。再次表示感谢!

解决方案 »

  1.   

    将sql server反安装试一试
    或者安装最新的ADO驱动程序2.1板,sql server2000和office2000
    安装盘上都有
      

  2.   

    MSADO15.DLL 这个文件有问题,有内存泄漏。ado2.7
      

  3.   

    刷新的代码如下:请指教能否从代码中解决问题。谢谢!
    procedure TForm1.N1Click(Sender: TObject);
       var  SrChannel,srFile : TSearchRec;
            Err,Err2 : integer;
             ChannelPath : string;
            AdoTableFiles:TADOTable;
         //将VideoRoot目录下的文件导入vod.mdb中的table files中
    Begin
      //删除原来的记录
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('delete from files');
      ADOQuery1.ExecSQL;
      ADOQuery1.Close;  AdoTableFiles:= TADOTable.Create(Form1);
      AdoTableFiles.Connection:=ADOConnection1;
      AdoTableFiles.TableName:='files';
      AdoTableFiles.active:=true; Err:=FindFirst(VideoRoot+'\*.*',faDirectory ,SrChannel) ;
     While (Err = 0) do
      begin
          //读出一个频道名
       if SrChannel.Name[1]<>'.' then
         begin
          ChannelPath:=VideoRoot+'\'+SrChannel.Name;
         
          // 读出该频道下的所有文件
          Err2:= FindFirst(ChannelPath+'\*.*', faAnyFile ,SrFile);
            While (Err2 = 0) do
              begin
               If ((SrFile.Attr and faDirectory)=0) then
                  begin
                AdoTableFiles.Insert;
                AdoTableFiles.FieldByName('频道').AsString:= SrChannel.Name;
                AdoTableFiles.FieldByName('文件').AsString:= SrFile.Name;
                AdoTableFiles.FieldByName('节目').AsString:= SrFile.Name;
                AdoTableFiles.FieldByName('大小').AsInteger:= SrFile.size;
                AdoTableFiles.Post;
    end;
                Err2:=FindNext(SrFile) ;
    end;
             FindClose(SrFile);
    end;     Err:=FindNext(SrChannel) ;
    end ;
     FindClose(SrChannel); AdoTableFiles.Close;
     AdoTableFiles.free;   //从files 导入 programs ,channels
      with   ADOQuery1 do
        begin
            SQL.Clear;
            SQL.Add('delete from channels ');
            ExecSQL;
            Close;        SQL.Clear;
            SQL.Add('insert into channels (频道) select distinct 频道 from files ');
            ExecSQL;
            Close;        SQL.Clear;
            SQL.Add('DELETE FROM programs WHERE 频道+''\''+文件 not in (select 频道+''\''+文件 from files)');
            ExecSQL;
            Close;        SQL.Clear;
            SQL.Add('INSERT INTO  programs(节目,频道, 文件, 大小) '+
                  ' SELECT files.节目, files.频道, files.文件, files.大小 '+ ' FROM files LEFT JOIN programs ON ((files.文件 = programs.文件) and (files.频道 = programs.频道))'+ ' WHERE (((programs.文件) Is Null) and ((programs.频道) Is Null)) ');
            ExecSQL;
            Close;
      end ;
      ADOConnection1.Close;
      ADOConnection1.open;
      if (not ADOConnection1.Connected) then ADOConnection1.Connected:=True;
      AdoTablePrograms.Active:=true;
       ImportChannel;
       ADOTablePrograms.Refresh;
       CreateMediaList;
       TabSheetProgram.Show;
    end;