![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какой смысл в TDatabase?
Knight © (2007-03-15 11:10:00)Если нельзя в AliasName прописать путь к базе... .. а в DatabaseName внутренний псевдоним? На алиас можно и прямо из таблиц сослаться безо всяких посредников.. а вот на путь к базе было бы самое оно, чтобы в системе алиасы не создавать.
Knight (2007-03-19 23:23:00) [1]Вот теперь этим можно пользоваться если понадобится когда-нить :))))
Knight (2007-03-19 23:15:00) [2]> [30] Asail (19.03.07 22:26)
А вот такого варианта в книге нет Спасибо :)
Asail (2007-03-19 22:26:00) [3]У меня на парадоксе все работает:
В TDataBase делаем:
1. AliasName = (пустой)
2. DatabaseName = MyAlias
3. DriverName = STANDARD
4. Params: (набор параметров соединения)
PATH = C:\BLA\BLA\BLA\DB
DEFAULT DRIVER = PARADOX
После чего в датасетах в DatabaseName можно выбирать MyAlias.
И всего делов. При смене каталога с БД меняем только параметр PATH.
ЮЮ (2007-03-19 08:34:00) [4]> 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
Anatoly Podgoretsky (2007-03-19 07:47:00) [5]> ЮЮ (19.03.2007 04:11:27) [27]
Алиас в переводе это псевдоним, псевдоним DatabaseName
TDBDataSet связываются через свойство Database
Менять надо только DatabaseName не затрагивая поля Name
ЮЮ (2007-03-19 04:11:00) [6]> [26] Anatoly Podgoretsky © (17.03.07 15:39)
Алиас не требуется, это дополнительная возможность.
Где же ответ по существу?
Итак, если не используем AliasName, то остается TDataBase.DatabaseName, например 'С:\бла\бла\бла\db'. Или есть другая возможность?
Далее. Если наследники TDBDataSet. Как их "связать" с нужным экземпляром TDataBase? Указав DatabaseName такой же, как и у TDataBase. Или есть другая возможность?
Теперь требуется указать другое расположение БД. Что делать, чтобы доказать Ваше утверждение [24]
Anatoly Podgoretsky (2007-03-17 15:39:00) [7]> ЮЮ (17.03.2007 11:45:25) [25]
Алиас не требуется, это дополнительная возможность.
ЮЮ (2007-03-17 11:45:00) [8]
> Anatoly Podgoretsky © (17.03.07 09:25) [24]
> И именно для того и задуман, что бы указывать путь до базы
> в одном месте
И в каком, интересно, если не использовать полноценный алиас? :)
Anatoly Podgoretsky (2007-03-17 09:25:00) [9]О чем вы говорите, очень удобный и надежный компонент.
И именно для того и задуман, что бы указывать путь до базы в одном месте, не перестраивая всего остального приложения.
ЮЮ (2007-03-17 08:49:00) [10]Правильнее было бы, если разработчики опубликовали свойство типа TDataBase, а не "левое" DataBaseName (как TDataSopurce.DataSet, <DBAwareComponent>.DataSource), тогда бы действительно можно было бы настраивать TDataBase, не боясь потерять ранее привязанные DataSet-ы.
Но что имеем, то имеем. Поэтому остается
1) или изменять насторойки алиаса:
> А зачем его менять? Он для того и поставлен, чтобы все на
> него ссылались. И если бы в AliasName можно было прописать
> путь
Прописать можно, но не в AliasName, а свойтва алиаса с этим именем. Причем алиас может быть создан программно, а не BDE Admin-ом и даже не сохраняться в конфигурационные файлы, а существовать только на время работы приложения.
2) менять DataBaseName: [11]
Reindeer Moss Eater (2007-03-16 14:53:00) [11]Ругается... и не подключается.
Остальное по Фаронову... :)
Но прописать то там путь к БД можно же.
Ты же этого хотел.
Knight (2007-03-16 13:38:00) [12]
> [20] ЮЮ © (16.03.07 12:28)
> Да? Неужели у всех компонентов DataBaseName сам пропишется?
> Да и у TDataBase его прописывать ручками надо.
> Или измени DataBaseName у TDataBase и что у всех компонентов
> оно тоже изменилось?
А зачем его менять? Он для того и поставлен, чтобы все на него ссылались. И если бы в AliasName можно было прописать путь, то при смене положения базы на диске, надо было бы только сменить его у TDatabase... остальные бы компоненты как работали с внутренним алиасов так бы и работали.
ЮЮ (2007-03-16 12:28:00) [13]> А если сделать по Фаронову, то можно выбрать прописанный
> в датабэйс алиас и никакого кода не надо
Да? Неужели у всех компонентов DataBaseName сам пропишется? Да и у TDataBase его прописывать ручками надо.
Или измени DataBaseName у TDataBase и что у всех компонентов оно тоже изменилось?
Возможно, что тебя ввело в заблуждение то, что в списке DataBaseName компонента присутствуют как алиасы BDE, так и DataBaseName-ы TDataBase приложения. Но они ведь могут и не совпадать. И если они не совпадают, а ты выберешь имя аласа, то этот компонент никак не будет связан с твоим TDataBase.
Knight (2007-03-16 12:13:00) [14]
> [18] ЮЮ © (16.03.07 11:51)
> В 4-ый раз повторяю - всё и так работает, только TDataBase.AliasName
> оставляем пустым.
Ну оставляю.. в датабэйснэйм указываю путь до базы... при этом во всех компонентах среди алиасов ничего нового не появляется.. надо или прописывать вручную или через код. А если сделать по Фаронову, то можно выбрать прописанный в датабэйс алиас и никакого кода не надо, всё работает автоматом... но если вместо внешнего алиаса в датабэйс прописать путь к конкретной базе.. то работать перестаёт.
ЮЮ (2007-03-16 11:51:00) [15]> Ладно.. раз так не работает,
В 4-ый раз повторяю - всё и так работает, только TDataBase.AliasName оставляем пустым.
Knight (2007-03-16 11:39:00) [16]Ладно.. раз так не работает, то если с BDE столкнусь, посмотрю TSession. Спасибо :)
ЮЮ (2007-03-16 11:18:00) [17]Если пишешь
DatabaseName - С:\бла\бла\бла\db
то AliasName оставь в покое (пустой).
"Вутренний" алиас тоже нужно создать, пусть и на время работы приложения (см. TSession)
Knight (2007-03-16 11:06:00) [18]
> [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"
DrPass (2007-03-16 10:43:00) [19]
> можно через TDatabase сделать внутренний алиас.. но не
> работает, по крайней мере в Delphi 6 :)
Вообще-то нормально работает, и TDatabase именно для этого и задумывалась. Ты просто чё-то неправильно делаешь
ЮЮ (2007-03-16 10:42:00) [20]> Вопрос - почему не работает с путём на базу... а с алиасом
> работает.
Откуда вопрос? Когда у TDataBase и у TDBDataSet одинаковое DatabaseName, которое может быть и путем, то TDBDataSet работает с базой через TDataBase. И [9] b [11] это иллюстрируют