Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.08.2013, 15:12   #1
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию SQLite и переменная из Edit1.Text. Как?

Здравствуйте! Есть база SQLite3 и простой запрос к ней, типа:
Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=(а вот сюда должно подставляться значение из Edit1.Text);
Пробовал адаптировать под себя пример с переменной, но запрос не работает, хотя проект и скомпилировался. Тип поля integer. Как проще всего реализовать подстановку значений из Edit'a? Спасибо!
Kerby666 вне форума
Старый 04.08.2013, 16:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST='+Edit1.Text);
подходит?
I'm learning to live...
Stilet вне форума
Старый 04.08.2013, 17:30   #3
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

пишет синтаксис эррор рядом с = должно быть : сделал так
Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=:'+Edit1.Text);
Запрос отрабатывает но выдает пустую строку в dbgrid, хотя значение ввожу точно. Т.е. если я сделаю так
Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=1234';
,
то получу не пустую строку в dbgrid, но если подставлять 1234 из Edit, строка пустая, ошибок не выдает.

Последний раз редактировалось Kerby666; 04.08.2013 в 17:56.
Kerby666 вне форума
Старый 04.08.2013, 19:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
пишет синтаксис эррор рядом с = должно быть :
Что за ерунда... Не должно быть там двоеточия.
Или тогда так:
Код:
SQLQuery1.Parameters.ParamByName('p').Value:=Edit1.Text;
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=:p');
Это если запрос параметризировать.
I'm learning to live...
Stilet вне форума
Старый 04.08.2013, 19:23   #5
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что за ерунда... Не должно быть там двоеточия.
Или тогда так:
Код:
SQLQuery1.Parameters.ParamByName('p').Value:=Edit1.Text;
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=:p');
Это если запрос параметризировать.
Я пишу в Lazarus, может отсюда некоторая разница в синтаксисе языка. При использовании параметра ошибка - параметр 'p' не найден.
Kerby666 вне форума
Старый 04.08.2013, 20:14   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет. Лазарь тут ни при чем.
Цитата:
При использовании параметра ошибка - параметр 'p' не найден.
На какой строке? Я все забываю порядок задачи параметров
либо так как я выше написал либо наоборот:
Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=:p');
SQLQuery1.Parameters.ParamByName('p').Value:=Edit1.Text;
Сам я параметризацией редко пользуюсь.
I'm learning to live...
Stilet вне форума
Старый 04.08.2013, 20:39   #7
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
Печаль

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет. Лазарь тут ни при чем.

На какой строке? Я все забываю порядок задачи параметров
либо так как я выше написал либо наоборот:
Код:
SQLQuery1.SQL.Text:='select * from NameTable where ID_TEST=:p');
SQLQuery1.Parameters.ParamByName('p').Value:=Edit1.Text;
Сам я параметризацией редко пользуюсь.
Я уже сам допер, поменял строки местами и результат тот же. Запрос отрабатывает. Но строка пустая. Может я неправильно команду на исполнение даю. У меня просто сделано так
Код:
SQLQuery1.Active:=True;
Kerby666 вне форума
Старый 04.08.2013, 21:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Строка пустая, значит нет записей с таким ID_TEST
I'm learning to live...
Stilet вне форума
Старый 04.08.2013, 21:29   #9
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Строка пустая, значит нет записей с таким ID_TEST
В этом и суть, что если указать значение прямо, без использования переменной, то строка не пустая. То есть ставлю я, к примеру ID_TEST=1234 и все ОК, а если ввожу 1234 в Edit, то строка пустая, будто нет записей таких.
Kerby666 вне форума
Старый 04.08.2013, 21:35   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так при параметризации нужно писать
Код:
SQLQuery1.Parameters.ParamByName('p').Value:=StrToInt(Edit1.Text);
Раз поле числовое.
А я бы писал так как во втором посте.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно подставить значение из edit1.text? fed@n Общие вопросы Delphi 6 22.02.2012 10:16
Как сделать чтоб вместо file.txt было значение Edit1.text quarty Общие вопросы Delphi 2 22.10.2010 16:54
[Делфи]Как удалить последний символ в edit1.text? zotox Помощь студентам 3 05.08.2009 12:05
Числа из edit1.text в массив..как? yaquake Помощь студентам 6 01.03.2009 14:09
Как узнать в Edit1.Text у меня информация Integer Shaitan63 Общие вопросы Delphi 11 29.01.2009 11:20