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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2011, 21:06   #1
_Irina_
 
Регистрация: 10.05.2011
Сообщений: 5
По умолчанию SQL-запрос по значению из Edit

Всем добрый день!

Суть задачи: в Edit вводится число, далее нажимаем кнопку и в DBGrid-е должна отобразится строка со значение поля ID=тому что ввели в Edit.

Подключение к SQL осуществляю с помощью компонентов SQLConnection,DataSource,SimpleData Set.

пыталась создать запрос следующим образом
Цитата:
SimpleDataSet1.DataSet.CommandText: ='Select * from s where id=:x';
SimpleDataSet1.Params.ParamsByName( 'x').Value:=Edit1.Text;
SimpleDataSet1.Active:=true;
не получаетсяпишет что не найден параметр "х"! Подскажите где я накосячила-очень надеюсь на помощь.
_Irina_ вне форума Ответить с цитированием
Старый 10.05.2011, 21:49   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Попробуйте просто включить в текст запроса строку из компонента без каких-либо параметров:
Код:
SimpleDataSet1.DataSet.CommandText: ='Select * from s where id='+Edit1.Text;
SimpleDataSet1.Active:=true;
Прик вне форума Ответить с цитированием
Старый 11.05.2011, 13:47   #3
_Irina_
 
Регистрация: 10.05.2011
Сообщений: 5
По умолчанию

Спасибо большое за совет-работает.

Последний раз редактировалось _Irina_; 11.05.2011 в 13:50.
_Irina_ вне форума Ответить с цитированием
Старый 13.05.2011, 13:12   #4
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию

Что бы не порождать новую тему пишу свой вопрос сюда. Тем более он очень похож.
Имеется две связанные таблицы пытаюсь построить запрос который будет выводить в DBGrid поля этих таблиц и при этом учитывать фамилию. Фамилию ввожу в компонент
Edit.
Сделал следующий запрос.
procedure TForm1.Button1Click(Sender: TObject);
begin
Zhurnal_Query.Close;
Zhurnal_Query.SQL.Text := 'SELECT I.Famil, I.Imya, I.Otch, N.Kat_Dela,'+
'N.N_Dela, N.Rol_V_Dele, N.DataVrem_Zased, N.Kabinet FROM dbo.Nazn_SZ N,'+
'dbo.Inf_grahd I WHERE (I.N_Zapisi=N.Grahdanin) and I.Famil= '+Edit1.Text ;
Zhurnal_Query.Open;

end;
Если не добавлять выделенное место все работает, как только пытаюсь фильтровать учитывая Фамилию вылетает с сообщением Incorrect sintax near '=" это случае если нет ничего в поле EDIT, если ввожу Фамилию и пытаюсь фильтровать то выскакивает сообщение invalid column name 'Иванов"

Сижу мучаюсь.

Последний раз редактировалось Volodq; 13.05.2011 в 13:26.
Volodq вне форума Ответить с цитированием
Старый 13.05.2011, 13:21   #5
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

а скобочки пробывал добавлять?
И еще, у тебя не хватает ковычек )

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   Zhurnal_Query.Close;
   Zhurnal_Query.SQL.Text := 'SELECT I.Famil, I.Imya, I.Otch, N.Kat_Dela,'+
   'N.N_Dela, N.Rol_V_Dele, N.DataVrem_Zased, N.Kabinet FROM dbo.Nazn_SZ N,'+
   'dbo.Inf_grahd I WHERE (I.N_Zapisi=N.Grahdanin) and (I.Famil= '''+Edit1.Text + ''')' ;
   Zhurnal_Query.Open;
end;
Gulik вне форума Ответить с цитированием
Старый 13.05.2011, 13:37   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

where i.famil ="иванов"
строковые значения по правилам SQL заключаются в кавычки (возможно апострофы)
Quotedstr(edit1.text)

или используйте пареметры
.... where i.famil=:fm ....
parameters.parambyname('fm'):=Edit1 .Text;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.05.2011 в 13:39.
evg_m вне форума Ответить с цитированием
Старый 13.05.2011, 13:51   #7
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию

Огромное спасибо заработало.
Теперь буду думать как учитывать дату и как обработать случай если поле для ввода фамилии пустое.
Volodq вне форума Ответить с цитированием
Старый 13.05.2011, 14:23   #8
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию

или используйте пареметры
.... where i.famil=:fm ....
parameters.parambyname('fm'):=Edit1 .Text;[/QUOTE]

Попробовал с параметрами выдает сообщение
[Error] Sekr1.pas(83): Object or class type required
Volodq вне форума Ответить с цитированием
Старый 13.05.2011, 14:51   #9
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
...parambyname('fm').Value:=Edit1 .Text;
_Engine_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Sql-запрос по значению, введенному в Edit setrik777 БД в Delphi 5 27.05.2009 15:26
Поиск в базе по значению в Edit Arteom БД в Delphi 2 19.10.2007 22:23
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15