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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 15:18   #1
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию Математические операции между таблицей ADO и Edit

Здравствуйте, у меня такой вопрос.
Есть таблица базы Access, которая подключена через ADO и выводится в DBGrid. Таблица содержит поля: Наименование (строка), Цена (число), Остаток (число).
Условимся, что в таблице всего одна строка.
Также есть произвольный Edit на форме.
Что мне нужно? Мне нужно, чтобы по нажатию кнопки, от значения поля "Остаток" в таблице отнималось значение поля Edit.
Расчитываю на вашу помощь, большое спасибо.
stevieg вне форума Ответить с цитированием
Старый 22.11.2012, 15:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вычислимое должно сохраняться в БД, или просто меняться в гриде на экране для анализа?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2012, 15:30   #3
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вычислимое должно сохраняться в БД, или просто меняться в гриде на экране для анализа?
Должно сохраняться в бд.
stevieg вне форума Ответить с цитированием
Старый 22.11.2012, 15:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда читай про запрос UPDATE:
Код:
ADO.SQL.Text:="UPDATE тaблица SET Остаток = Остаток - '+Edit.Text;
ADO.exec;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2012, 15:44   #5
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда читай про запрос UPDATE:
Код:
ADO.SQL.Text:="UPDATE тaблица SET Остаток = Остаток - '+Edit.Text;
ADO.exec;
Спасибо. Скажите, а если просто в гриде меня инфу визуально, то как это сделать?
stevieg вне форума Ответить с цитированием
Старый 22.11.2012, 16:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если у тебя ADОTable то примерно так:
Код:
adotable.fieldbyname('Остаток').AsFloat:=adotable.fieldbyname('Остаток').AsFloat-StrToFloatDEF(Edit.Text,0);
В надежде на то что поле это вещественнее некуда.
Этот код скорректирует текущую запись.
Если ADOQuery... Лучше забудь про редактирование в гриде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2012, 16:56   #7
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если у тебя ADОTable то примерно так:
Код:
adotable.fieldbyname('Остаток').AsFloat:=adotable.fieldbyname('Остаток').AsFloat-StrToFloatDEF(Edit.Text,0);
В надежде на то что поле это вещественнее некуда.
Этот код скорректирует текущую запись.
Если ADOQuery... Лучше забудь про редактирование в гриде.
Понял, уже впринципе получилось реализовать через update. За это спасибо.
Еще скажите пожалуйста, как доработать запрос этот, если записей в таблице заполнено ни одна, а несколько? Как задать условие, какую именно строку редактировать?
stevieg вне форума Ответить с цитированием
Старый 22.11.2012, 17:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В UPDATE есть правило WHERE. Читай про SQL-UPDATE.
Там в том правиле и задаются все условия редактирования.
А вот уже сами условия зависят от многого. В частности от структуры твоей базы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2012, 17:47   #9
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Вроде как, что-то вышло:
Код:
Form_DB.ADOQuery1.SQL.Text:='UPDATE Materials SET Остаток = Остаток -' +Edit6.Text+ 'WHERE Наименование = ' +Edit5.Text;
Form_DB.ADOQuery1.ExecSQL;
Прога запускается, но выдает ошибку:
Ошибка синтаксиса (пропущен оператор) в выражении запроса.
Где что пропустил, скажите пожалуйста?
stevieg вне форума Ответить с цитированием
Старый 22.11.2012, 18:07   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Перед Where нужен пробел
И нужно QuotedStr(Edit5.Text) потому что Наименование - строка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математические операции с обобщенными типами anlu C# (си шарп) 4 14.03.2012 14:02
Математические операции с шестнадцатиричными числами. Как? prw07 Паскаль, Turbo Pascal, PascalABC.NET 1 06.09.2010 10:17
FASM. Ввод чисел и математические операции. Lamo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 17.01.2010 20:38
Математические операции Juggernaut Общие вопросы Delphi 6 22.04.2009 10:34
Математические операции Pascal Gonzo Помощь студентам 5 19.03.2009 13:49