Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-67130
aleks
2003-04-02 18:44
2003.04.21
Сортировка , фильтрация по вычисляемому полю


1-67349
новый
2003-04-09 15:21
2003.04.21
Как считывать с реестра строковые данные?


14-67535
vopros
2003-04-03 16:21
2003.04.21
Где лучше в Москве купить 2 офисных компа?


6-67419
blast
2003-02-28 15:01
2003.04.21
Как ПРОГРАММНО расшарить диски под WinNT??


3-67101
div
2003-04-02 14:41
2003.04.21
Помогите найти Platinum ErWin 3.5.2 или выше





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский