Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой смысл в TDatabase?


Страницы:   1 2

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] это иллюстрируют


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо