Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизКак узнать, существует ли таблица ? Найти похожие ветки
← →
sveloga (2003-02-03 08:49) [0]Требуется узнать существует ли данная таблица в базе InterBase ? Как это сделать ?
Так что-то криво выглядит:
try
.....
except
.....
on E: EIBInterBaseError do
← →
Sergey Masloff (2003-02-03 09:07) [1]select count(*) from rdb$relations where where rdb$relation_name = :YOUR_TABLE_NAME
← →
mr_ivan (2003-02-03 09:36) [2]Да и если покопаться в системных таблицах rdb$... можно узнать есть ли индексы тригера и т.п посмотри очень интересно!!
← →
sveloga (2003-02-04 04:26) [3]по причине моей чайниковости я не знаю как работать с систамными таблицами. Можно несколько подробнее ?
Через IBQuery SQL =: "select count(*) from rdb$relations where where rdb$relation_name = :YOUR_TABLE_NAME"
Так ?
А кто мне вернет результат ?
+ еще вопрос:
Создаю таблицу в базе, но приложение ее не видет до того пока не перезапустишь приложение.
← →
DarkGreen (2003-02-04 06:00) [4]С системными таблицами можно работать так же как и с пользовательскими, вот только данные туду ручками добавлять не стоит. Прочитать про системные таблицы, их использование и назначение можно на
http://ibase.ru
http://interbase-world.ru
Приложение не видит созданную таблицу из-за того, что ты транзакцию не закоммитил
IBQuery1.Transaction.Commit;
← →
Sirus (2003-02-04 07:32) [5]Исползуй обычные компоненты типа TQuery и тода все будет ОК...
При создании таблицы видны без перезапуска...
← →
Sergey Masloff (2003-02-04 09:02) [6]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"
← →
sveloga (2003-02-04 11:45) [7]Чем дальше в лес....
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 - это имя таблицы, которая точно существует, в этом же регистре.
← →
Val (2003-02-04 12:20) [8]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")
← →
Sergey Masloff (2003-02-04 15:42) [9]2)так и не работает
select count(*) from rdb$relations
where rdb$relation_name =:MAIN
MAIN это параметр ты ему значение присвоил?
Если не параметр то в кавычках надо а двоеточие убрать. Приведенный мною запрос работает 100% можешь не сомневаться
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c