![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
interbase [D5, IB5.x]
SergBBS © (2003-02-26 13:06:00)Здравствуйте!
Уважаемые мастера! Подскажите как обновить пользователям набор данных при изменении или добавлении одним из них записи. Используется interbase 5.5
MsGuns (2003-02-28 11:17:00) [1]Очень рекомендую IBExpert - хорошая вещь.
www.ibexprt.com
Там все доходчиво и красиво (в стиле IDE Delphi).
SergBBS (2003-02-28 11:17:00) [2]Большое спасибо за ваши ответы, но не надо из-за меня начинать перепалку.
Johnmen (2003-02-28 10:47:00) [3]>Vladimir © (28.02.03 10:42)
>> Sergey13 © Не смущай человека, начинать-то надо с чего-то.
Ну да, давай начнем изучение с вопросов в форумы...:)
Vladimir (2003-02-28 10:42:00) [4]> Sergey13 © Не смущай человека, начинать-то надо с чего-то.
SergBBS
Совет насчет заглянуть в SQL-Ref не стоит отвергать, однако...
Когда речь идет об изменении метаданных (структуры БД), то это либо скрипт, либо iSQL (что, в принципе, одно). Про сторонние компоненты речи нет.
Здесь тебе необходимо произвести изменение структуры БД - поставить триггер на изменения в таблице. Что такое триггер, более точно прочитай в справке. Create triggerвыполняется в iSQL.
Sergey13 (2003-02-28 09:44:00) [5]2SergBBS (28.02.03 09:14)
Ты меня извини конечно, тезка, но (судя по твоим вопросам) брось ты на фиг заниматься тем вопросом,с которого начал ветку. Отложи годика на два. Тем паче что конечный результат ну о-о-о-очечень сомнителен. Поверь.
Без знаний арифметики алгебры не поймешь.
Johnmen (2003-02-28 09:29:00) [6]>SergBBS (28.02.03 09:14)
Примеры применения и указанного кода и других кодов есть в SQL Reference Help, и заглянуть туда проще и быстрее, чем сюда...
SergBBS (2003-02-28 09:14:00) [7]Vladimir!
Прости меня за глупый вопрос, но как применить данный код: через интерактивный sql на сервере или через компонент Query.
Vladimir (2003-02-27 17:28:00) [8]Таблица
TABLE1(
rec integer not null primary key,
name varchar(10))
ГенераторGEN_TABLE1_REC
Триггер на вставку записи в базу: присваивает автоинкрементом поле REC, NAME пишет имя пользователя, делающего вставку, вызывает событие "new_in_table1":
CREATE TRIGGER TABLE1_BI FOR TABLE1
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.REC = GEN_ID(GEN_TABLE1_REC,1);
NEW.NAME=user;
post_event("new_in_table1");
END
Пробуй.
SergBBS (2003-02-27 16:33:00) [9]Vladimir! Я наверное чего-то не понимаю, объясни как в базе поставить триггер. Пожалуйста!
Vladimir (2003-02-27 16:19:00) [10]
> там еще стоит компонент TStoredProc
Там это где??? В базе ставишь на триггере
post_event("ME_EVENT");
В событиях Alerter"а пишешь те же самые строки. При чем здесь StoredProc?!
Desdechado (2003-02-27 15:53:00) [11]через компоненты типа TQuery
SergBBS (2003-02-27 14:53:00) [12]Я вот по поводу IBEventAlerter. Нашел в примерах его использование, а там еще стоит компонент TStoredProc. Насколько я понимаю в базе должна быть какая-то процедура. А как ее туда засунуть я не понимаю (делается это с помощью сервера InterBase или с помощью какого-то компонента в Delphi или еще как). Я вот читал документацию по серверу Interbase и там все сплошь одни операторы, которые выполняются с помощью Sql Explorer-а, а как это применить в програмке на Delphi? Может кто-нибудь объяснит ?
Roki (2003-02-27 13:23:00) [13]2 Johnmen ©
Спасибо, опять меня выручил.
О сделал:
read_committed
rec_version
nowait
заработало.
Johnmen (2003-02-27 13:08:00) [14]Получает.
Видимо не выставлены параметры транзакции. Даблклик на IBTransaction...
Roki (2003-02-27 13:01:00) [15]Я вот делаю как Вы посоветовали close open у IBDataSet , а обновления я не вижу...Хотя в БД они лежат. CommitRetaining использую. Почему программа не получает данные с сервера при close open?
Vladimir (2003-02-27 12:57:00) [16]>Johnmen ©
Согласен, немного стоит приложить руки к нему. Апдейты там поставить... Да и после них надо напильником поработать. А так вобщем-то совсем даже ничего.
Johnmen (2003-02-27 12:28:00) [17]>Vladimir © (27.02.03 12:17)
Методологически - это вариант.
По жизни - весьма сомнительное мероприятие, громоздкое и глюкавое в силу оцтойности IBEventAlerter :)))
Vladimir (2003-02-27 12:17:00) [18]Собственно на вопрос никто не ответил - используй IBEventAlerter. На изменение данных (удал,добав,изм) ставишь post(event), регистрируешь события в программе и отрабатываешь собственно Close Open (Refresh), как подсказывали выше.
zacho (2003-02-27 10:22:00) [19]В 5.5 есть весьма серьезные баги, могущие привести к разрушению БД. Т.ч. использовать надо как минимум 5.6. Кстати, насколько помню, апдейт 5.5 до 5.6 был бесплатным. А насчет FB - смотри www.ibase.ru и далее по ссылкам
SergBBS (2003-02-26 14:55:00) [20]А чем плох InterBase 5.5? Или чем лучше FireBird?