Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
6-24154
ss18
2002-05-27 23:30
2002.08.08
Как написать КлиентСокет на АПИ?


3-23904
Galinka
2002-07-17 10:09
2002.08.08
Снова вопрос к мастерам. Нужна идея.


1-24103
URustam
2002-07-26 13:44
2002.08.08
Помогите!


1-24014
eruc
2002-07-28 19:50
2002.08.08
---|Ветка была без названия|---


1-24058
Dmk
2002-07-24 00:27
2002.08.08
Disable Form DC





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский