Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
ВнизADO тслеживание изменения записей в таблице Найти похожие ветки
← →
Sergey (2003-04-01 12:03) [0]Здравствуйте уважаемые мастера
Как допустим после выборки из таблицы отследить(получить уведомление) об изменение записей в таблице (insert, delete)
и получить уведомление (ну типа мевагг какой-нибудь ???)
так как хоят чтобы сетевая была прога
(насколько я слышал в CursorType -> Dynamic)
вроде пробывал но устанавлисается в Static и все тут
Driver VsFP
Components -> ADO
Подскажите пожалуйста
ADO тслеживание изменения записей в таблице
← →
Соловьев (2003-04-01 12:05) [1]
> получить уведомление (ну типа мевагг какой-нибудь ???)
мидас
← →
Sergey (2003-04-01 12:19) [2]>мидас
а по подробнее можно ???
← →
Соловьев (2003-04-01 12:23) [3]ну там много чего надо писать. Если с Мидасом не знаком. То лучше перейди на IB(FireBird). Там можно рассылать сообщения.
← →
sniknik (2003-04-01 12:37) [4]http://delphi.mastak.ru/cgi-bin/download.pl?look=1&id=1048941720&n=1
пример по мидас, + в дельфях есть, + книги (одна неплохая есть на английском на сайте Анатолия Подгорецкого)
хотя не пойму чем он тут поможет, если изменения к примеру делаются не твоей прогой? А если все меняется только твоей то оповещение можно делать и гораздо более "дешевле" (знаете сколько лицензия на мидас стоит?).
почему к примеру не посылать UDP пакеты, по сети?
← →
Sergey (2003-04-01 14:14) [5]>пример по мидас
пример конечно хороший, но все же обязательно создавать DCOM
сервер нельзя ли как -нибудь средствами ADO обойтись ???
или допустим как изменить что добавить, что бы на изменение реагировало ???
ни разу не работал даже не знаю с чего начать
>примеру не посылать UDP пакеты
с пакетами конечно интересно, но данные могут изменять другие проги поэтому вероятно неподойдет
Посдкажите пожалуйста
← →
Соловьев (2003-04-01 14:25) [6]ADO обеспечивает доступ, а уж никак не работу триггеров...
> Посдкажите пожалуйста
отказаться от Visual FoxPro и перейти на БД типа IB, Oracle...
← →
sniknik (2003-04-01 14:40) [7]Sergey (01.04.03 14:14)
> пример конечно хороший, но все же обязательно создавать DCOM
сервер нельзя ли как -нибудь средствами ADO обойтись ???
там двойное подключение (DCOM необязателен), если по нему не получается подключается через сокет.
средствами ADO обойтись тоже можно RDS встроен в ADO, но тоже DCOM использует и в настройках сложнее (параноики делали, задолбали своей безопасностью :о))).
> с пакетами конечно интересно, но данные могут изменять другие проги поэтому вероятно неподойдет
если есть другие проги то все насмарку, ничего не поможет кроме SQL server-а какого нибудь который поддерживает оповещение (попытайся заставить другие программы перейти, ;о) ага как же!).
с пакетами можно какой никакой эмулятор сделать, следить за изменениями файлов в базе (примеры здесь на сайте есть, по Tread, там как пример слежение за директорией), считать что если были изменения файла то это и есть инсерт/делете и посылать... всех :о).
← →
Sergey (2003-04-01 15:37) [8]>отказаться от Visual FoxPro и перейти на БД типа IB, Oracle
в идеале нужно так но моя задача не такого уровня, да и
времени уже не осталось
>там как пример слежение за директорией), считать что если были >изменения файла то это и есть инсерт/делете и посылать... >всех :о).
хорошая идея, а если сетевой путь то эта функция отслеживает или нет ???
← →
sniknik (2003-04-01 15:53) [9]> хорошая идея, а если сетевой путь то эта функция отслеживает или нет ???
нет скорее всего, но это разве важно? "посыльщик" должен на машине с базой находится (логично), а UDP пакет все равно на все компы локальной сети попадет.
← →
Соловьев (2003-04-01 16:03) [10]
> да и
> времени уже не осталось
onTimer:
Query.Close;
Query.Open;
← →
Sergey (2003-04-01 16:11) [11]>нет скорее всего, но это разве важно? "посыльщик" должен на >машине с базой находится (логично), а UDP пакет все равно на >все компы локальной сети попадет.
простите я несколько непонял
если к примеру "посыльщик"(не моя прога) находится на одном компе база на другом и там моя прога отслеживающ изменения не запущена а работает на 3 то как я полячу уведомление об изменение ???
← →
sniknik (2003-04-01 16:47) [12]"посыльщик" это обязательно должна быть твоя прога, именно она должна следить за каталогом/базой и при изменении какой либо таблици посылать в сеть сообщение.
в принципе ей делать больше ничего не нухно.
а вот ловить посылки должны твои проги которые работают с базой, поймали посмотрели от кого какая таблица поменялась (зашить в посылку), и рефрешить ее (грид чтобы отразит изменения) либо взвести флаг на рефреш (ну это уж как придумаеш) если в этот момент программа занята.
← →
sniknik (2003-04-01 16:50) [13]"посыльщик" - я имею ввиду прогу которая посылает сообщения в сеть.
а ты наверно понял та которяй посылает "updete/incert"?
← →
JibSkeart (2003-04-01 18:18) [14]Можно даже и Socket-ы для этого сипользовать
Ну допутим нажал кнопочку добавить запись
после того как все прошло успешно
посылаеш сообшение (через сокет конечно) серваку
о том что были измененны или добавлны записи
а сервак остальным клиентам
те остальные клиенты "поняв" что им пришло от сервака
обновили таблицу :)
в принципе это тоже самое что господин sniknik вам говорил :)
← →
Sergey (2003-04-01 21:51) [15]>sniknik
1. по поводу "посыльщик" ну допустим это иоя прога будет висеть
на каком то компе где база
а как мне отследить запущена она или нет и как её удалить при завершение работы с базой последнего usera ????
2. я тут потестировал прогу отслеживает изменение в директории, по сетевому пути то она тоже работает(функция всмысле FindFirstChangeNotification ) и уведомляет об изменение
так не проще будет сделать уже в самой базовой программе отслеживание изменения (по пути ) как вы думаете ????
← →
sniknik (2003-04-01 22:13) [16]> 1. по поводу "посыльщик" ну допустим это иоя прога будет висеть
на каком то компе где база
а как мне отследить запущена она или нет и как её удалить при завершение работы с базой последнего usera ????
не удаляй пусь висит, чем она тебе мешать будет? а запуск, ну сделай ее сервисом/в автозагрузку вставь/в реестре на автомат на выбор. (если думаеш что будет мешать посчитай сколько процессов/сервисов у тебя сейчас и много ли добавит еще один) и можно пустые посылки слать, ну типа "я здесь, я работаю" если хочеш знать запущена она или нет. (это идея была! а реализация как сделаеш так и будет)
> 2. я тут потестировал прогу отслеживает изменение в директории, по сетевому пути то она тоже работает(функция всмысле FindFirstChangeNotification ) и уведомляет об изменение
так не проще будет сделать уже в самой базовой программе отслеживание изменения (по пути ) как вы думаете ????
да вобщем хозяин барин, как сделает так и будет. если по вашему то в посыльшике надобность отпадает но если запустят 10прог каждая этим будет заниматся, не запутаются? а по моему будет следить только одна. но конечно тебе решать.
← →
Sergey (2003-04-01 23:57) [17]ваша идея мне кажется более рациональной
а что можете посоветовать для осуществления уведомления
по сетке
TserverSocket TClientSocket или ???
просто не разу не работал надо же когда то начинать :)
← →
ЮЮ (2003-04-02 03:00) [18]Просто пользователей надо приучать к мысли, что их много одновременно работает над базой и для получения актуальной на данный момент информации надо нажать кнопочку "обновить".
← →
Sergey (2003-04-02 07:27) [19]там насколько я понял в TserverSocket TClientSocket
чтобы клиенту законнектится к серверу необходим указывать IP адрес
сервера а, как к примеру указать IP сервера если заранее он не известен (в смысле где используется "посыльщик")
Может чем другим воспользоватся
Подскажите пожалуйста
← →
sniknik (2003-04-02 08:21) [20]я бы выбрал то чем счас пользуюсь (правда немного для другого) Indy - TIdUDPServer, TIdUDPClient, посылать UDP дейтаграму, не адресно отдельному IP а всем компам в лок.сети, по маске (255.255.255.0 к примеру), тогда неважно сколько твоих программ будет в сети запущено все получат уведомления.
вообще будет ограничение, только одна программа сможет работать на одном компе (порт на чтение может быть открыт только один) но это с любыми компонентами. Нужно подумать как обойти, может в несколько посылать ...
(раньше пользовался TNMUDP c закладки FastNet, но у него есть пара неприятных глюков/особенностей (что считать глюком? один раз мне это помогло) так к примеру положенный на форму этот компонент не дает перегрузится пока программа использующая его работает)
← →
Sergey (2003-04-02 11:48) [21]а можно допустим реализовать обратную связь то есть Клиента с сервером т. е как допустим настроить клиента на сервер не зная IP сервера (зная только порт) ?????
← →
sniknik (2003-04-02 12:13) [22]зачем его настраивать? он должен "слушать" сеть по определенному порту и все. порты в обоих одинаковые задаеш и вся настройка.
(у инди есть хорошие примеры UDPClient UDPServer посмотри их)
← →
Sergey (2003-04-02 12:41) [23]я просто пытаюсь понять можно ли с помощью этих компонентов релизовать такую схему
к прмеру на каком то компе польз запустил мою прогу или выполнил
кикие то действия и сама программа оповещает всех клиентов о новом пользователе или о каких то действиях произв пользователм ???
← →
sniknik (2003-04-02 12:56) [24]конечно можно, 2 компонента (1 на посылку 1 на чтение) в свою прогу (вернее 3 там еще "антифриз" рекомендуют) и посылай с каждой копии проги в сети и ловить все будут.
только тогда не получится то с чего начали (если данные меняет другая программа, тут ктото должен следить за каталогом).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.01 c