-
TheEd (16.02.13 05:14) [0]Господа мастера, сильно не пинайте:
БД - firebird 2.1, Delphi7, Доступ к данным - FIBPlus, таблица:CREATE TABLE SomeTable (
ID INTEGER NOT NULL,
FNAME TSTR50 NOT NULL /* TSTR50 = VARCHAR(50) - Имя */,
SNAME TSTR50 NOT NULL /* TSTR50 = VARCHAR(50) - фамилия */,
PNAME TSTR50 /* TSTR50 = VARCHAR(50) - Отчество */,
FIO /* ФИО - конструируется из первых трёх */
COMPUTED BY (case
when PNAME is null
then SNAME || ' ' || LEFT(FNAME, 1) || '.'
else SNAME || ' ' || LEFT(FNAME, 1) || '.' || LEFT(PNAME, 1) || '.'
end) COLLATE PXW_CYRL, ...
При работе с таблицей в компоненте TDBGridEh при добавлении новой записи ФИО остаётся пустым до переоткрытия датасета... Можно ли его обновлять автоматом, без переоткрытия? -
TheEd (16.02.13 06:38) [1]нашел!
что-то намудрил с AutoUpdateOptions похоже, видимо копипаста подвела :)
Однако теперь другой вопрос назрел - как правильно "отлавливать" вставку новых записей в базу из других клиентских приложений?
Конечно, SameDataSet.Close и SameDataSet.Open всё решит, но я имею в виду следующее: есть ли возможность на уровне события некоторого компонента вычислить появление новых (удаление) записей и сделать ClodeOpen ручками, или - вообще автоматом настроить рефреш DBGridEh? -
turbouser © (17.02.13 00:45) [2]
> TheEd (16.02.13 06:38) [1]
> есть ли возможность на уровне события некоторого компонента
Классика. Есть лишь одно адекватное решение - бизнес логика на сервере. Если речь про справочники - то так же опрос по запросу/таймеру. По таймеру не советую :) -
TheEd (17.02.13 20:08) [3]
> Есть лишь одно адекватное решение - бизнес логика на сервере
Т.е. по любому трёхзвенная архитектура?
Про таймер - понятно, что это кривое решение. Просто была мысль что такой мощный набор компонентов как FIBPlus имеет некоторый (пусть косвенный) механизм отслеживания данных ситуаций...