Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2012, 19:45   #1
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос update Table1 set X=X+1 - как?

Здравствуйте!
Подскажите, как в SQL коде (без ХП) передаваемом из программы написать код который будет к текущему значению добавлять новое значение?
Например: а) [update Table1 set X=X+1] б) [update Table1 set StringX=StringX||'text']
DeveloPerchik вне форума Ответить с цитированием
Старый 31.07.2012, 20:02   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ну собственно
Код:
UPDATE tablica SET Pole1=Pole1+:par1, Pole2=Pole2||' '||:par2;
или я не понял вопроса?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 31.07.2012 в 20:06.
Yurk@ вне форума Ответить с цитированием
Старый 31.07.2012, 20:26   #3
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Из Delphi XE через FIBDataset.UpdateSQL не пашет - то ошибка, то ничего не присваивает.
DeveloPerchik вне форума Ответить с цитированием
Старый 31.07.2012, 20:34   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а ошибку угадывать?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 31.07.2012, 20:41   #5
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Хз что ещё добавить. Пробую подряд 2 варианта:
1. [update Table1 set StringX='text'] - работает
2. [update Table1 set StringX=StringX||'text'] - не работает, поле StringX пусто
DeveloPerchik вне форума Ответить с цитированием
Старый 31.07.2012, 20:48   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

1. commit делаешь?
2. какая ошибка?
3. какие типы полей?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 31.07.2012 в 20:51.
Yurk@ вне форума Ответить с цитированием
Старый 31.07.2012, 20:51   #7
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

1. Один и тот же Dataset, если работает первый вариант, значит commit делается.
2. Уже не помню - менял код уже раз 100. Сейчас никаких ошибок. Просто поле StringX пустое.
3. Varchar

Firebird 2.5, FIB 7.0.15.

Последний раз редактировалось DeveloPerchik; 31.07.2012 в 21:12.
DeveloPerchik вне форума Ответить с цитированием
Старый 31.07.2012, 21:39   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

если изначально твое StringX = null, то конкатенация "||" не прокатит - она вернет тот же null
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 31.07.2012 в 21:43.
Yurk@ вне форума Ответить с цитированием
Старый 31.07.2012, 23:32   #9
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Спасибо. Не ожидал такой тупизны. Всё же ||=+ но никак не *, а ведь только умножение на 0 надёт 0, но 0+число=число... нде.
Как же можно решить эту проблему в одну строку update'а?
DeveloPerchik вне форума Ответить с цитированием
Старый 31.07.2012, 23:49   #10
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

null - это не ноль...

самое простое, на мой взгляд, задать какое-нибудь значение по умолчанию... 0 или еще что либо...
или же проверять значение поля, что бы он не было null
maLoy*508 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
dbcombobox1 и table1 kuzmich БД в Delphi 3 02.05.2012 13:12
Как правильно написать запрос UPDATE. severm C# (си шарп) 6 25.07.2011 13:54
Как вытянуть с DLE $tpl->set makar3000 PHP 2 02.07.2011 18:50
table1.DatabaseName не видит Alekcey БД в Delphi 4 20.07.2010 16:13
как переместить курсор DBGrid1 / Table1 1900s БД в Delphi 3 28.05.2008 17:49