![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос к мастерам: как обновить поле используя свою функцию. [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]Нужно уточнить,данный апдейт должен пройти для каждой записи и аргумент для функции тоже берется из этой, текущей записи?