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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2016, 17:16   #1
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию [РЕШЕНО]: Где ошибка в запросе?

И так
ADOQuery2.SQL.Text:='Select * From SprRabot Where SprRabot.Rabota='+SRabota;
и так
ADOQuery2.SQL.Add('Select * From SprRabot Where SprRabot.Rabota='+SRabota);
выбивается одинаковая ошибка синтаксиса: пропущен оператор в выражении запроса? Что здесь не так?

Решение:
http://www.programmersforum.ru/showp...1&postcount=15

Последний раз редактировалось Вадим Мошев; 15.05.2018 в 18:06.
edsjeka вне форума Ответить с цитированием
Старый 27.01.2016, 17:24   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
ADOQuery2.SQL.Add('Select * From SprRabot Where Rabota='''+SRabota+'''');
Iron Monk вне форума Ответить с цитированием
Старый 27.01.2016, 17:25   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Rabota символьное поле? Тогда значение переменной SRabota нужно закавычить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.01.2016, 17:27   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

попробуйте выполнить любой из ниже приведенных запросов и сравните результаты со своими.
Цитата:
выбивается одинаковая ошибка синтаксиса: пропущен оператор в выражении запроса? Что здесь не так?
select * from sprRabot where sprRabot.rabota =
select * from sprRabot where sprRabot.Rabota =уборка мусора

QuotedStr(....)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.01.2016, 17:37   #5
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:
ADOQuery2.SQL.Add('Select * From SprRabot Where Rabota='''+SRabota+'''');
Спасибо, именно так работает.

Еще одна ошибка вылетает когда пытаюсь добавить записи в БД:

ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, IDkart, IDRab)');

вернее уже после этого, когда делается:

ADOQuery1.Active:=true;

Выдается ошибка, что переменные IDkart и IDrab не имеют значения по умолчанию.

Вот мой код
Код:
procedure TFMRabotaLazKartridgi.DBGrid1ColExit(Sender: TObject);
 var I,IDrab:integer;
     SRabota: string;
begin
if DBGrid1.SelectedField.FieldName='Raboti'
    then
       begin

          Memo1.Clear;   
             ADOQuery1.Active:=false;                                             // отключение таблицы Cartridg_Raboti
          for I:= 0 to CheckListBox1.Items.Count - 1 do                     // цикл по CheckListBox1
         begin
          if CheckListBox1.Checked[i] then                                       // если работа отмечена, то
             begin
               SRabota:=CheckListBox1.Items[i];                               // SRabota присваивается текстовое значение работы из CheckListBox1
               ADOQuery2.Active:=false;                                          // отключает запрос из SprRabot
               ADOQuery2.SQL.Clear;                                              // обнуляется запрос
               ADOQuery2.SQL.Add('Select * From SprRabot Where Rabota='''+SRabota+'''');                              //выбор из справочника работ, такого значения, которое соответствует SRabota, т.е. которое выбрано в CheckListBox1
               ADOQuery2.Active:=true;                                                      //активируется запрос для вывода записи соответствующей значению работы из CheckListBox1
              IDrab:=ADOQuery2.FieldValues['IDRabot'];                                      // IDrab присваивается значение ID работ выбранного из справочника работ
              Memo1.Lines.Add(CheckListBox1.Items[i]);
              ADOQuery1.SQL.Clear;                                                             //обнуление запроса по Cartridg_Raboti
              ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, IDkart, IDRab)');       // вставка в промежуточную таблицу значения ID картриджа и ID работы

             end;
         end;
       CheckListBox1.Visible:=false;                                                 // скрытие CheckListBox1
       ADOQuery1.Active:=true;                                                       // активация запроса из Cartridg_Raboti для просмотра в предпросмотровой dbgrid
       end;
end;

Последний раз редактировалось Вадим Мошев; 30.01.2016 в 15:52.
edsjeka вне форума Ответить с цитированием
Старый 27.01.2016, 20:52   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, '+IDkart+','+ IDRab+')');
И далее - ADOQuery1.ExecSQL;

Последний раз редактировалось Iron Monk; 27.01.2016 в 20:58.
Iron Monk вне форума Ответить с цитированием
Старый 27.01.2016, 21:14   #7
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:
ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, '+IDkart+','+ IDRab+')');
И далее - ADOQuery1.ExecSQL;
Получается несовпадение типов IDkart типа int и поле типа int, а когда IDkart в одинарных кавычках, получается несовпадение string и int.


А что означают плюсы после и перед кавычками?

Последний раз редактировалось edsjeka; 27.01.2016 в 21:17.
edsjeka вне форума Ответить с цитированием
Старый 27.01.2016, 21:17   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:
ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, '+IDkart+','+ IDRab+')');
И далее - ADOQuery1.ExecSQL;
что то мне подсказывает что нечего не выйдет...
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 27.01.2016 в 21:20.
Dvoishnik вне форума Ответить с цитированием
Старый 27.01.2016, 21:18   #9
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
что то мне подсказывает что нечего не выйдет...
В смысле, я такой безнадежный?
edsjeka вне форума Ответить с цитированием
Старый 27.01.2016, 21:22   #10
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Вам не совсем правильно подсказали
Код:
ADOQuery1.SQL.Add('Insert Into Cartridg_Raboti Values (0, '+IntToStr(IDkart)+','+ IntToStr(IDRab)+')');
а плюсы обозначают.. не поверите сложение!
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: отправка сообшения по локалной сети. Ошибка PChar alman12 Общие вопросы Delphi 3 09.09.2015 20:25
[РЕШЕНО]: Turbo Pascal. Ошибка 36: Begin expected. qoTIuHr Паскаль, Turbo Pascal, PascalABC.NET 7 24.07.2015 01:10
Где ошибка в sql-запросе? rebel91 БД в Delphi 7 07.05.2014 09:19
Не понимаю где увидеть то, что передается в Post запросе TBrowser'ом KentOne Работа с сетью в Delphi 0 03.08.2010 18:48
Где ошибка в запросе? Bendebej SQL, базы данных 1 03.02.2010 17:09