Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Проблема с вычисляемым полем


Автор: brusel 29.11.2012, 16:34
Здраствуйте. Есть DBGridEh с полями А и Б.
Поле Б вычисляемое, должно считатся так: Б=А/Сумма(всех А)

Пробовал так выдает ошибку.

Код

procedure TVagaCalcFields(DataSet: TDataSet);
begin
TVagaB.Value:=TVagaА.Value/StrtoFloat(FVaga.DBGridEh1.Columns[1].Footers[0].SumValue);
end;


Автор: superVad 29.11.2012, 17:41
brusel, какую ошибку выдает? Не пробовал это все сделать прямо в запросе?

Автор: Akella 29.11.2012, 17:45
###!!!
Раньше программистов учились программировать, а сейчас хотя бы научиться поиском пользоваться и правильно вопросы задавать.

Добавлено через 33 секунды
brusel, тебя прямая дорога в проект Битва экстрасенсов. Там такие вопросы задавай.

Автор: DYUMON 30.11.2012, 10:09
Вообще данный метод извращение. Какая субд? Если нормальная то сделай тригер, который будет обновлять значение б суммой всех а .

Автор: brusel 2.12.2012, 09:23
Цитата(DYUMON @ 30.11.2012,  10:09)
 Какая субд? Если нормальная то сделай тригер, который будет обновлять значение б суммой всех а .

MS Access/ADO

Пример подскажите.

Автор: Akella 2.12.2012, 16:45
Сомневаюсь, что Access поддерживает триггеры. В любом случае есть F1

Автор: brusel 2.12.2012, 17:37
Попробую упростить вопрос. 
Как вывести в DBGrid вычисляемое поле, чтобы считало так: Б=А/Сумма(всех А)
В CalcFields не подходит, приводит к ошибке Access Violation. Я так понял Обращение к не созданному объекту.

Автор: Akella 2.12.2012, 19:25
Ты примеры смотрел хоть?

Добавлено через 1 минуту и 2 секунды
В интернете их вагон и маленькая тележка!
Справку почитай, как первоисточник.
Уверен, что в примерах, поставляемых с дельфи, инфа тоже есть.

Добавлено через 1 минуту и 30 секунд
Т.е. ты хочешь, чтобы мы здесь за тебя всё это сделал и тебе дали готовую программу?

Добавлено через 4 минуты и 50 секунд
Подсказка 1. В гриде данных НЕТ. Грид их только отображает.
Подсказка 2. Работай с НД - TDataSet.

Добавлено через 5 минут и 6 секунд
НД - Набор данных - DataSet;

Автор: brusel 3.12.2012, 17:57
Цитата(Akella @  2.12.2012,  19:25 Найти цитируемый пост)
Ты примеры смотрел хоть?

Смотрел
Цитата(Akella @  2.12.2012,  19:25 Найти цитируемый пост)
В интернете их вагон и маленькая тележка!

Там вагон тупых советов как умножить или сложить два числа.
Цитата(Akella @  2.12.2012,  19:25 Найти цитируемый пост)
Т.е. ты хочешь, чтобы мы здесь за тебя всё это сделал и тебе дали готовую программу?

Если не хочешь подсказать в решении проблеммы, то нечего тут умничать что ты тут самый умный, а все остальные дураки.
Код

procedure TDM.TVagaCalcFields(DataSet: TDataSet);
var
i:integer;
begin
dm.QuerySum.Open;
i:= dm.QuerySum.Fields[0].AsInteger;  //заносим  сумму в переменную i
dm.QuerySum.Close;
dm.TVagaZ_posl.Value:=dm.TVagaKol.Value*dm.TVagaKol_god.Value;
dm.TVagaPyt_vag.Value:=RoundEx((dm.TVagaKol.Value/i),100);
end;

Вот, не то что хотел, но оно работает.


Автор: DYUMON 4.12.2012, 06:45
нормальный пример если там по другому не извратится

Автор: Akella 4.12.2012, 10:25
Цитата(brusel @  3.12.2012,  17:57 Найти цитируемый пост)
Там вагон тупых советов как умножить или сложить два числа.


А тебе что нужно?
Какие-то сложные вычисления?
Сомневаюсь, что в вычисляемых полях нужно что-то сложное вычислять. Будет тормозить.

Добавлено через 1 минуту и 2 секунды
Цитата(brusel @  3.12.2012,  17:57 Найти цитируемый пост)
Если не хочешь подсказать в решении проблеммы, то нечего тут умничать

Если не можешь читать, то  нечего так возмомущаться. Попробуй заново smile

Автор: brusel 4.12.2012, 12:07
Вопрос решен, тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)