我的程序运行时,在连接属性对话框测试成功,单击连接提示用户sa登录失败,sql2000服务器,查询分析器已运行,procedure TfrmMain.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := PromptDataSource(0, 'Provider=SQLOLEDB.1;Persist Security Info=False');
  cmbCnn.Items.Add(s);end;procedure TfrmMain.SpeedButton1Click(Sender: TObject);
var
  b: boolean;
begin
  dstDatabase.Close;
  dstFilename.Close;  cnn.Close;
  cnn.ConnectionString := cmbCnn.Text;
  cnn.DefaultDatabase := 'master';
  b := true;
  try
    cnn.open;
  except
    on e: Exception do
    begin
      ShowMessage('connect error');
      b := false;
    end;
  end;  if b then
  begin
    dstDataBase.Open;
    dstFileName.Open;
    dstDataBase.DisableControls;
    dstFilename.DisableControls;
    lstDB1.Clear;
    lstDB2.Clear;
    while not dstDatabase.Eof do
    begin
      lstDB1.Items.Add(dstDatabase.fieldbyname('name').AsString);
      lstDB2.Items.Add(dstDatabase.fieldbyname('name').AsString);
      if UpperCase(dstDatabase.fieldbyname('name').AsString) = 'MASTER' then
      begin
        sMasterpath := ExtractFilePath(dstDatabase.fieldbyname('filename').AsString);
        edtMasterpath.Text := sMasterpath;
      end;
      dstDatabase.next;
    end;
    dstDataBase.EnableControls;
    dstFilename.EnableControls;
  end;
end;

解决方案 »

  1.   

    adoconnection连接SQL Server 2000
      

  2.   

    var
      s: string;
    begin
      s := PromptDataSource(0, 'Provider=SQLOLEDB.1;Persist Security Info=False');
      cmbCnn.Items.Add(s);
      //你在哪里保存的密码?
      //  s := PromptDataSource(0, 'Provider=SQLOLEDB.1;Password=sa123;Persist Security Info=False');
      //cmbCnn.Items.Add(s);end;
      

  3.   

    哦,不好意思,看错
    你把 cmbCnn.Text 的值取出来看下是什么?
    很可能设定错误啊。
      

  4.   

    楼主:
    你用AdoConnection直接在控件上连接,提示连接成功后。查看Connectstring中的字符串。这个就是连接字符串。里面有字段和数值的对应显示,包括用户名和密码。
      

  5.   

    谢谢,cmbCnn.Text 的值必须选择,散分