![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формирование ConnectionString при старте программы [D7, Access]
prisoner849 © (2006-06-01 16:37:00)Доброго времени суток!
Вопрос: подскажите, что нужно сделать, чтобы при старте программы формировалась ConnectionString и путь к базе брался из либо реестра, либо какого-нить *.cfg или *.ini.
Как работать с реестром и с файлами данного формата - знаю.
Получается, что при формировании строки и попытке подключиться к БД - выходит сообщение об ошибке... чччерт! уже вторую неделю с этим вожусь.
Помогите, плиз, хоть советом, хоть делом...
Заранее спасибо.
sniknik (2006-06-06 00:40:00) [1]описаны в справке по конкретному OLE DB провайдеру, разние и для разного.
для jet описание в разделе "OLE DB Provider for Microsoft Jet" справки мсофиса ADO210.CHM.
причем не все они только для открытия конекта, есть например еще указываюшие тип/свойства новой базы создаваемой CompactDatabase... (т.е. эти и подобные в строке для подключенияну, как минимум лишние)
Галинка (2006-06-05 23:43:00) [2]А зачем нужны расширенные свойства?
sniknik (2006-06-04 09:44:00) [3]> при запуске выводи "Autentification failed" :(
это типа неверный логин/пароль... но у тебя это скорее всего от намешаной кучи абсолютно ненужных параметров в строке, ты знаеш что каждый означает/почему используется и зачем именно ты его устанавливаеш?
достачно будет
mdlMain.mainConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=+ConnStr+';'+
'Persist Security Info=False';
если идентификация не пройдет и по этой строке, то тогда у тебя база или юзер под паролем.
eJack (2006-06-04 06:45:00) [4]www.connectionstrings.com
Там все найдешь !
prisoner849 (2006-06-04 02:03:00) [5]Делаю так:
procedure TmdlMain.DataModuleCreate(Sender: TObject);
var
IniChoice: TiniFile;
ConnStr: widestring;
begin
IniChoice:=TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
try
ConnStr:=IniChoice.ReadString('ConnOptions','ConnSrting','');
finally
iniChoice.Free;
end;
mdlMain.mainConn.Connected := False;
mdlMain.mainConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Password="";User ID=Admin;'+
'Data Source='+ConnStr+';'+
'Mode=Share Deny None;Extended Properties="";'+
'Jet OLEDB:System database="";'+
'Jet OLEDB:Registry Path="";'+
'Jet OLEDB:Database Password="";'+
'Jet OLEDB:Engine Type=5;'+
'Jet OLEDB:Database Locking Mode=1;'+
'Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:New Database Password="";'+
'Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;'+
'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;'+
'Jet OLEDB:SFP=False';
mdlMain.mainConn.Connected := True;
end;
при запуске выводи "Autentification failed" :(
AlexWlad (2006-06-02 18:58:00) [6]
> ЮЮ © (02.06.06 03:32) [7]
Ну дык примерже.
isasa (2006-06-02 10:40:00) [7]Из ini, конечно хорошо, но неплохо бы "уметь" динамически переподкльчаться к набору из самой программы.
А то, править ini, не очень элегантно.
Смотрим тут.
{$Delphi}\Source\Property Editors\AdoConEd.pas
function EditConnectionString(Component: TComponent): Boolean;
или тут
{$Delphi}\Source\Vcl\ADODB.pas
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;
ЮЮ (2006-06-02 03:32:00) [8]Галинка © (01.06.06 23:32) [6]
У меня вот так:
Не... Выше - круче :)
'Password=111;'
'User ID=sa;'+
Галинка (2006-06-01 23:32:00) [9]У меня вот так:
procedure TZemlDM.Reconnect(MDBFileName:string);
begin
with ADOConnection1 do
begin
Close;
LoginPrompt:=False;
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+MDBFileName+
';Mode=ReadWrite;'+
'Persist Security Info=False';
KeepConnection:=true;
Open;
end;
end;
Anatoly Podgoretsky (2006-06-01 23:03:00) [10]Rule © (01.06.06 17:24) [2]
Конкретно - черт
AlexWlad (2006-06-01 19:43:00) [11]Пример для MS SQL, но думаю, разберешься.
AC_WF - TADOConnection.
procedure TDM_ProjVisa.DataModuleCreate(Sender: TObject);
Var
ComputerName: array [0..100] of Char;
Size: Cardinal;
CName, Server, Base : String;
fi: TIniFile;
begin
fi := TIniFile.Create(ExtractFilePath(Application.EXEName)+'Arch.ini');
Server := fi.ReadString('ProjVisa', 'Server', 'ERROR');
Base := fi.ReadString('ProjVisa', 'WF_base', 'ERROR');
Size := SizeOf(ComputerName);
GetComputerName(ComputerName, Size);
CName := StrPas(ComputerName);
AC_WF.Connected := False;
AC_WF.ConnectionString := 'Provider=SQLOLEDB.1;'+
'APP=WF_ProjVisa;'+
'Password=111;'+
'Persist Security Info=True;'+
'User ID=sa;'+
'Initial Catalog='+Base+';'+
'Data Source='+Server+';'+
'Use Procedure for Prepare=1;'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID='+CName+';'+
'Use Encryption for Data=False;'+
'Tag with column collation when possible=False';
AC_WF.Connected := True;
end;
prisoner849 (2006-06-01 17:53:00) [12]2 Johnmen
Неплохой орех может получиться...:)
Rule (2006-06-01 17:24:00) [13]а что конкретно выходит ??? :-)))
Johnmen (2006-06-01 16:48:00) [14]
> выходит сообщение об ошибке... чччерт!
Первый раз вижу такое сообщение!