Как видеть реальные состояния БД?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Как видеть реальные состояния БД?

Сообщение AnryGTR » 24 янв 2007, 18:58

Как мне сделать чтобы когда другой пользователь ввёл или изменил запись, то чтобы и в других клиентах это отобразилось? открывать/закрывать Датасэт (ФИБ+) по-моему это не логично,и нагрузка на сервак...
и ещё я не пойму: как мне перехватывать ошибки сервера (Файрбёрд 1.5), например, повторение первичного ключа и т.д., чтобы моё сообщение вылетало, а не это ...страшное... серверное?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 янв 2007, 20:02

Как мне сделать чтобы когда другой пользователь ввёл или изменил запись, то чтобы и в других клиентах это отобразилось? открывать/закрывать Датасэт (ФИБ+) по-моему это не логично,и нагрузка на сервак...
логично изучить модель клиент-сервер. сервер никому ничего не должен. что его попросят, то и делает. изменить запись - пожалуйста. но клиентам об этом он сообщать не обязан. Клиенты могут вообще не смотреть на эту конкретную запись.
ещё я не пойму: как мне перехватывать ошибки сервера (Файрбёрд 1.5), например, повторение первичного ключа и т.д., чтобы моё сообщение вылетало, а не это ...страшное... серверное?
try
except
on E: Exception do ...

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 25 янв 2007, 06:10

Ясно, значит видеть изменения не удастся пока не переоткроешь датасет.
А насчёт Try ... except..., где бы коды ошибок достать?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 25 янв 2007, 08:09

AnryGTR писал(а):где бы коды ошибок достать?
LangRef.pdf

Dmitry Beloshistov
Сообщения: 41
Зарегистрирован: 27 окт 2004, 11:06

Сообщение Dmitry Beloshistov » 25 янв 2007, 10:42

AnryGTR писал(а):Ясно, значит видеть изменения не удастся пока не переоткроешь датасет.
Эвенты используй. Как только другой пользователь закоммитится - получишь у себя уведомление.

SAMZ
Сообщения: 128
Зарегистрирован: 21 мар 2005, 08:17

Сообщение SAMZ » 25 янв 2007, 12:08

Dmitry Beloshistov писал(а):
AnryGTR писал(а):Ясно, значит видеть изменения не удастся пока не переоткроешь датасет.
Эвенты используй. Как только другой пользователь закоммитится - получишь у себя уведомление.
Эвентами тоже злоупотреблять не стоит по понятным причинам. Надо грамотно использовать виды транзакций, параметры изоляции и т.д. Все это не 100 процентная гарантия от коллизий, но в сочетании со средтсвами обработки исключений дает вполне хороший результат.

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 25 янв 2007, 13:25

Спасибо, ребята... приму к сведению! 8)

Ответить