Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизКакой смысл в 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)
А вот такого варианта в книге нет… Спасибо :)
← →
Knight © (2007-03-19 23:23) [32]Вот теперь этим можно пользоваться… если понадобится когда-нить :))))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.069 c