Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В 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]

В том, что набор данных не находитсяв режиме редактирования.


Наверх

Титульная страница Поиск, карта сайта Написать письмо