Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

Как программно создать алиас в BDE ?   Найти похожие ветки 

 
Denisiy   (2003-12-22 15:15) [0]

Всем доброго дня.
Есть локальные таблицы, к ним хочу достучаться. Использую TDatabase, все НД завязаны на него. Ведь чтобы TDatabase подключить (т.е. поле AliasName), нужно пойти и ручками настроить в BDE ->New DB Driver Name и т.д.

Есть ли программное решение задачи?


 
MV   (2003-12-22 15:16) [1]

Неправильно. Вернее, не обязательно.
Подожди, в старом проекте покопаюсь, гляну.


 
JibSkeart   (2003-12-22 15:16) [2]

гдето я уже видил ответ

на всякий случай в FAQ-e посмотрите :)


 
Sandman25   (2003-12-22 15:18) [3]

Использование TDatabase совершенно не требует существования алиаса.
Например, при работе с БД Paradox можно указать Database.Params.Values["PATH"] := путь к базе данных;


 
Denisiy   (2003-12-22 15:22) [4]

Да оно логически понятно, что алиас не нужен, но если в TDatabase оставить пустым поле ALiasName - то ругается "unknown database" . Как ето победить?


 
MV   (2003-12-22 15:26) [5]

В общем, так:
Компонент типа TDatabase размещаем на экземляре TDataModule.
Клацаем по нему 2 раза.
Указываем в Database/Name что-нибудь, например, MySuperAlias.
Поле Database/Alias оставляем пустым
Поле Database/DriverName пишем InterBase
Поле Parameters Override, например:

SERVER NAME=E:\Working\IBSales\Data\Пример.tib
USER NAME=SYSDBA
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=ancyrr
SQLQRYMODE=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
BLOBS TO CACHE=64
BLOB SIZE=32
WAIT ON LOCKS=FALSE
COMMIT RETAIN=FALSE
ROLE NAME=
SQLDIALECT=1
PASSWORD=masterkey


Options/LoginPrompt&Keep Inactive connection оставляем пустыми.

Все. Теперь в твоих модулях делаем доступным этот TDataModule посредством Uses, а в TTable"s и TQuery"s в свойствах DataBaseName указываем ранее введенное MySuperAlias.

Все.


 
Sandman25   (2003-12-22 15:26) [6]

Указать в этом поле что-нибудь типа My_Temp_Alias.


 
Anatoly Podgoretsky   (2003-12-22 15:27) [7]

An application can specify the DatabaseName, DriverName, and Params properties rather than setting AliasName


 
MV   (2003-12-22 15:27) [8]

Sandman неправ!


 
MV   (2003-12-22 15:27) [9]

Подгородецкий прав!


 
Sandman25   (2003-12-22 15:30) [10]

Я вообще-то перепутал. Я этот My_Temp_Alias пишу в DatabaseName. А AliasName у меня остается пустой.


 
MV   (2003-12-22 15:31) [11]

А вот совсем "программно":
with fDM.dbSales do begin // Здесь - fDM - модуль данных,
// а dbSales типа TDataBase
if Connected then Close;
LoginPrompt := false;
Params.Values["PASSWORD"] := Password;
Params.Values["USER NAME"] := UserName;
Params.Values["LANGDRIVER"] := "ancyrr";
Params.Values["SERVER NAME"] := WorkedFileName;
........
Open;

end


 
Sandman25   (2003-12-22 15:33) [12]

[11] MV (22.12.03 15:31)

Из вредности скажу, что весь этот код должен находиться в том же модуле, где объявлена fDM. И желательно в методе :)


 
MV   (2003-12-22 15:38) [13]

Сандман - неправ. Пример из рабочего проекта.


 
Sandman25   (2003-12-22 15:43) [14]

[13] MV (22.12.03 15:38)

У меня у самого полно рабочих проектов :)

В TfDM нужно делать метод SetDatabaseParams (или ConnectTo) с параметрами (или одним параметром-записью) и вызывать его, откуда надо.
Нефиг лезть в переменные из другого модуля напрямую. Захочешь имя TDatabase исправить - будешь полпрограммы переделывать.

PS. И не спорь, а то дам ссылку на книги об инкапсуляции :)


 
MV   (2003-12-22 15:44) [15]

Ну и инкапсулируйся на здоровье. Тихо сам с собою.


 
Sandman25   (2003-12-22 15:50) [16]

[15] MV (22.12.03 15:44)

Кстати, я так и делаю.
Вместо TfDM.ConnectTo я вызываю ConnectTo. ConnectTo - процедура (не метод), с примерно таким кодом.

implementation

var
fDM: TfDM;

procedure ConnectTo(...);
begin
if not Assigned(fDM) then
fDM := TfDM.Create(...);
fDM.ConnectTo(...)
end;

В итоге как захочу, так и назову Datamodule. Какие компоненты захочу, такие и буду использовать... И не надо будет ничего менять.


 
MV   (2003-12-22 15:54) [17]

Clever boy.


 
Sandman25   (2003-12-22 15:57) [18]

[17] MV (22.12.03 15:54)

Зря Вы так... Нет ничего стыдного в том, чтобы учиться. Все мы учимся друг у друга...
Все, пока.


 
AbrosimovA   (2003-12-22 16:31) [19]

Program MyProg;

uses Forms,
Windows,
SysUtils,
Classes,
DBTables,...

var L : TStringList;
Index: integer;
Flag: boolean;

begin
Application.CreateForm(TDataModule1, DataModule1);
DataModule1.Session1.ConfigMode := cmPersistent;
L := TStringList.Create;
try
DataModule1.Session1.GetAliasNames(L);
for Index := 0 to L.Count - 1 do
if L.Strings[Index]="MyBase" then Flag:=true;
if NOT(Flag) then begin
L.Add("DEFAULT DRIVER=PARADOX");
L.Add("PATH="+ExtractFilePath(Application.Exename)+"Data");
DataModule1.Session1.AddAlias("MyBase", "STANDARD", L);
DataModule1.Session1.SaveConfigFile;
end;
finally
L.Free;
end;
end.


 
Silver Alex   (2003-12-22 16:41) [20]

я вот так делаю
procedure TDA.DataBaseBeforeConnect(Sender: TObject);
begin
DB.Params.Clear;
DB.Params.LoadFromFile("wh_DB.tt");
end;

файл wh_DB.tt

PATH=C:\MainDB
DEFAULT DRIVER=PARADOX
ENABLE BCD=FALSE

вобщем что нужно, то и пишешь в файле



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.012 c
6-63269
Карелин Артем
2003-11-19 13:52
2004.01.20
Ftp-сервер на ICS. Как передавать/принимать потоки. Не файлы.


6-63273
Signed
2003-11-16 01:24
2004.01.20
Программно определить в чём неисправность


3-62978
GIL
2003-12-24 11:09
2004.01.20
Значения по умолчанию


14-63334
Вадим
2003-12-30 14:30
2004.01.20
Ощущение праздника


14-63364
Nick-From
2003-12-29 17:03
2004.01.20
процессор с 200Мгерцовой шиной





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский