|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите, пожалуйста, разобраться (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
|
|||
|
|||
Код:
... + IntToStr(save) + ... и для строковых литералов в SQL используются одинарные кавычки. Что бы их ввести в дельфи, надо ввести 2 кавычки, например: Код:
s := 'sss''uuu'; c := ''''; В с будет просто одинарная кавычка (одна). |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
AlexAwert (26.05.2015)
|
#3
|
|||
|
|||
Благодарю за помощь, все заработало!) Хотя вчера, вроде бы, таким же образом сделать пытался, но ничего не работало. Наверно, сказался недостаток сна, косячил где-то))
|
#4
|
|||
|
|||
Подскажите еще пожалуйста.
Есть 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+'"; Ссылается на недостаток операторов. Подскажите пожалуйста, чего не хватает и где. |