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

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

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


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

DataSet.FieldByName('SomeField').Value, .NewValue, .OldValue.
...
Рейтинг: 0 / 0
08.04.2003, 10:42
    #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
08.04.2003, 10:48
    #32135439
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэшированные изменения
>Да нет, всё прописанно в таблице:

Ну а откедова DataSet то знает, что у тебя в таблице поле вычисляемое. Делай вычисляемые поля в DataSet, вычисляй их на OnCalcFields, а те поля, которые в таблице вычисляемые можешь вообще на клиента не тянуть. Пусть они в базе при сохранении изменений пересчитываются.
...
Рейтинг: 0 / 0
08.04.2003, 10:54
    #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
08.04.2003, 11:04
    #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
08.04.2003, 11:13
    #32135485
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэшированные изменения
Сенкс, получилось всё
Как мне проверить в кэшированных, ещё не подтверждённых изменениях, единственность записи???
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кэшированные изменения / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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