powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кэшированные изменения
7 сообщений из 7, страница 1 из 1
Кэшированные изменения
    #32135394
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в таблице есть два вычисляемых поля. Использую IBDataSet, DBGrid - почему при добавлении записи в локальный буфер (кэш) эти два поля мне не показываются, а показываются только после ApplyUpdates??? Можно ли как-то это исправить? И как получить доступ к любому полю НД в кэше программно???

Как мне проверить в кэшированных, ещё не подтверждённых изменениях, единственность записи??? (насколько я понял - этого сделать нельзя)
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135417
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>два вычисляемых поля

Они у тебя где, в запросе вычисляются наверно. Так кто ж их тебе в DataSet будет пересчитывать. ИСпользуй вычисляемые поля в DataSet, чтоб они пересчитывались без обращения к серверу.


>И как получить доступ к любому полю НД в кэше программно???

DataSet.FieldByName('SomeField').Value, .NewValue, .OldValue.
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135428
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да нет, всё прописанно в таблице:
CREATE TABLE NORMA (
COD VARCHAR (12) character set WIN1251 NOT NULL collate WIN1251,
ART VARCHAR (30) character set WIN1251 NOT NULL collate WIN1251,
DIZ VARCHAR (30) character set WIN1251 collate WIN1251,
COL VARCHAR (30) character set WIN1251 NOT NULL collate WIN1251,
NAMEPR VARCHAR (30) character set WIN1251 NOT NULL collate WIN1251,
COLPR VARCHAR (30) character set WIN1251 NOT NULL collate WIN1251,
NORM NUMERIC (15, 5) NOT NULL,
COFPR NUMERIC (15, 2),
CFAKTPR NUMERIC (15, 2),
SEBOF COMPUTED BY (norm*cofpr),
SEBFAKT COMPUTED BY (norm*cfaktpr));
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135439
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Да нет, всё прописанно в таблице:

Ну а откедова DataSet то знает, что у тебя в таблице поле вычисляемое. Делай вычисляемые поля в DataSet, вычисляй их на OnCalcFields, а те поля, которые в таблице вычисляемые можешь вообще на клиента не тянуть. Пусть они в базе при сохранении изменений пересчитываются.
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135450
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DM.IBDSNorma.Insert;

Присваиваю norm и cofpr значения, proba - вычисляемое поле, созданное в DataSet!!!

procedure TDM.IBDSNormaCalcFields(DataSet: TDataSet);
begin
with DM.IBDSNorma do
begin
FieldByName('proba').Value:=FieldByName('norm').Value*FieldByName('cofpr').Value;
end;
end;

Если это правильно - то всё равно не работает!!!!!!!!
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135468
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну во-первых

Код: plaintext
1.
2.
3.
4.
5.
procedure TDM.IBDSNormaCalcFields(DataSet: TDataSet); 
begin 
  with DataSet do begin 
    FieldByName('proba').Value:=FieldByName('norm').Value*FieldByName('cofpr').Value; 
  end; 
end; 


Глянь, у тебя AutoCalcFields для DataSet True? А DM.IBDSNorma.Post сделать.
...
Рейтинг: 0 / 0
Кэшированные изменения
    #32135485
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сенкс, получилось всё
Как мне проверить в кэшированных, ещё не подтверждённых изменениях, единственность записи???
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кэшированные изменения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]