![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать, существует ли таблица ? [D6, IB6.x]
sveloga © (2003-02-03 08:49:00)Требуется узнать существует ли данная таблица в базе InterBase ? Как это сделать ?
Так что-то криво выглядит:
try
.....
except
.....
on E: EIBInterBaseError do
Sergey Masloff (2003-02-04 15:42:00) [1]2)так и не работает
select count(*) from rdb$relations
where rdb$relation_name =:MAIN
MAIN это параметр ты ему значение присвоил?
Если не параметр то в кавычках надо а двоеточие убрать. Приведенный мною запрос работает 100% можешь не сомневаться
Val (2003-02-04 12:20:00) [2]select rdb$relation_name
from rdb$relations
where (rdb$system_flag = 0) and
(rdb$view_source is null) and
(rdb$relation_name = "MY_TABLE_NAME")
sveloga (2003-02-04 11:45:00) [3]Чем дальше в лес....
1)Почему не работает такая выборка (взято из книги)? просто интересно стало.
select Rdb$relation_name from rdb$relations
where RDB$relation_name NOT Like "RDB$%"
говорит что Column unknown RDB$%, имхо с синтаксисом что-то не то... как должно быть ?
2)так и не работает
select count(*) from rdb$relations
where rdb$relation_name =:MAIN
выдает COUNT - 0
где MAIN - это имя таблицы, которая точно существует, в этом же регистре.
Sergey Masloff (2003-02-04 09:02:00) [4]Sirus ©
>Исползуй обычные компоненты типа TQuery и тода все будет ОК...
>При создании таблицы видны без перезапуска...
Ага, щаз ;-) То что BDE делает что-то за тебя не значит что этого не происходит. А, учитывая что ты не знаешь что она еще делает там "за сценой" и потенциальные конфликты версий BDE, совет использования TQuery (и, соответственно, BDE) для работы с IB выглядит сомнительным
sveloga © (04.02.03 04:26)
>Через IBQuery SQL =: "select count(*) tblcount from >rdb$relations where >where rdb$relation_name = :YOUR_TABLE_NAME"
>Так ?
так
>А кто мне вернет результат ?
Fields[0].AsInteger
или измени запрос подставив псевдоним для выбираемого значения:
select count(*) tblcount from ...
Соответственно будет FieldByName("tblcount").AsInteger
Не забудь что поиск в RDB$RELATIONS будет с учетом регистра символов, то есть "MyTable"<>"MYTABLE"
Sirus (2003-02-04 07:32:00) [5]Исползуй обычные компоненты типа TQuery и тода все будет ОК...
При создании таблицы видны без перезапуска...
DarkGreen (2003-02-04 06:00:00) [6]С системными таблицами можно работать так же как и с пользовательскими, вот только данные туду ручками добавлять не стоит. Прочитать про системные таблицы, их использование и назначение можно на
http://ibase.ru
http://interbase-world.ru
Приложение не видит созданную таблицу из-за того, что ты транзакцию не закоммитил
IBQuery1.Transaction.Commit;
sveloga (2003-02-04 04:26:00) [7]по причине моей чайниковости я не знаю как работать с систамными таблицами. Можно несколько подробнее ?
Через IBQuery SQL =: "select count(*) from rdb$relations where where rdb$relation_name = :YOUR_TABLE_NAME"
Так ?
А кто мне вернет результат ?
+ еще вопрос:
Создаю таблицу в базе, но приложение ее не видет до того пока не перезапустишь приложение.
mr_ivan (2003-02-03 09:36:00) [8]Да и если покопаться в системных таблицах rdb$... можно узнать есть ли индексы тригера и т.п посмотри очень интересно!!
Sergey Masloff (2003-02-03 09:07:00) [9]select count(*) from rdb$relations where where rdb$relation_name = :YOUR_TABLE_NAME