![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO тслеживание изменения записей в таблице [D6, ADO]
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 пакеты
с пакетами конечно интересно, но данные могут изменять другие проги поэтому вероятно неподойдет
Посдкажите пожалуйста