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

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

Вопрос к мастерам: как обновить поле используя свою функцию. [D5]


BS ©   (2002-07-18 10:47:00) 

Задача: нужно создать запрос например
Update ExampleTable set ExampleTable.ExampleField=myfunction(ExampleTable.ForExamplefield);
не знаю все ли правильно написал в инструкции SQL, может , что забыл, короче дело вот в чем.

Дело в том что нужно обновить определенное поле используя значение которое возвращает - определенная мной функция аргументом которой является значение другого поля этой таблицы.
Если можно это сделать через параметры, то подскажите как, а то я недавно начал с Делпфи.


AngeL B.   (2002-07-18 13:13:00) [1]


> Johnmen © (18.07.02 13:10)


> Это только если вычисляется в приложении.

Ну так он и просит в приложении. Хотя, да, я уже сгенерил в голове ситуацию, когда вычислимое поле не подойдет ни на стороне сервера ни на стороне клиента.


Johnmen   (2002-07-18 13:10:00) [2]

>AngeL B. (18.07.02 12:59)
>1) нарушение нормальной формы

Допустимо нарушать правила нормализации, если это приводит к приятным положительным эффектам...:)

>2) излишний сетевой трафик (для сетевых приложений)

Излишки могут быть весьма незначительны...

>3) потенциальные ошибки по поводу "ой забыли перерасчитать"

Это только если вычисляется в приложении.

Ж:-)




AngeL B.   (2002-07-18 12:59:00) [3]


> Val © (18.07.02 12:40)

Если поле храниться в таблице и зависит от поля этой же таблицы, то:
1) нарушение нормальной формы
2) излишний сетевой трафик (для сетевых приложений)
3) потенциальные ошибки по поводу "ой забыли перерасчитать"
Есть конечно исключения, но редки, редки они...


Val   (2002-07-18 12:40:00) [4]

>AngeL B. (18.07.02 12:18)
Если поле результат хранится в базе, то я бы сказал, что оно излишне
спорный вопрос, на больших объемах лучше иметь вычисляемое поле в базе, чем пересчитывать его постоянно для отображения и т.д. И неизвестно из постановки вопроса, выполняет ли автор такой апдейт постоянно или в каких-то случаях, т.е. вычисляемое поле в приложении может и не сгодиться.


AngeL B.   (2002-07-18 12:18:00) [5]

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


BS   (2002-07-18 11:39:00) [6]

Не совсем то, что нужно но все равно спасибо


Val   (2002-07-18 11:36:00) [7]

Не знаю, это ли вам нужно:

MyTable.Open;
MyTable.First;
while not MyTable.EOF do
begin
MyTable.MyField.AsInteger:=MyFunction(MyTable.MySecondField.AsInteger);
MyTable.Next;
end;


BS   (2002-07-18 11:23:00) [8]

В данном случае это Access. но ведь не будешь же теперь писать код в Access, можно ли сделать это через параметры в Делпфи.


Val   (2002-07-18 11:02:00) [9]

а вот как Delphi.
Delphi не СУБД.
С какой СУБД работаете?


BS   (2002-07-18 10:58:00) [10]

Да для каждой записи указанной в запросе , т.е. фукция устанавливает значение поля в зависимости от другого значения поля, в Accesse с этим проблем нет там и оболочка и база в одном файле, а вот как Delphi.


Val   (2002-07-18 10:51:00) [11]

Нужно уточнить,данный апдейт должен пройти для каждой записи и аргумент для функции тоже берется из этой, текущей записи?


Наверх

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