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

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

ADO тслеживание изменения записей в таблице [D6, ADO]


Страницы:   1 2

Sergey ©   (2003-04-01 12:03:00) 

Здравствуйте уважаемые мастера
Как допустим после выборки из таблицы отследить(получить уведомление) об изменение записей в таблице (insert, delete)
и получить уведомление (ну типа мевагг какой-нибудь ???)
так как хоят чтобы сетевая была прога
(насколько я слышал в CursorType -> Dynamic)
вроде пробывал но устанавлисается в Static и все тут

Driver VsFP
Components -> ADO

Подскажите пожалуйста
ADO тслеживание изменения записей в таблице


sniknik   (2003-04-02 12:56:00) [1]

конечно можно, 2 компонента (1 на посылку 1 на чтение) в свою прогу (вернее 3 там еще "антифриз" рекомендуют) и посылай с каждой копии проги в сети и ловить все будут.

только тогда не получится то с чего начали (если данные меняет другая программа, тут ктото должен следить за каталогом).


Sergey   (2003-04-02 12:41:00) [2]

я просто пытаюсь понять можно ли с помощью этих компонентов релизовать такую схему

к прмеру на каком то компе польз запустил мою прогу или выполнил
кикие то действия и сама программа оповещает всех клиентов о новом пользователе или о каких то действиях произв пользователм ???


sniknik   (2003-04-02 12:13:00) [3]

зачем его настраивать? он должен "слушать" сеть по определенному порту и все. порты в обоих одинаковые задаеш и вся настройка.
(у инди есть хорошие примеры UDPClient UDPServer посмотри их)


Sergey   (2003-04-02 11:48:00) [4]

а можно допустим реализовать обратную связь то есть Клиента с сервером т. е как допустим настроить клиента на сервер не зная IP сервера (зная только порт) ?????


sniknik   (2003-04-02 08:21:00) [5]

я бы выбрал то чем счас пользуюсь (правда немного для другого) Indy - TIdUDPServer, TIdUDPClient, посылать UDP дейтаграму, не адресно отдельному IP а всем компам в лок.сети, по маске (255.255.255.0 к примеру), тогда неважно сколько твоих программ будет в сети запущено все получат уведомления.
вообще будет ограничение, только одна программа сможет работать на одном компе (порт на чтение может быть открыт только один) но это с любыми компонентами. Нужно подумать как обойти, может в несколько посылать ...

(раньше пользовался TNMUDP c закладки FastNet, но у него есть пара неприятных глюков/особенностей (что считать глюком? один раз мне это помогло) так к примеру положенный на форму этот компонент не дает перегрузится пока программа использующая его работает)


Sergey   (2003-04-02 07:27:00) [6]

там насколько я понял в TserverSocket TClientSocket
чтобы клиенту законнектится к серверу необходим указывать IP адрес
сервера а, как к примеру указать IP сервера если заранее он не известен (в смысле где используется "посыльщик")
Может чем другим воспользоватся
Подскажите пожалуйста


ЮЮ   (2003-04-02 03:00:00) [7]

Просто пользователей надо приучать к мысли, что их много одновременно работает над базой и для получения актуальной на данный момент информации надо нажать кнопочку "обновить".


Sergey   (2003-04-01 23:57:00) [8]

ваша идея мне кажется более рациональной
а что можете посоветовать для осуществления уведомления
по сетке
TserverSocket TClientSocket или ???

просто не разу не работал надо же когда то начинать :)


sniknik   (2003-04-01 22:13:00) [9]

> 1. по поводу "посыльщик" ну допустим это иоя прога будет висеть
на каком то компе где база
а как мне отследить запущена она или нет и как её удалить при завершение работы с базой последнего usera ????

не удаляй пусь висит, чем она тебе мешать будет? а запуск, ну сделай ее сервисом/в автозагрузку вставь/в реестре на автомат на выбор. (если думаеш что будет мешать посчитай сколько процессов/сервисов у тебя сейчас и много ли добавит еще один) и можно пустые посылки слать, ну типа "я здесь, я работаю" если хочеш знать запущена она или нет. (это идея была! а реализация как сделаеш так и будет)

> 2. я тут потестировал прогу отслеживает изменение в директории, по сетевому пути то она тоже работает(функция всмысле FindFirstChangeNotification ) и уведомляет об изменение
так не проще будет сделать уже в самой базовой программе отслеживание изменения (по пути ) как вы думаете ????

да вобщем хозяин барин, как сделает так и будет. если по вашему то в посыльшике надобность отпадает но если запустят 10прог каждая этим будет заниматся, не запутаются? а по моему будет следить только одна. но конечно тебе решать.


Sergey   (2003-04-01 21:51:00) [10]

>sniknik

1. по поводу "посыльщик" ну допустим это иоя прога будет висеть
на каком то компе где база
а как мне отследить запущена она или нет и как её удалить при завершение работы с базой последнего usera ????


2. я тут потестировал прогу отслеживает изменение в директории, по сетевому пути то она тоже работает(функция всмысле FindFirstChangeNotification ) и уведомляет об изменение
так не проще будет сделать уже в самой базовой программе отслеживание изменения (по пути ) как вы думаете ????








JibSkeart   (2003-04-01 18:18:00) [11]

Можно даже и Socket-ы для этого сипользовать

Ну допутим нажал кнопочку добавить запись
после того как все прошло успешно
посылаеш сообшение (через сокет конечно) серваку
о том что были измененны или добавлны записи
а сервак остальным клиентам
те остальные клиенты "поняв" что им пришло от сервака
обновили таблицу :)

в принципе это тоже самое что господин sniknik вам говорил :)


sniknik   (2003-04-01 16:50:00) [12]

"посыльщик" - я имею ввиду прогу которая посылает сообщения в сеть.
а ты наверно понял та которяй посылает "updete/incert"?


sniknik   (2003-04-01 16:47:00) [13]

"посыльщик" это обязательно должна быть твоя прога, именно она должна следить за каталогом/базой и при изменении какой либо таблици посылать в сеть сообщение.
в принципе ей делать больше ничего не нухно.
а вот ловить посылки должны твои проги которые работают с базой, поймали посмотрели от кого какая таблица поменялась (зашить в посылку), и рефрешить ее (грид чтобы отразит изменения) либо взвести флаг на рефреш (ну это уж как придумаеш) если в этот момент программа занята.


Sergey   (2003-04-01 16:11:00) [14]

>нет скорее всего, но это разве важно? "посыльщик" должен на >машине с базой находится (логично), а UDP пакет все равно на >все компы локальной сети попадет.

простите я несколько непонял
если к примеру "посыльщик"(не моя прога) находится на одном компе база на другом и там моя прога отслеживающ изменения не запущена а работает на 3 то как я полячу уведомление об изменение ???


Соловьев   (2003-04-01 16:03:00) [15]


> да и
> времени уже не осталось

onTimer:
Query.Close;
Query.Open;



sniknik   (2003-04-01 15:53:00) [16]

> хорошая идея, а если сетевой путь то эта функция отслеживает или нет ???
нет скорее всего, но это разве важно? "посыльщик" должен на машине с базой находится (логично), а UDP пакет все равно на все компы локальной сети попадет.


Sergey   (2003-04-01 15:37:00) [17]

>отказаться от Visual FoxPro и перейти на БД типа IB, Oracle

в идеале нужно так но моя задача не такого уровня, да и
времени уже не осталось


>там как пример слежение за директорией), считать что если были >изменения файла то это и есть инсерт/делете и посылать... >всех :о).

хорошая идея, а если сетевой путь то эта функция отслеживает или нет ???



sniknik   (2003-04-01 14:40:00) [18]

Sergey (01.04.03 14:14)
> пример конечно хороший, но все же обязательно создавать DCOM
сервер нельзя ли как -нибудь средствами ADO обойтись ???

там двойное подключение (DCOM необязателен), если по нему не получается подключается через сокет.
средствами ADO обойтись тоже можно RDS встроен в ADO, но тоже DCOM использует и в настройках сложнее (параноики делали, задолбали своей безопасностью :о))).

> с пакетами конечно интересно, но данные могут изменять другие проги поэтому вероятно неподойдет

если есть другие проги то все насмарку, ничего не поможет кроме SQL server-а какого нибудь который поддерживает оповещение (попытайся заставить другие программы перейти, ;о) ага как же!).
с пакетами можно какой никакой эмулятор сделать, следить за изменениями файлов в базе (примеры здесь на сайте есть, по Tread, там как пример слежение за директорией), считать что если были изменения файла то это и есть инсерт/делете и посылать... всех :о).


Соловьев   (2003-04-01 14:25:00) [19]

ADO обеспечивает доступ, а уж никак не работу триггеров...

> Посдкажите пожалуйста

отказаться от Visual FoxPro и перейти на БД типа IB, Oracle...


Sergey   (2003-04-01 14:14:00) [20]

>пример по мидас
пример конечно хороший, но все же обязательно создавать DCOM
сервер нельзя ли как -нибудь средствами ADO обойтись ???
или допустим как изменить что добавить, что бы на изменение реагировало ???
ни разу не работал даже не знаю с чего начать

>примеру не посылать UDP пакеты

с пакетами конечно интересно, но данные могут изменять другие проги поэтому вероятно неподойдет

Посдкажите пожалуйста


Страницы:   1 2

Наверх

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