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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 19:23   #11
opv88
Новичок
Джуниор
 
Регистрация: 14.02.2010
Сообщений: 2
По умолчанию

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

Цитата:
Для дат, к примеру, такое не сделаешь.
Что ты говоришь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2012, 06:33   #13
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Спасибо за помощь по предыдущему вопросу. Есть еще один вопрос, он уже не относится конкретно к построению запроса UPDATE, но так как проблема в той же процедуре, решил не создавать новый топик и спросить здесь.
Проблема следующая:
Код:
var
i,n: integer;
begin
n:=stringgrid1.RowCount;
For i:=0 to n do
begin
edit5.text:=stringgrid1.cells[0,i];
{В 0-столбце грида содержатся наименования товаров, которые попадают сюда из таблицы Materials которую мы собственно и обновляем в данной процедуре. Данные в гриде уже содержатся на момент исполнения данного кода.}
edit6.Text:=stringgrid1.cells[1,i];
{В 1-столбце грида содержатся количества, которые задаются произвольно с клавиатуры также до исполнения данного кода. В этом собственно и заключается суть запроса UPDATE, чтобы отнять эти количества от соответствующих количеств в таблице Materials.}
Form_DB.ADOQuery1.Close;
Form_DB.ADOQuery1.Sql.Clear;
Form_DB.ADOQuery1.Sql.Add('select * from Materials');
Form_DB.ADOQuery1.Open;
Form_DB.adoquery1.Filter :=' Наименование Like '+ QuotedStr(edit5.text);
Form_DB.adoquery1.Filtered := true;
Form_DB.ADOQuery1.SQL.Text:='UPDATE Materials SET Остаток = Остаток -' +Edit6.Text+ ' WHERE Наименование = ' +QuotedStr(Edit5.Text);
Form_DB.ADOQuery1.ExecSQL;
end;
Сам запрос работает вроде как, но в цикле нет. То есть если я допустим сделаю так:
Код:
edit5.text:=stringgrid1.cells[0,0];
edit6.text:=stringgrid1.cells[1,0];
..то работать будет..по одной строке..
Нужно, чтобы читался весь грид и запрос UPDATE выполнялся на каждой строке, но цикл почему то не работает.
Ошибка: пропущен оператор в выражении запроса "Остаток -"
Скажите, что не правильно? Заранее спасибо.
stevieg вне форума Ответить с цитированием
Старый 25.11.2012, 09:38   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Form_DB.ADOQuery1.Close;
n:=stringgrid1.RowCount;
For i:=0 to n-1 do
begin
  edit5.text:=stringgrid1.cells[0,i];
  edit6.Text:=stringgrid1.cells[1,i];
  Form_DB.ADOQuery1.SQL.Text:='UPDATE Materials SET Остаток = Остаток -' +Edit6.Text+ ' WHERE Наименование = ' +QuotedStr(Edit5.Text);
  Form_DB.ADOQuery1.ExecSQL;
end;
Цитата:
Ошибка: пропущен оператор в выражении запроса "Остаток -"
Если в Edit6.Text пусто, то и будет такое сообщение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.11.2012 в 09:41.
Аватар вне форума Ответить с цитированием
Старый 25.11.2012, 10:34   #15
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если в Edit6.Text пусто, то и будет такое сообщение
Понимаю, но почему? Я же присваиваю Edit6 значение.
stevieg вне форума Ответить с цитированием
Старый 25.11.2012, 10:45   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Я же присваиваю Edit6 значение
Поставить точку останова и проследить в пошаговой трассировке что присваивается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2012, 10:51   #17
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Поставить точку останова и проследить в пошаговой трассировке что присваивается
Пожалуйста, можно языком для чайников?
stevieg вне форума Ответить с цитированием
Старый 25.11.2012, 13:33   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

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

Простите мне мою некомпетентность. Как я понимаю, отладка осуществляется посредством установки маркеров, да? А Как и где просмотреть результаты отладки?

Последний раз редактировалось stevieg; 26.11.2012 в 15:47.
stevieg вне форума Ответить с цитированием
Старый 26.11.2012, 15:44   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://orencode.info/forum/showthread.php?t=2309
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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