присваивание результата SQL запроса в Delphi

программирование sql Delphi запросы dbLookUpComboBox

Есть замечательный запрос на поиск цены определённого товара (выбранного в dbLookUpComboBox)
Query1.SQL.Add('Select Price from items where ItemName='''+AddItem.Text+'''')
Цену находит, сбоку в табличку выводит (проверял нормально ли работает). Теперь мне надо то же самое, но в переменную tmp ибо там будут ещё вычисления с ним. У кого какие идеи?
Если предложите мне FieldByName, то покажите на практике (листингом с моим запросом) как это должно выглядеть.

Примечание:
эх да. вот вам и решение проблемы:
---
Query1.SQL.Text:='Select Price from items where ItemName='''+AddItem.Text+''';
Query1.Open;
tmp:=Query1.Fields[0].AsString;
Query1.Close;
Label2.Caption:=tmp; //для проверки сработало ли
---

Примечание:
>>>Андрей
коротко на пальцах суть. есть база товаров. есть форма создания заказа. с помощью комбобокса я выбираю товар, в Edit у меня вписывается количество (но это совсем другая история). суть сего запроса и присваивания в том, при выборе нужного товара у меня сохраняется его стоимость, а из Edit'a берется требуемое количество, ну и тут вы понимаете, что считается "итого". Не спорю, быть может это можно реализовать как-то по-другому с помощью более сложного запроса, но у меня нет таких познаний SQL, да и желания с этим... мучиться. да и времени тоже нет. конструктор запросов на добавление новых записей в таблицы я уже соорудил и мне пока что этого достаточно

Примечание:
>>> Андрей
Подвох в том, что ItemName поле содержит только уникальные значения, поэтому выводится всё равно только одно значение, которое я и забираю. tmp был использован исключительно для просмотра, по факту там используется тот же int, что и в поле pricе, который дальше уходит в расчет стоимости
Ответы:
Хорошо, конечно, что сами решение нашли, только вот вопрос про эту строку есть, зачем:
>Query1.SQL.Text:='Select Price from items where ItemName='''+AddItem.Text+''';
Вроде как параметризованные запросы быстрее и устойчивы к SQL-инъекциям.
Лучшие базоводы рекомендуют так:
Один раз так:
Query1.SQL.Text:='Select Price from items where ItemName = :INParam';
Query1.Prepare;
И при каждом поиске так:
Query1.Params[0].AsString := 'AddItem.Text';
Query1.Open;
РЫСь>>>
Параметризованные запросу применяются в тех случаях, когда один и тот же запрос выполняется несколько раз с разными значениями параметра. К SQL-иньекциям это отношения не имеет. Если запрос выполняется один раз то использование параметров ничего не дает (но и не мешает)
Fa11en666>>>
1) Чем этот запрос такой замечательный?
2) Для того чтобы одной переменной присвоить значение другой переменной, эти переменные должны быть одного типа! Какой тип у твоего замечательного запроса?
В твоем частном случае - это список строк. Значит переменная TMP должна иметь тип TStringList, а для того чтобы присвоить ей значение запроса необходимо перебрать все строки результата запроса и последовательно добавить их в TStringList


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.