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

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

Работа с Interbase [D6, IB6.x]


Страницы:   1 2 3

MAxiMum ©   (2002-03-26 12:29:00) 

У меня, вообще-то, куча вопросов по Interbase. Ответьте, хотя бы на некоторые.
1. Как клиент может послать обновлённые (добавленные) данные?
2. Как сервер может узнать об обновлении?
Пока всё. ПОМОГИТЕ!!!


dymka   (2002-03-28 07:38:00) [21]

2 GrayMage:
Насколько часто тебе нужно видеть эти изменения??? Или ты хочешь чтобы лампочка загоралась, если пользователь что-нибудь сменил???
Обоснуй частое обновление, ведь можно обновлять локальные данные при новом запросе. Т.е. нужно узнать - нажал на кнопку... а автоматически то зачем... не спорю - такие ситуации возникают, только нужно хорошее обоснование...


GrayMage   (2002-03-28 07:34:00) [22]

Хорошо dymka, а выход где? Да я, например, сузил диапазон обрабатываемый Query. И мне необходимо видеть все изменения которые делает пользователь (база складского учета, выписка накладных, в накладную вбивается позиция - сумма изменяется - требуется обновление; меняется признак накладной - требуется обновление; и т.д.). И как это сделать без большого трафика?

To MAxiMum:
> даже на той машине, где и произошли изменения. А это не
> нужно.

Интересно, а как эта машина узнает что IB принял эти изменения? Commit он такой ... Конечно этот вопрос справедлив если ты используешь для отображения Query.


dymka   (2002-03-28 07:17:00) [23]

БАЗА НЕ ВЕЗДЕ! Она только в одном месте, именуемом сервером...
Чтобы я мог хорошо понимать вопрос нужно задавать их, используя по возможности "правильную" терминологию...
На клиенте это локальная копия данных... Когда ты подключаешься к серверу и открываешь набор, то стартует транзакция и часть данных копируется тебе в память, с которой и работает клиент.
Ничего страшного нет, если ты обновишь локальные данные...
Вот интересно - насколько часты обновления у тебя? Если база многопользовательская и обновления идут каждую секунду, то работа станет невозможной, всвязи с частыми обновлениями...
Это не так быстро - переоткрыть набор...


MAxiMum   (2002-03-27 18:52:00) [24]

Если программа изменяет что-то в БД. То, если использовать события, обновится сама база везде, даже на той машине, где и произошли изменения. А это не нужно.


dymka   (2002-03-27 17:59:00) [25]

Не понял сути вопроса в следущем месте:

Если он сам изменил, генерируется событие и он обновляет то, что сам и исправил.

Бррр... Как сам изменил??? Как обновляет??? Что исправил???


MAxiMum   (2002-03-27 17:54:00) [26]

Надо, чтобы изменения были видны сразу.
Кстати, CommitRetaining есть и у IBTransaction.
Ну, а с трафиком ничего не поделаешь. Неохота, тяжело, но придётся ещё везде и Event"ы ставить. Эх!
А на сервере, интересно, как может получиться. Если он сам изменил, генерируется событие и он обновляет то, что сам и исправил. Я думаю это не порядок. Подскажите, как обойти это!


dymka   (2002-03-27 17:31:00) [27]

Вообще принципы клиент-серверного программирования не допускают автоматического узнавания другими клиентами изменения в базе, а сделано это для минимизации сетевого траффика, т.к. база сетевая... В айби можно создать событие - тока будь осторожен, стандартный TIBEvent немного глюкует... Но, если ты скажем на триггер будешь генерировать событие, а на клиентах перечитывать данные по нему, то ты здорово напряжешь свой сервак и сеть...
Если уж очень такое надо, то перечитывай базу скажем после 10 евентов... или подбери число экспериментально...
Далее... Если использовать IBX, то при Commit все наборы данных в текущее сессии закроются... Выход первый - сразу открыть все и восстановить букмарки, которые ты предварительно сделал...
Второе - воспользоваться компонентами FIBPlus, где есть поддержка CommitRetaining и что еще приятно после BDE, CommitOnPost...


MAxiMum   (2002-03-27 14:21:00) [28]

Т.е. нужно добавить Event"ы везде и потом ловить на TIBEvents?


Fay   (2002-03-27 14:15:00) [29]

POST_EVENT вроде


MAxiMum   (2002-03-27 14:09:00) [30]

Повторю, кто не слышал. Как сервер или клиент может узнать об изменениях в БД на сервере. Подскажите, плз.


MAxiMum   (2002-03-26 20:21:00) [31]

А как насчёт вопроса №3(обновления не появятся на сервере) и вопроса №4(подскажите насчёт этого).


Johnmen   (2002-03-26 16:56:00) [32]

-CommitRetaining,RollbackRetaining
-кнопкой
-так все изменения и делает только сервер !


MAxiMum   (2002-03-26 16:44:00) [33]

Я работаю без BDE. После явного IBTransaction.Commit всё закрывается (IBDatabase, IBTransaction, все IBTable и IBQuery). Приходится всё переоткрывать.
Порекоммендуйте, как:
1) это можно обойти (переоткрытие);
2) как делать Commit: кнопкой, на OnPost или по таймеру.
3) сервер узнает об изменениях;
4) организовать на клиенте обзор базы (я думаю запрос к серверу, чтобы он выдавал информацию о паках и файлах своего компьютера, но это гемморно).
>Johnmen
С транзакциями я знаком.


Alexandr   (2002-03-26 14:38:00) [34]

2All:для тех, кто не понял- он через IBX работает.

2MAxiMum: В поставке Дельфи есть пример по работе с IBX посмотри (называется что -то вроде MastAppIB)


alexandervasjuk   (2002-03-26 14:37:00) [35]

CommitRetail рекомендую для IBX
Для BDE в BDE Administrator поройся в настройках своего Alias"а


Ura   (2002-03-26 14:31:00) [36]

Тогда попробуй сделать явно Commit для транзакции к которой привязана таблица...


Johnmen   (2002-03-26 14:30:00) [37]

Это и есть IBX...
Используй IBDatabase, IBTransaction - это обязательно,
остальное - по вкусу...


Slava   (2002-03-26 14:29:00) [38]

IBTransaction.Commit


MAxiMum   (2002-03-26 14:22:00) [39]

>Ura
Нет через компоненты страница Interbase.


Ura   (2002-03-26 14:21:00) [40]

Повторяю вопрос через что доступ?
IBX ADO Express BDE ???


Страницы:   1 2 3

Наверх

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