Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Допросить базу данных


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. вобще реализуем кто-нить в курсе


Наверх

Титульная страница Поиск, карта сайта Написать письмо