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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2016, 16:20   #1
arturqa2015
 
Регистрация: 24.06.2015
Сообщений: 4
По умолчанию Нужная помощь с поиском

При выполнении поиска не находит значение. Значение копировал из БД

Код:
procedure TForm1.Button10Click(Sender: TObject);
begin
DataModule2.ADOQuery1.Active:=false;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.append('SELECT Dogovor.ID_dogovor AS [ID Договора], Pomeshenie.Nazvanie AS Помещение , Arendator.Nazvanie AS Арендатор, Dogovor.Data_podpis AS [Дата подписи договора], Dogovor.data_nach AS [Дата начала аренды],'
+' Dogovor.data_kon AS [Дата конца аренды], Dogovor.Data_rastor AS [Дата расторжения договора]FROM Arendator INNER JOIN'
+'(Pomeshenie INNER JOIN Dogovor ON Pomeshenie.ID_Pomeshenie = Dogovor.ID_pomeshenie)ON Arendator.ID_arendator = Dogovor.ID_arendator WHERE :p1 Like :p2;');
DataModule2.ADOQuery1.parameters.parambyname('p1').value:=Integer(Combobox1.Items.Objects[Combobox1.ItemIndex]);
DataModule2.ADOQuery1.parameters.parambyname('p2').value:=Edit1.text;
DataModule2.ADOQuery1.Active:=true;
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
i: Integer;
begin
ComboBox1.Items.Clear;
DataModule2.ADOQuery1.Open;
for i:=1 to DataModule2.ADOQuery1.FieldCount-1 do
ComboBox1.Items.Add(DataModule2.ADOQuery1.FieldList.Fields[i].FieldName);
end;
arturqa2015 вне форума Ответить с цитированием
Старый 12.04.2016, 16:35   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Код:
where :p1 like :p2
имена полей НЕ МОГУТ быть параметром!
Код:
SQL.text:=''SELECT Dogovor.ID_dogovor AS [ID Договора], Pomeshenie.Nazvanie AS Помещение , Arendator.Nazvanie AS Арендатор, Dogovor.Data_podpis AS [Дата подписи договора], Dogovor.data_nach AS [Дата начала аренды],'
+' Dogovor.data_kon AS [Дата конца аренды], Dogovor.Data_rastor AS [Дата расторжения договора]FROM Arendator INNER JOIN'
+'(Pomeshenie INNER JOIN Dogovor ON Pomeshenie.ID_Pomeshenie = Dogovor.ID_pomeshenie)ON Arendator.ID_arendator = Dogovor.ID_arendator';

SQL.Append(where ' + combobox1.Text ' like :p2');
SQL.Parameters.Parambyname('p2').value:=Edit1.Text +'%';
да к тому же еще и число
Цитата:
('p1').value:=Integer(Combobox1.Items.Objects[Combobox1.ItemIndex]);
у вас что, поля имеют числовые наименования (1,2,3,... ) ?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.04.2016, 18:12   #3
arturqa2015
 
Регистрация: 24.06.2015
Сообщений: 4
По умолчанию

Цитата:
имена полей НЕ МОГУТ быть параметром!
спасибо
Цитата:
SQL.Append(where ' + combobox1.Text ' like 2');
SQL.Parameters.Parambyname('p2').va lue:=Edit1.Text +'%';
В поле Помещение и Арендатор при таком поиске нужно вводить ID, а не Nazvanie
Цитата:
у вас что, поля имеют числовые наименования (1,2,3,... ) ?
А номер итема не числовой?
arturqa2015 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужная литература (совет) Биометрия Evkliptik Помощь студентам 0 01.06.2015 11:49
нужная гостевая книга для сайта gena87 Фриланс 1 01.09.2010 00:42
задача странная - но нужная, верстка Артем1256 HTML и CSS 5 11.07.2010 01:42
Помощь с поиском anger Помощь студентам 5 27.10.2008 13:20
Как узнать существует ли в БД нужная строка? kiber0net0 БД в Delphi 1 02.09.2008 21:31