我写的一个程序在服务器上运行正常,但在客户端台子上运行提示:[DBNETLIB][CONNECTIONOPEN(CONNECT()].SQL SERVER 不存在或拒绝访问!
我是用INI文件连接的!
INI文件内容如下:
[Connect]
Provider=SQLOLEDB.1
ServerName=192.168.1.70
DataBaseName=YBerp
Username=sa
PassWord=然后,我在其它的电脑中运行!又有提示:
cann't open database requested in login 'yberp',login fails.但是点完这些信息框,程序都可以运行!
不知道是什么原因?

解决方案 »

  1.   

    你看看你的程序中的adconnection是不是connected=true了
      

  2.   

    当然有这句:
    ADOCON.CONNECTED:=TRUE;
    不然怎么可以动行程序,程序是可以用,只是在之前提示这两个错误,点确定之后,还是可以连上!不知是什么原因?
      

  3.   

    这是我的DM模块代码:这觉得没错!它能连上数据库!  unit UDM;interfaceuses
      SysUtils, Classes, DB, ADODB, frxClass, frxDBSet;type
      TDM = class(TDataModule)
        ADOCon: TADOConnection;
        ShareQuery: TADOQuery;
        PrintQuery: TADOQuery;
        PrintDetailQuery: TADOQuery;
        DataSource1: TDataSource;
        DataSource2: TDataSource;
        ShareStoredProc: TADOStoredProc;
        frxDBDataset1: TfrxDBDataset;
        frxDBDataset2: TfrxDBDataset;
        frxReport1: TfrxReport;
        procedure DataModuleCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DM: TDM;implementation
    uses Dialogs,IniFiles,Forms;
    {$R *.dfm}procedure TDM.DataModuleCreate(Sender: TObject);
    var IniFile:Tinifile;
     filename,Provider,UserName,PassWord:string;
     DataBaseName:string;
     ServerName,conn:string;
     dns:string;
    begin
     ADOCon.Connected:=false;
     ADOCon.ConnectionString:='';
     filename:=ExtractFilePath(Paramstr(0))+'Sys.ini';
     showmessage(filename);
    //{
     try
       if not fileexists(filename) then
       begin
         MessageDlg('数据库连接配置文件sys.ini不存在',mtInformation,[mbOK],0);
         Application.Terminate;
       end;
      IniFile:=TIniFile.Create(filename);
      Provider:=IniFile.ReadString('Connect','Provider','SQLOLEDB.1');
      UserName:=IniFile.ReadString('connect','username','sa');
      PassWord:=IniFile.ReadString('connect','password','');
      DatabaseName:=IniFile.ReadString('connect','databasename','YBERP'); //数据库名
      Servername:=IniFile.ReadString('connect','servername','(local)');     //数据源名
      conn:='provider='+provider+';Initial catalog='+Databasename+';user id='+UserName;
      conn:=conn+';password='+password+';Data Source='+Servername;
      showmessage(conn);
      ADOCon.ConnectionString:=conn;
      ADOCon.Connected:=True;
      ADOCon.LoginPrompt:=false;
      except
       ShowMessage('没有可用的数据库连接');
      end;
      IniFile.Free;
    //  }
    end;end.
      

  4.   

    我的意思是,你先要在datamodule中的控件adoconnection上把connected属性改成false.代码不变.
      

  5.   

    同意 zxf_feng 如果 设计期datamodule中的控件adoconnection的connected属性为true那么在程序运行时会先以设计期的连接信息进行一次连接(在你的create事件代码之前运行的),之后彩进入create事件,执行你的代码
      

  6.   

    表现为启动程序后会等上一段时间报连接不上的错误,然后又能正常连接了,对不!
    AdoConnection 的Connected 属性 为True 时会先去连接你测试时的默认连接哟!
    正式使用时改为False