Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

И так
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 в 19:06.
edsjeka вне форума   Ответить с цитированием
Старый 27.01.2016, 18:24   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 479
Репутация: 335
По умолчанию

Код:

ADOQuery2.SQL.Add('Select * From SprRabot Where Rabota='''+SRabota+'''');

Iron Monk вне форума   Ответить с цитированием
Старый 27.01.2016, 18:25   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,941
Репутация: 6285
По умолчанию

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

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

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

Цитата:
Сообщение от 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 в 16:52.
edsjeka вне форума   Ответить с цитированием
Старый 27.01.2016, 21:52   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 479
Репутация: 335
По умолчанию

Код:

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

И далее - ADOQuery1.ExecSQL;

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

Цитата:
Сообщение от 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 в 22:17.
edsjeka вне форума   Ответить с цитированием
Старый 27.01.2016, 22:17   #8
Dvoishnik
Участник клуба
 
Регистрация: 12.02.2011
Сообщений: 808
Репутация: 295
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:

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

И далее - ADOQuery1.ExecSQL;
что то мне подсказывает что нечего не выйдет...

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

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

Вам не совсем правильно подсказали
Код:

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

а плюсы обозначают.. не поверите сложение!
Dvoishnik вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: отправка сообшения по локалной сети. Ошибка PChar alman12 Общие вопросы Delphi 3 09.09.2015 21:25
[РЕШЕНО]: Turbo Pascal. Ошибка 36: Begin expected. qoTIuHr Паскаль 7 24.07.2015 02: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 18:09


00:35.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru