Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Какой смысл в TDatabase?   Найти похожие ветки 

 
Knight ©   (2007-03-15 11:10) [0]

Если нельзя в AliasName прописать путь к базе... .. а в DatabaseName внутренний псевдоним? На алиас можно и прямо из таблиц сослаться безо всяких посредников.. а вот на путь к базе было бы самое оно, чтобы в системе алиасы не создавать.


 
Knight ©   (2007-03-15 11:11) [1]

Или я чё-то не понял.. скорее всего. Но что :(


 
Knight ©   (2007-03-15 11:14) [2]

Как-то его не пользовал когда пользовал Парадокс... щас прочитал такой переход от базы к псевдониму и решил попробовать... а фих.


 
Desdechado ©   (2007-03-15 11:18) [3]

Зачем тебе алиас? Используй TSession


 
Knight ©   (2007-03-15 11:25) [4]


> [3] Desdechado ©   (15.03.07 11:18)
> Зачем тебе алиас? Используй TSession

Просто подумал... раз можно внутренний алиас, то почему бы не подключить базу к TDatabase, а все таблицы и запросы не сослать на симулированный им алиас...


 
Reindeer Moss Eater ©   (2007-03-15 11:27) [5]

Или я чё-то не понял.. скорее всего. Но что :(

Много таблиц без TDatabase = много отдельных соединений с сервером.
Много таблиц с TDatabase = одно отдельное соединение с сервером.


 
Knight ©   (2007-03-15 11:29) [6]


> [5] Reindeer Moss Eater ©   (15.03.07 11:27)

Это ясно.. а по алиасам.. это так задумано?


 
Reindeer Moss Eater ©   (2007-03-15 12:03) [7]

Если нельзя в AliasName прописать путь к базе

В имени алиаса нельза прописать путь к базе?
Ну во первых можно.
А во вторых зачем в имени деражать путь?
Путь надо держать в пути, а имя - в имени.
Как голову - в холоде, а ноги в тепле.


 
Knight ©   (2007-03-15 19:31) [8]


>  [7] Reindeer Moss Eater ©   (15.03.07 12:03)
> В имени алиаса нельза прописать путь к базе?
> Ну во первых можно.
> А во вторых зачем в имени деражать путь?
> Путь надо держать в пути, а имя - в имени.
> Как голову - в холоде, а ноги в тепле.


Ругается... и не подключается.
Остальное по Фаронову... :)


 
ЮЮ ©   (2007-03-16 06:04) [9]

DataBase1.DataBaseName := "X:\C\NP2003\BASE2003";
Query1.DataBaseName := "X:\C\NP2003\BASE2003";

Фориально в Query прописан путь, фактически используется "одноименная" TDataBase


 
Knight ©   (2007-03-16 09:16) [10]


>  [9] ЮЮ ©   (16.03.07 06:04)

Мне всё-равно что она использует.. если при смене местодислокации базы, надо прописывать новый путь во все компоненты в ручную или программно... или заводить внешний алиас, который мне тоже нафих не нужен. И вообще я с BDE не работаю, просто попалось в книге, что можно через TDatabase сделать внутренний алиас.. но не работает, по крайней мере в Delphi 6 :)


 
ЮЮ ©   (2007-03-16 10:03) [11]

> если при смене местодислокации базы, надо прописывать новый
> путь во все компоненты в ручную или программно...


Ну не всё же компоненты на форму кидать и св-ва настривать. Пора и три строчки кода написать :)

procedure TForm1.Database1BeforeConnect(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to ComponentCount - 1 do
   if Components[i] is TDBDataSet then
     TDBDataSet(Components[i]).DatabaseName := FDataBaseDir;
 TDatabase(Sender).DatabaseName := FDataBaseDir;
end;


 
Knight ©   (2007-03-16 10:37) [12]

Это всё выходы из положения.. %)
Вопрос - почему не работает с путём на базу... а с алиасом работает.


 
ЮЮ ©   (2007-03-16 10:42) [13]

> Вопрос - почему не работает с путём на базу... а с алиасом
> работает.

Откуда вопрос? Когда у TDataBase и у TDBDataSet одинаковое DatabaseName, которое может быть и путем, то TDBDataSet работает с базой через TDataBase. И [9] b [11] это иллюстрируют


 
DrPass ©   (2007-03-16 10:43) [14]


>  можно через TDatabase сделать внутренний алиас.. но не
> работает, по крайней мере в Delphi 6 :)

Вообще-то нормально работает, и TDatabase именно для этого и задумывалась. Ты просто чё-то неправильно делаешь


 
Knight ©   (2007-03-16 11:06) [15]


> [14] DrPass ©   (16.03.07 10:43)
> Вообще-то нормально работает, и TDatabase именно для этого
> и задумывалась. Ты просто чё-то неправильно делаешь


Если пишу по Фаронову
AliasName - Любой зарегиный алиас, например, DBDEMOS
DatabaseName - AAA


То всё нормально, в компонентах появляется новый алиас AAA.

Если пишу
AliasName - С:\бла\бла\бла\db
DatabaseName - AAA


То "Unknown database.Alias - AAA"

Если пишу по логике
AliasName - AAA
DatabaseName - С:\бла\бла\бла\db


То "Unknown database.Alias - С:\бла\бла\бла\db"


 
ЮЮ ©   (2007-03-16 11:18) [16]

Если пишешь
DatabaseName - С:\бла\бла\бла\db

то AliasName оставь в покое (пустой).

"Вутренний" алиас тоже нужно создать, пусть и на время работы приложения (см. TSession)


 
Knight ©   (2007-03-16 11:39) [17]

Ладно.. раз так не работает, то если с BDE столкнусь, посмотрю TSession. Спасибо :)


 
ЮЮ ©   (2007-03-16 11:51) [18]

> Ладно.. раз так не работает,

В 4-ый раз повторяю - всё и так работает, только TDataBase.AliasName оставляем пустым.


 
Knight ©   (2007-03-16 12:13) [19]


> [18] ЮЮ ©   (16.03.07 11:51)
> В 4-ый раз повторяю - всё и так работает, только TDataBase.AliasName
> оставляем пустым.

Ну оставляю.. в датабэйснэйм указываю путь до базы... при этом во всех компонентах среди алиасов ничего нового не появляется.. надо или прописывать вручную или через код. А если сделать по Фаронову, то можно выбрать прописанный в датабэйс алиас и никакого кода не надо, всё работает автоматом... но если вместо внешнего алиаса в датабэйс прописать путь к конкретной базе.. то работать перестаёт.


 
ЮЮ ©   (2007-03-16 12:28) [20]

> А если сделать по Фаронову, то можно выбрать прописанный
> в датабэйс алиас и никакого кода не надо

Да? Неужели у всех компонентов DataBaseName сам пропишется? Да и у TDataBase его прописывать ручками надо.
Или измени DataBaseName у TDataBase и что у всех компонентов оно тоже изменилось?

Возможно, что тебя ввело в заблуждение то, что в списке DataBaseName компонента присутствуют как алиасы BDE, так и DataBaseName-ы TDataBase приложения. Но они ведь могут и не совпадать. И если они не совпадают, а ты выберешь имя аласа, то этот компонент никак не будет связан с твоим TDataBase.


 
Knight ©   (2007-03-16 13:38) [21]


> [20] ЮЮ ©   (16.03.07 12:28)
> Да? Неужели у всех компонентов DataBaseName сам пропишется?
> Да и у TDataBase его прописывать ручками надо.
> Или измени DataBaseName у TDataBase и что у всех компонентов
> оно тоже изменилось?


А зачем его менять? Он для того и поставлен, чтобы все на него ссылались. И если бы в AliasName можно было прописать путь, то при смене положения базы на диске, надо было бы только сменить его у TDatabase... остальные бы компоненты как работали с внутренним алиасов так бы и работали.


 
Reindeer Moss Eater ©   (2007-03-16 14:53) [22]

Ругается... и не подключается.
Остальное по Фаронову... :)


Но прописать то там путь к БД можно же.
Ты же этого хотел.


 
ЮЮ ©   (2007-03-17 08:49) [23]

Правильнее было бы, если разработчики опубликовали свойство типа TDataBase, а не "левое"  DataBaseName (как TDataSopurce.DataSet, <DBAwareComponent>.DataSource), тогда бы действительно можно было бы настраивать TDataBase, не боясь потерять ранее привязанные DataSet-ы.

Но что имеем, то имеем.  Поэтому остается
1) или изменять насторойки алиаса:


> А зачем его менять? Он для того и поставлен, чтобы все на
> него ссылались. И если бы в AliasName можно было прописать
> путь


Прописать можно, но не в AliasName, а свойтва алиаса с этим именем. Причем алиас может быть создан программно, а не BDE Admin-ом и даже не сохраняться в конфигурационные файлы, а существовать только на время работы приложения.

2) менять DataBaseName: [11]


 
Anatoly Podgoretsky ©   (2007-03-17 09:25) [24]

О чем вы говорите, очень удобный и надежный компонент.
И именно для того и задуман, что бы указывать путь до базы в одном месте, не перестраивая всего остального приложения.


 
ЮЮ ©   (2007-03-17 11:45) [25]


> Anatoly Podgoretsky ©   (17.03.07 09:25) [24]


> И именно для того и задуман, что бы указывать путь до базы
> в одном месте


И в каком, интересно, если не использовать полноценный алиас? :)


 
Anatoly Podgoretsky ©   (2007-03-17 15:39) [26]

> ЮЮ  (17.03.2007 11:45:25)  [25]

Алиас не требуется, это дополнительная возможность.


 
ЮЮ ©   (2007-03-19 04:11) [27]

> [26] Anatoly Podgoretsky ©   (17.03.07 15:39)
Алиас не требуется, это дополнительная возможность.


Где же ответ по существу?

Итак, если не используем AliasName, то остается TDataBase.DatabaseName, например "С:\бла\бла\бла\db". Или есть другая возможность?

Далее. Если наследники TDBDataSet. Как их "связать" с нужным экземпляром TDataBase? Указав DatabaseName такой же, как и у TDataBase. Или есть другая возможность?

Теперь требуется указать другое расположение БД. Что делать, чтобы доказать Ваше утверждение [24]


 
Anatoly Podgoretsky ©   (2007-03-19 07:47) [28]

> ЮЮ  (19.03.2007 04:11:27)  [27]

Алиас в переводе это псевдоним, псевдоним DatabaseName
TDBDataSet связываются через свойство Database
Менять надо только DatabaseName не затрагивая поля Name


 
ЮЮ ©   (2007-03-19 08:34) [29]

> TDBDataSet связываются через свойство Database

Об этом я и говорил в [23], что былобы хорошо, если бы это было так. Но оно, к сожалению, оно
ReadOnly и устанавливается именн при изменении  DatabaseName у КАЖДОГО TDBDataSet-а

Database is a read-only property that is automatically set when the database specified by the DatabaseName property is opened.



> Менять надо только DatabaseName не затрагивая поля Name

У кого? Y TDataBase? Но у TDBDataSet-ов оно останется прежним, и тем самым, они потеряют связь с данным TDataBase


 
Asail   (2007-03-19 22:26) [30]

У меня на парадоксе все работает:

В TDataBase делаем:
1. AliasName = (пустой)
2. DatabaseName = MyAlias
3. DriverName = STANDARD
4. Params: (набор параметров соединения)
   PATH = C:\BLA\BLA\BLA\DB
   DEFAULT DRIVER = PARADOX

После чего в датасетах в DatabaseName можно выбирать MyAlias.

И всего делов. При смене каталога с БД меняем только параметр PATH.


 
Knight ©   (2007-03-19 23:15) [31]

> [30] Asail   (19.03.07 22:26)


А вот такого варианта в книге нет&#133 Спасибо :)


 
Knight ©   (2007-03-19 23:23) [32]

Вот теперь этим можно пользоваться&#133 если понадобится когда-нить :))))



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

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.029 c
2-1174466975
sat
2007-03-21 11:49
2007.04.08
TObjectStack или TStack??


2-1173887407
kyn66
2007-03-14 18:50
2007.04.08
Работа со сканером штрихкода


15-1173573167
Raid
2007-03-11 03:32
2007.04.08
Кто нибудь пробовал ставить Виндос на флеш память?


1-1171213592
kilop
2007-02-11 20:06
2007.04.08
Как программно создать обработчик события OnClick


4-1164091644
progmax
2006-11-21 09:47
2007.04.08
запуск службы telnet