![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Обработчик события на кнопке
Код:
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+'"; Ссылается на недостаток операторов. Подскажите пожалуйста, чего не хватает и где. |