Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Суммирование в FoxPro


Автор: MrsPasynkova 26.4.2015, 19:29
Всем доброго времени суток!
Вот такой вопрос:
У меня есть на форме Spinner1, в котором при запуске будет прописано число, и есть текущее значение поля в таблице.
В общем, нужно как-то прописать в коде, чтобы к текущему значению в таблице прибавлялось число из spinner'а.

У меня есть вот это:

UPDATE Login SET account = account + (thisform.Spinner1.Value) ;
WHERE login.login=thisform.combo1.Value;

Что здесь не так? Как сделать, чтобы работало? Помогите, пожалуйста.
Предметная область: интернет-провайдер. login - это логин пользователя. Форма действует так: выбираем логин в комбобоксе, прописываем в спиннере число, и оно прибавляется к балансу пользователя, то есть выполняется пополнение счета. Со связями таблиц всё в порядке.

Автор: vvjvvj 29.5.2015, 10:21
Цитата(MrsPasynkova @ 26.4.2015,  19:29)
Всем доброго времени суток!
Вот такой вопрос:
У меня есть на форме Spinner1, в котором при запуске будет прописано число, и есть текущее значение поля в таблице.
В общем, нужно как-то прописать в коде, чтобы к текущему значению в таблице прибавлялось число из spinner'а.

У меня есть вот это:

UPDATE Login SET account = account + (thisform.Spinner1.Value) ;
WHERE login.login=thisform.combo1.Value;

Что здесь не так? Как сделать, чтобы работало? Помогите, пожалуйста.
Предметная область: интернет-провайдер. login - это логин пользователя. Форма действует так: выбираем логин в комбобоксе, прописываем в спиннере число, и оно прибавляется к балансу пользователя, то есть выполняется пополнение счета. Со связями таблиц всё в порядке.

stor "содержимое таблицы (поле баланс пользователя) to _bal (переменная)
stor thsform.spinner1.value to _bal_spin
_bal= _bal+_bal_spin
repl "содержимое таблицы (поле баланс пользователя) with _bal

типа так.

Автор: Akina 29.5.2015, 10:51
Цитата(MrsPasynkova @  26.4.2015,  20:29 Найти цитируемый пост)
Что здесь не так?

Точка с запятой в первой строке. Убрать.

Код

UPDATE Login 
SET account = account + thisform.Spinner1.Value
WHERE login=thisform.combo1.Value;


Добавлено @ 10:52
Ещё лучше - сначала соберите запрос в текстовую переменную, и посмотрите, что он получился валидным, подстановки выполнены верно, в т.ч. с учётом типов.

Автор: Данкинг 23.7.2015, 01:57
Цитата(Akina @  29.5.2015,  10:51 Найти цитируемый пост)
Точка с запятой в первой строке. Убрать.

Зачем убирать: на фоксе это перенос на другую строку.

Автор: Cashey 19.8.2015, 20:14
Во первых, значение Value имеет текстовый тип, как я понимаю из описания задачи, поле account - числовое. Какой эффект вы ожидаете при сложении чисел и букв?
Во вторых, значение Value имеет пробелы до конца, установленной в свойстве MaxLength, длины строки. Для корректного сравнивания надо обрезать пробелы alltrim(thisform.combo1.Value)

А вообще хорошо бы в таких случаях писать текст ошибки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)