Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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)


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


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

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



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

Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.065 c
2-1173974049
Raptoridze
2007-03-15 18:54
2007.04.08
пропадает hook


15-1173935832
vajo
2007-03-15 08:17
2007.04.08
Microsoft рекомендует красть Windows


3-1169109557
GrBob
2007-01-18 11:39
2007.04.08
Упраление соединениями на MS SQL Server


1-1171537111
Zeleniy
2007-02-15 13:58
2007.04.08
Плавающие окна (Drag&amp;Doc)


2-1174154097
Двоишник
2007-03-17 20:54
2007.04.08
Ftp client





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский