![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Допросить базу данных
Silver_ © (2003-03-11 14:55:00)1. как спросить у самой таблицы время последней её модификации (записи)
2. как ПРОГРАММНО ловить попытку записи в БД (таблицу) типа MyDBChange(Sender: TDataSet)
Silver_ (2003-03-12 17:01:00) [1]Спасибо!
Соловьев (2003-03-12 15:08:00) [2]http://docs.gets.ru
Соловьев (2003-03-12 14:59:00) [3]Вот одна там есть неплохая статейка:
http://delphi.diagnostic.ru:8101/documentation.html
А так www.ya.ru и вперед.
Silver_ (2003-03-12 14:45:00) [4]
> Соловьев ©
Где. Ссылочку кинь, если не трудно :)
Соловьев (2003-03-12 14:39:00) [5]Ну так в чем проблема? По Мидасу доков хоть отбавляй...
Silver_ (2003-03-12 14:15:00) [6]
> сервак будет рассылать месаги клиентам для обновления?
так вопрос в том и состоит
> делать все это для всех таблиц в одном месте безссылки
> на какойнибудь там (Before/After Insert,Post...)
> - согласитесь не очень удобно добавил таблицу, не забудь
> про ссылку(и)... :(
Соловьев (2003-03-12 13:14:00) [7]Может стоить сделать трех звенку и сервак будет рассылать месаги клиентам для обновления?
Silver_ (2003-03-12 13:11:00) [8]
> триггер ни разу не видели? да пожалуйста ;):
видели тока вручную из проги не писали :) (под SyBase)
> MsGuns © (11.03.03 21:49)
> А эвентов в аксессе нет ?
вроде нет :(
Конкретный пример БД содержит таблиц 30
программой одновременно пользуются юзеров 10 и постоянно вносят изменения в БД
у каждого из ни постоянно должна быть последние изменения
!- Рефреш по таймеру текущую(щие- если на одной форме данные из больше одной) таблицы
*- справедливо но Рефреш происходит медленно если таблицы содержат много записей или
имеют много связаных с ней
Решение не рефрешить если никто не произвел изменения (что мне и нужно)
- следующий этап выполнать Рефреш незаметно для пользователя
!- Триггеры (Before/After Insert,Post...) скажете вы
*- но цеплять ссылку на каждую таблицу мне кажется некрасивым подходом
Вот и ищу другой подход (потому что хочется сделать компонент
вставил в проект а он сам ловит кто изменился, кого менять... :)
или по крайней мере делать все это для всех таблиц в одном месте без ссылки
на какойнибудь там (Before/After Insert,Post...)
- согласитесь не очень удобно добавил таблицу, не забудь про ссылку(и)... :(
!- Хочу вроде Триггеры (Before/After Insert,Post...) на БАЗУ ДАННЫХ (Соединение что-ли) :)))))
MyDBChange(Sender: TDataSet), где Sender это DataSet (а еще лучше TableName из БД :)
в котором (...) запись
MsGuns (2003-03-11 21:49:00) [9]А эвентов в аксессе нет ?
Val (2003-03-11 17:48:00) [10]и било бы касиво если б поставить триггер (BeforeInsert/Update) на БД :))
что-то вы, уважаемый путаете. триггера ставятся на таблицы понятие бд весьма абстрактно - в dBase это 1 таблица,в Oracle - это ряд схем...и т.д.
триггер ни разу не видели? да пожалуйста ;):
CREATE OR REPLACE TRIGGER trbuhousepaymbase_nomodifyid
BEFORE UPDATE
ON housepaymbase
FOR EACH ROW
WHEN (
New.ID <> Old.ID)
begin
pkg_errors.raise_error(115243);
end;
/
Silver_ (2003-03-11 17:31:00) [11]
> а у вас юзеру одновременно вся база показывается, что-ли?
вобщето нет правда есть некоторые формы где обьекты привязаны к разным таблицам (со связью Master-Detail как правило)
- просто думал как бы в одном месте (по таймеру) сделать рефреш
для любой таблицы без разницы какая показыватся (потому что до этих пор не следил какая показыватся (т.е. не имел глобального указателя на текущую таблицу) - теперь решил поставить
один DBNavigator для всех таблиц и придется следить (чтоб DataSource поправлять))
> по пункту 2 - триггера тоже программно пишутся :)
вот этого ни разу не делал :( , покажи пример (щоб знал) плз.
(ранише писал под SyBase тама триггеры сразу в базу ставил)
по поводу
> BeforeInsert/Update и т.д. и т.п...
я в курсе :) но не хотелось всем DataSet-aм ссылку ставить думал другой подход есть
и било бы касиво если б поставить триггер (BeforeInsert/Update) на БД :))
если есть просим в студию :)
Val (2003-03-11 16:47:00) [12]>Silver_ (11.03.03 16:36)
Чтоб рефрешить тока изменившуюся таблицу..
а у вас юзеру одновременно вся база показывается, что-ли?
по пункту 2 - триггера тоже программно пишутся :)
по поводу работы без триггеров - так практически все компоненты представления наборов данных имеют события BeforeInsert/Update и т.д. и т.п...
Silver_ (2003-03-11 16:36:00) [13]Чтоб рефрешить тока изменившуюся таблицу
по поводу п. 2. мона навешать триггеров но...
...ПРОГРАММНО - требования такие
1. чтоб быстро и легко адаптировалась к другой СУБД
- не все СУБД поддерживають триггеры к тому же триггеры на каждую таблицу :(((
а если решить п.2. то про п.1. мона забыть
нужно решение хотя бы по одному пункту (любому)
Val (2003-03-11 16:25:00) [14]Silver_ (11.03.03 15:46)
желание знать справедливо, но вот этот пост меня несколько смущает. раскажите-ка, на кой вам это надо.
Silver_ (2003-03-11 16:15:00) [15]Access
но желательно ПРОГРАММНО
zacho (2003-03-11 16:12:00) [16]Скажи сначало, какая БД, вряд-ли здесь найдутся телепаты :-)
Silver_ (2003-03-11 15:46:00) [17]а как тогда делаете Refresh на БД тока не говорите что берете все таблицы и ... Refresh это ж полная ж. (по времени)
Silver_ (2003-03-11 15:26:00) [18]пояснения к п.1
1. в Access например есть время последней модификации структуры
может есть и время последней модификации записей
п.2. вобще реализуем кто-нить в курсе