Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Как узнать, существует ли таблица ?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
14-63823
Serd_hhc
2003-02-03 12:25
2003.02.20
Какую максимальную гадость мона сделать врагу?


3-63536
BorisUK
2003-02-03 13:38
2003.02.20
Распечатать содержимое TMemo


4-63912
Uncle Archi
2003-01-08 21:52
2003.02.20
CD-ROM


3-63560
Наташа
2003-02-03 20:35
2003.02.20
SetFocus


1-63612
mate
2003-02-11 12:07
2003.02.20
Колёсико у мышки.