Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.05.2015, 00:14
AlexAwert AlexAwert вне форума
Прохожий
 
Регистрация: 20.03.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Помогите, пожалуйста, разобраться (SQL запрос)

Обработчик события на кнопке

Код:
procedure TForm9.ComboBox1Select(Sender: TObject);
begin

ADOQuery5.Close;
  adoquery5.SQL.Clear;
  adoquery5.SQL.Add('SELECT id_tech_type FROM type_goods WHERE Name_type ="'+form9.ComboBox1.Text+'"');
  adoquery5.Open;
  save:=adoquery5.FieldValues['id_tech_type'];
//-----------------------------------------------------------------------
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
 ADOQuery2.SQL.Add('SELECT model FROM goods WHERE id_type="'+save+'"');----- ругается на эту строку
  ADOQuery2.Open;
  Combobox2.Text:='Âûáîð';
  ComboBox2.Items.Clear;
  While not ADOQuery2.Eof do
  begin
     ComboBox2.Items.Add(ADOQuery2.Fields[0].AsString);
     ADOQuery2.Next;
  end;
  Combobox2.Enabled:=true;

end;

Пишет, что не соответствуют типы integer и string. Save объявлена как переменная типа integer, id_type в БД тоже переменная типа Integer. С чего компилятор решил, что типы разные не понимаю или я не туда смотрю или с синтаксисом что-то не так, прошу подсказать. Если нужно, выложу проект целиком.
Ответить с цитированием
  #2  
Старый 26.05.2015, 00:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
... + IntToStr(save) + ...

и для строковых литералов в SQL используются одинарные кавычки. Что бы их ввести в дельфи, надо ввести 2 кавычки, например:
Код:
s := 'sss''uuu';
c := '''';
В s будет sss'uuu
В с будет просто одинарная кавычка (одна).
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
AlexAwert (26.05.2015)
  #3  
Старый 26.05.2015, 08:10
AlexAwert AlexAwert вне форума
Прохожий
 
Регистрация: 20.03.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Благодарю за помощь, все заработало!) Хотя вчера, вроде бы, таким же образом сделать пытался, но ничего не работало. Наверно, сказался недостаток сна, косячил где-то))
Ответить с цитированием
  #4  
Старый 28.05.2015, 02:17
AlexAwert AlexAwert вне форума
Прохожий
 
Регистрация: 20.03.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Подскажите еще пожалуйста.

Есть SQL Запрос вида

Код:
SELECT Klients.SurName, Klients.NName, Klients.SecondName, Klients.KreditNumber, Type_goods.Name_type, Zakazy.ViewOfGood, goods.Cost, Zakazy.Kolvo, Zakazy.SumCost, Zakazy.Date_z
FROM Klients INNER JOIN ((Type_goods INNER JOIN goods ON Type_goods.id_tech_type = goods.id_type) INNER JOIN Zakazy ON goods.id_tech = Zakazy.id_tech) ON Klients.id = Zakazy.Id;

Как осуществить выборку данных с определенным условием, например, выбрать все данные только о человеке с фамилией Парфенов (SurName). Обычное условие WHERE LIKE "'+edit1.text+'" работало только при объединении двух таблиц, при 3х работать в таком же виде отказывается.



Вот на такой вариант и ругается.
Код:
SELECT Klients.SurName, Klients.NName, Klients.SecondName, Klients.KreditNumber, Type_goods.Name_type, Zakazy.ViewOfGood, goods.Cost, Zakazy.Kolvo, Zakazy.SumCost, Zakazy.Date_z
FROM Klients INNER JOIN ((Type_goods INNER JOIN goods ON Type_goods.id_tech_type = goods.id_type) INNER JOIN Zakazy ON goods.id_tech = Zakazy.id_tech) ON Klients.id = Zakazy.Id WHERE SurName LIKE "'+edit1.text+'";


Ссылается на недостаток операторов. Подскажите пожалуйста, чего не хватает и где.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter