Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.05 c
14-1095082180
menart
2004-09-13 17:29
2004.10.03
VDSL


1-1095234959
ser
2004-09-15 11:55
2004.10.03
Конвертер проектов Delphi в Borland - dpk2bpk


4-1093609697
Леван
2004-08-27 16:28
2004.10.03
Как поменять Regional settings


3-1094291650
jiny
2004-09-04 13:54
2004.10.03
Вопрос по триггерам


9-1086474625
RyDmi
2004-06-06 02:30
2004.10.03
Работа с видеокартой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский