Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

окно создания строки подключения к бд (АДО)

Страницы: 1
окно создания строки подключения к бд (АДО)
Подскажите, как вызвать стандартное окошко настройки подключения к БД по АДО. свойство connectionString
Я делаю окошко подключения к MS SQL Server Вот так;)
Но Вы можете переделать под Себя;)
Процедура нажатие на кнопку "Вхід":

Код
type
 TConnectionString=record
  Provider, Integrated_Security, Password, Persist_Security_Info,
  User_ID, Initial_Catalog,
  Data_Source, Use_Procedure_for_Prepare, Auto_Translate, Packet_Size,
  Workstation_ID, Use_Encryption_for_Data,
  Tag_with_column_collation_when_possible:string;
end;

var
 Connectionstring: TConnectionstring;
 Connection:boolean;
 TreeNode: TTreeNode;
begin
 if Form1.ADOConnection1=NIL //ADOConnection1 объявляется в главной форме в разделе public 
  then
   begin

    //Параметры подключения к MS SQL серверу
    if (not Form3.CheckBox1.Checked)
     then
      begin
       Connectionstring.Provider:='Provider=SQLOLEDB.1;';
       Connectionstring.Integrated_Security:='';
       Connectionstring.Password:='Password='+ Edit4.Text + ';';
       Connectionstring.Persist_Security_Info:='Persist Security Info=True;';
       Connectionstring.User_ID:='User ID='+ Edit3.Text + ';';
       Connectionstring.Initial_Catalog:='Initial Catalog='Ваша база данных';';
       Connectionstring.Data_Source:='Data Source=' + Edit2.Text + ';';
       Connectionstring.Use_Procedure_for_Prepare:='Use Procedure for Prepare=1;';
       Connectionstring.Auto_Translate:='Auto Translate=True;';
       Connectionstring.Packet_Size:='Packet Size=4096;';
       Connectionstring.Workstation_ID:='';
       Connectionstring.Use_Encryption_for_Data:='Use Encryption for Data=False;';
       Connectionstring.Tag_with_column_collation_when_possible:='Tag with column collation when possible=False';
      end
     else
      begin
       Connectionstring.Provider:='Provider=SQLOLEDB.1;';
       Connectionstring.Persist_Security_Info:='Persist Security Info=False;';
       Connectionstring.Integrated_Security:='Integrated Security=SSPI;';
       Connectionstring.Initial_Catalog:='Initial Catalog=Ваша база данных;';
       Connectionstring.Data_Source:='Data Source=' + Edit2.Text + ';';
       Connectionstring.Use_Procedure_for_Prepare:='Use Procedure for Prepare=1;';
       Connectionstring.Auto_Translate:='Auto Translate=True;';
       Connectionstring.Packet_Size:='Packet Size=4096;';
       Connectionstring.Workstation_ID:='';
       Connectionstring.Use_Encryption_for_Data:='Use Encryption for Data=False;';
       Connectionstring.Tag_with_column_collation_when_possible:='Tag with column collation when possible=False';
      end;

    Form1.ADOConnection1:=TADOConnection.Create(Self);
    Form1.ADOConnection1.CommandTimeout:=0;
    Form1.ADOConnection1.LoginPrompt:=false;

    Form1.ADOConnection1.ConnectionString:=Connectionstring.Provider
    + Connectionstring.Integrated_Security
    + Connectionstring.Password
    + Connectionstring.Persist_Security_Info
    + Connectionstring.User_ID
    + Connectionstring.Initial_Catalog
    + Connectionstring.Data_Source
    + Connectionstring.Use_Procedure_for_Prepare
    + Connectionstring.Auto_Translate
    + Connectionstring.Packet_Size
    + Connectionstring.Workstation_ID
    + Connectionstring.Use_Encryption_for_Data
    + Connectionstring.Tag_with_column_collation_when_possible;

    Connection:=true;

    try
    Form1.ADOConnection1.Connected:=true;
     except
       on EOleException do
        begin
         Connection:=false;
        end;
    end;

     if Connection=false
     then
      begin
       Form1.ADOConnection1.Connected:=false;
       Form1.ADOConnection1.Close;
       FreeandNil(Form1.ADOConnection1);
       MessageDlg('Помилка підключення до серверу.', mtError, [mbOK], 0)
      end
     else
      begin
       //Ваш код
     end;
   end
end;
Рисунок
1.PNG (7.21 КБ) [ Скачать ]
ИМХО это окошко - существует только в дельфи, так что вам придется рисовать его самому. А вот что бы вызвать окошко как на картинке, нужно сделать следующее

1) Идём в Component/Import component/Import Type Library
2) Создаём модуль для объекта: "Microsoft OLE DB service component" (это OLEDB32.dll)
3) Снова идём в Component/Import component/Import Type Library
4) Создаём модуль для объекта: "Microsoft ActiveX Data Objects 6.0 Library" (это msado15.dll)

далее в uses дописываем MSDASC_TLB, ADODB_TLB

Создаем новыую строку подключения
Код
procedure TForm1.Button1Click(Sender: TObject);
var
  Dsl : IDataSourceLocator;
  cc:Connection;
begin

  Dsl := CoDataLinks.Create;
  cc:=Dsl.PromptNew as Connection;
  ADOConnection1.ConnectionString:=cc.ConnectionString;
end;


Редактируем уже существующию
Код
procedure TForm1.Button2Click(Sender: TObject);
var
  Dsl : IDataSourceLocator;
  con:IDispatch;
  cc:Connection;

begin
  Dsl := CoDataLinks.Create;
  con:=ADOConnection1.ConnectionObject as IDispatch;
  Dsl.PromptEdit(con);

  cc:=con as Connection;
  ADOConnection1.ConnectionString:=cc.ConnectionString;
end;
Изменено: mihail filatov - 05.06.2010 21:48:13
Если выбрать "Microsoft OLE DB Provider for SQL Server" то
на вкладке "Соединение" этого окошка есть "1. Выберите или введите имя сервера" и в выпадающем списке отображаются все доступные MS SQL сервера...
А как это реализовать, тоесть получить список доступных серверов?
Нашёл решение smile;)
Код
uses
 COMObj;

var
dmo:OleVariant;
i:Integer;
begin
Memo1.Clear;
try
dmo:=CreateOleObject('SQLDMO.SQLServer');
dmo:=dmo.Application;
dmo:=dmo.ListAvailableSQLServers;
for i:=1 to dmo.Count do
Memo1.Lines.Add(AnsiUpperCase(dmo.Item(i)));
except
end;
end;
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)