Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Вопрос к мастерам: как обновить поле используя свою функцию.   Найти похожие ветки 

 
BS   (2002-07-18 10:47) [0]

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

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


 
Val ©   (2002-07-18 10:51) [1]

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


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

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


 
Val ©   (2002-07-18 11:02) [3]

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


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

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


 
Val ©   (2002-07-18 11:36) [5]

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

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:39) [6]

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


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

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


 
Val ©   (2002-07-18 12:40) [8]

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


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


> Val © (18.07.02 12:40)

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


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

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

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

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

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

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

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

Ж:-)





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


> Johnmen © (18.07.02 13:10)


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-24049
newUser
2002-07-25 13:26
2002.08.08
Lockfile


3-23911
Evgeny7
2002-07-16 13:48
2002.08.08
Объединение несколькихбаз в одну


14-24192
Igorek
2002-07-12 17:17
2002.08.08
Стереть информацию с HDD без возможности восстановления


1-24071
lpp
2002-07-26 12:25
2002.08.08
InstallShield Express for Delphi 5


4-24282
IIS
2002-05-31 11:35
2002.08.08
Как програмно раздавать права на реестр?