Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизВ Grid обсчёт двух полей и более. Найти похожие ветки
← →
Павел (2004-09-02 10:08) [0]Хочу в Гриде выполнить обыкновенную операцию по редактированию поля, чтобы в этот момент пересчитывались другие поля
Пишу код
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var tup1,tup2: integer;
begin
if dbgrid1.SelectedField.FieldName="posl_god" then
begin
tup1:=Query2.FieldByName("posl_god").asinteger;
tup2:=Query2.FieldByName("sled_god").asinteger;
tup1:=tup1+tup2;
Query2.FieldByName("posl_god").asinteger:=tup1;
end
end;
Выдаёт ошибку.
Dataset not in edit or insert mode
В чём тут дело ?
← →
Алхимик © (2004-09-02 10:19) [1]В том, что набор данных не находится в режиме редактирования.
← →
Rule © (2004-09-02 10:30) [2]Координально неправильный подход, зачем в базе хранить избыточные данные, в данном случае данные которые можно подсчитать на основе других полей, а в общем непонятен смысл данного подхода, объясни что ты хочешь сделать ?
← →
Павел (2004-09-02 10:33) [3]хочу в момент редактирования одного поля, чтобы вёлся обсчёт других полей, именно этой строки...
типа
поле1 = поле 2 + поле3
но чтоб именно при вводе данных это происходило т.е. в моменнт обращения к конкретному полю.
← →
Rule © (2004-09-02 10:40) [4]тогда тебе надо сделать CalculatedField и в обработчике событий твоего тейбла или квери OnCalculate написать такой вот код
Table1.fieldByName("Field1").asInteger:=Table1.fieldByName("Field2").asInteger+Table1.fieldByName("Field3").asInteger;
соответсвенно посту 3, и тогда у тебя будет поле, которое будет автоматически считаться и хранить его в базе не надо и изменить нельзя (так как тогда изменится смысл его сущности, тоесть то что он является суммой) и всегда будет тебе показывать правильную сумму и не надо будет заботится о его правильности и ломать голову когда его менять надо в одном гриде или в другом или ещё где ...
← →
Павел (2004-09-02 10:46) [5]так мне в том то и дело надо, чтобы всё-таки, хранилось значение в поле БД, после обсчёта
← →
Ega23 © (2004-09-02 10:47) [6]Павел (02.09.04 10:46) [5]
ЗАЧЕМ????? Если у тебя есть 2 поля в базе, то третье ты ВСЕГДА сможешь вычислить!
← →
Павел (2004-09-02 11:24) [7]мне третье поле нужно для того, чтобы потом вести выборку по нём в другой задаче.
← →
Sergey13 © (2004-09-02 11:26) [8]2[7] Павел (02.09.04 11:24)
И ты правда пишешь для MS SQL?
← →
Алхимик © (2004-09-02 11:29) [9]
> [7] Павел (02.09.04 11:24)
> мне третье поле нужно для того, чтобы потом вести выборку
> по нём в другой задаче.
А кто в другой задаче мешает вычислить это поле?
← →
Павел (2004-09-02 11:31) [10]да...
пишу для MS SQL
Не пойму только какая проблема вычислить сумму/произведение и т.д. нескольких полей в момент редактирования определённого поля и занесения значения в другое поле. Мне нужно чтобы хранилось там значение.
← →
Sergey13 © (2004-09-02 11:36) [11]2[10] Павел (02.09.04 11:31)
>Не пойму только какая проблема
Проблем нет. Надо.
1.Подумать стОит ли? (все таки)
2.Выбрать правильное событие
3.Правильно написать.
Если с 1 ты упорствуешь, то сделай правильно 2 и 3.
2.БифоПост
3.Едит добавь
← →
Rule © (2004-09-02 11:44) [12]Сразу говорю, это неправильно координально, ты не понимаешь сути, зачем хранить избыточную информацию, если третье поле несет в себе смысл суммы первого и второго и существует визически, то еслия я залезу и руками подправлю там значение то все завалится, значение не будет соответствовать истине, бред получается а при построении запроса всегда можно в самом запросе и подсчтитать сумму и разность и произвденеи и среднее значени и все что тебе надо,
не упорствуй я тебе говорю а лучше почитай про принципы организации БД, про самые основы, иначе потом столко подводных камне будет что караул, а ты даже не будешь понимать в чем же ты виноват
← →
-SeM- (2004-09-02 12:02) [13]А в MSSQL calculated поля есть?
Если есть и очень хочется можно через них.
← →
Rule © (2004-09-02 12:14) [14]Интересный факт, тема звучит вот так
В Grid обсчёт двух полей и более
сразу поправка, GRID служит тольео для визуализации, внем счиать ничего не надо .. считать надо в датасете
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c