![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В Grid обсчёт двух полей и более. [D5, MSSQL]
Павел © (2004-09-02 10:08:00)Хочу в Гриде выполнить обыкновенную операцию по редактированию поля, чтобы в этот момент пересчитывались другие поля
Пишу код
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
В чём тут дело ?
Rule (2004-09-02 12:14:00) [1]Интересный факт, тема звучит вот так
В Grid обсчёт двух полей и более
сразу поправка, GRID служит тольео для визуализации, внем счиать ничего не надо .. считать надо в датасете
-SeM- (2004-09-02 12:02:00) [2]А в MSSQL calculated поля есть?
Если есть и очень хочется можно через них.
Rule (2004-09-02 11:44:00) [3]Сразу говорю, это неправильно координально, ты не понимаешь сути, зачем хранить избыточную информацию, если третье поле несет в себе смысл суммы первого и второго и существует визически, то еслия я залезу и руками подправлю там значение то все завалится, значение не будет соответствовать истине, бред получается а при построении запроса всегда можно в самом запросе и подсчтитать сумму и разность и произвденеи и среднее значени и все что тебе надо,
не упорствуй я тебе говорю а лучше почитай про принципы организации БД, про самые основы, иначе потом столко подводных камне будет что караул, а ты даже не будешь понимать в чем же ты виноват
Sergey13 (2004-09-02 11:36:00) [4]2[10] Павел (02.09.04 11:31)
>Не пойму только какая проблема
Проблем нет. Надо.
1.Подумать стОит ли? (все таки)
2.Выбрать правильное событие
3.Правильно написать.
Если с 1 ты упорствуешь, то сделай правильно 2 и 3.
2.БифоПост
3.Едит добавь
Павел (2004-09-02 11:31:00) [5]да...
пишу для MS SQL
Не пойму только какая проблема вычислить сумму/произведение и т.д. нескольких полей в момент редактирования определённого поля и занесения значения в другое поле. Мне нужно чтобы хранилось там значение.
Алхимик (2004-09-02 11:29:00) [6]
> [7] Павел (02.09.04 11:24)
> мне третье поле нужно для того, чтобы потом вести выборку
> по нём в другой задаче.
А кто в другой задаче мешает вычислить это поле?
Sergey13 (2004-09-02 11:26:00) [7]2[7] Павел (02.09.04 11:24)
И ты правда пишешь для MS SQL?
Павел (2004-09-02 11:24:00) [8]мне третье поле нужно для того, чтобы потом вести выборку по нём в другой задаче.
Ega23 (2004-09-02 10:47:00) [9]Павел (02.09.04 10:46) [5]
ЗАЧЕМ????? Если у тебя есть 2 поля в базе, то третье ты ВСЕГДА сможешь вычислить!
Павел (2004-09-02 10:46:00) [10]так мне в том то и дело надо, чтобы всё-таки, хранилось значение в поле БД, после обсчёта
Rule (2004-09-02 10:40:00) [11]тогда тебе надо сделать CalculatedField и в обработчике событий твоего тейбла или квери OnCalculate написать такой вот код
Table1.fieldByName('Field1').asInteger:=Table1.fieldByName('Field2').asInteger+Table1.fieldByName('Field3').asInteger;
соответсвенно посту 3, и тогда у тебя будет поле, которое будет автоматически считаться и хранить его в базе не надо и изменить нельзя (так как тогда изменится смысл его сущности, тоесть то что он является суммой) и всегда будет тебе показывать правильную сумму и не надо будет заботится о его правильности и ломать голову когда его менять надо в одном гриде или в другом или ещё где ...
Павел (2004-09-02 10:33:00) [12]хочу в момент редактирования одного поля, чтобы вёлся обсчёт других полей, именно этой строки...
типа
поле1 = поле 2 + поле3
но чтоб именно при вводе данных это происходило т.е. в моменнт обращения к конкретному полю.
Rule (2004-09-02 10:30:00) [13]Координально неправильный подход, зачем в базе хранить избыточные данные, в данном случае данные которые можно подсчитать на основе других полей, а в общем непонятен смысл данного подхода, объясни что ты хочешь сделать ?
Алхимик (2004-09-02 10:19:00) [14]В том, что набор данных не находитсяв режиме редактирования.