powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ну и наконец:)
10 сообщений из 10, страница 1 из 1
Ну и наконец:)
    #32340814
Grauhch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще есть проблемка, которая на данный момент последняя.
Есть 2 таблицы. Р и В . связаны один ко многим. В таблице Р - надо сделать вычисляемое поле, которое считает сумму в поле таблицы В
Если я добавляю в Р обработчик OnCalcFields и поле ставлю fkCalculated то в форме все считается. А в таблицу эти данные не заносятся. Post не вставляет потому что таблица не в Edit, а если добавляешь Edit, то код каким то образом заци кливается и выдает ошибку о занятости таблицы. Если полю присвоить fkInternalCalc то вообще ничего не происходит. Где грабли?
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32340838
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalcField не имеет ссылки на физическое поле в таблице
и формируется только на клиенте
если нужно значение суммы писать в поле ведущей таблицы
то лучше это сделать на тригерах изменения и вставки полей ведомой таблицы
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32340848
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что sql мы не любим?
Код: plaintext
1.
2.
3.
4.
      select 
       p.id,
        (select sum(b.sum) from b where b.p=p.id) SUMMA
      from p

Viman
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32340864
Grauhch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА что sql мы не любим?

Отчего же. Но так мы только получаем сумму. А записать? Я думал что CalcField работает с таблицей, но в хелпе про это довольно путанно, поэтому и обратился...
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32340902
Grauhch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusRто лучше это сделать на тригерах изменения и вставки полей ведомой таблицы
У меня локальная БД, на OnExit из поля где у меня сумма вычеслена пишу:
Ramka.AutoCalcFields:=false;
Ramka.Edit;
Ramka.Fields[3].asInteger:=StrToInt(DBEdit6.Text);
Ramka.Post;
Ramka.AutoCalcFields:=true;

Собственно - никаких изменений, АвтоКалк отключаю, однако эта процедура вызывается на Edit и Post. Надо воздухом подышать.
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32341496
Victor G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вычисляемое поле оттого так и называется, что оно "вычисляется" при обращении к нему, а не хранится в базе. не используй просто этот тип поля. вычисляй сумму при изменении параметров, в нее входящих и пости по переходу на другую запись
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32341518
Grauhch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел фигню. Вычисляемым у меня забито реальное поле. Если сохраняю в другое (соседнее - все Ок). Придется еще одно поле в таблицу вписывать?
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32342113
Victor G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем оно тебе нужно? если только для того, чтобы пользователь видел какую-то сумму, то не записывай в таблицу вообще. какую СУБД используешь? MS SQL Server позволяет задать вычисляемое поле на уровне таблицы и обращаться к нему как к обычному. только без возможности записать туда что-нибудь
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32342145
Grauhch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Виктор.
База ацессовская. Но я уже это сделал. Дело в том что эта мастер таблица я вляется детайл другой таблицы. Как таковая для БД она не нужна. Но было высказано желание иметь на виду (всегда) обобщенные данные (сумма чисел, доминант) не только при просмотре в форме, но и вообще. :) Главное чтоб были.

Не могу только понять логику.
Странно отображаются записи в CtrlGridе - 2 одинаковые строки внизу. Начинаешь что-нибудь делать - исчезает и все становится на места. Откуда этот глюк?
...
Рейтинг: 0 / 0
Ну и наконец:)
    #32342173
Victor G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логика примерно такая - переложить вычисление какой-то формулы на плечи движка базы данных с хрупких плеч программиста. ты не обновляешь это поле, записывая туда значение, при изменении значения каждого поля, входящего в формулу вычисления. при этом физически в поле не хранится это значение. как сказал LexusR, значение вычисляется на клиенте.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ну и наконец:)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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