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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 23:29   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а .Text где!?

Код:
if Edit1.Text <> '' then ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2009, 12:50   #12
GX_h10
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 28
По умолчанию

Работает при условии, что каждый поставщик в таблице БД имеет отдельное поле.
Если имена поставщиков заполняются в одном поле, то не имеет смысла "разводить"
Edit'ы, а сделать выборку через один Edit (см.код #2)

код #1

Код:
private
  procedure Finder(Sender: TObject);

implementation

procedure TForm1.Finder(Sender: TObject);
var
  sql:string;
begin
  sql := 'SELECT * FROM table'+
         ' WHERE postavchik_1 like ' + QuotedStr(Edit1.Text + '%')+
         ' AND  postavchik_2 like ' + QuotedStr(Edit2.Text + '%')+
		 ' AND  postavchik_3 like ' + QuotedStr(Edit3.Text + '%')+
		 ' AND  postavchik_4 like ' + QuotedStr(Edit4.Text + '%')+
		 ' AND  postavchik_5 like ' + QuotedStr(Edit5.Text + '%')+
		 ' AND  postavchik_6 like ' + QuotedStr(Edit6.Text + '%');
         
  ADOQuery.Close;
  ADOQuery.SQL.SetText(PChar(sql));
  ADOQuery.Open;
end;

procedure TForm1.Edit1Change(Sender: TObject); //Поставщик 1
var
  sql:string;
begin
  Finder(Sender);
end;

procedure TForm1.Edit2Change(Sender: TObject); //Поставщик 2 
var
  sql:string;
begin
  Finder(Sender);
end;

...

procedure TForm1.Edit6Change(Sender: TObject); //Поставщик 6 
var
  sql:string;
begin
  Finder(Sender);
end;

Код #2

Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  sql:string;
begin
  sql := 'SELECT * FROM table WHERE postavchik like ' + QuotedStr(Edit1.Text + '%');

  ADOQuery.Close;
  ADOQuery.SQL.SetText(PChar(sql));
  ADOQuery.Open;
end;
GX_h10 вне форума Ответить с цитированием
Старый 28.12.2009, 06:14   #13
GX_h10
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 28
По умолчанию

В первом случае недоработано, лучше сделать так:

Код:
...
  procedure FindEditChange(Sender: TObject);

private
  procedure Finder(Sender: TObject);

implementation

procedure TForm1.Finder(Sender: TObject);
var
  sql:string;
begin
  sql := 'SELECT * FROM table'+
         ' WHERE postavchik_1 like ' + QuotedStr(Edit1.Text + '%')+
         ' AND  postavchik_2 like ' + QuotedStr(Edit2.Text + '%')+
		 ' AND  postavchik_3 like ' + QuotedStr(Edit3.Text + '%')+
		 ' AND  postavchik_4 like ' + QuotedStr(Edit4.Text + '%')+
		 ' AND  postavchik_5 like ' + QuotedStr(Edit5.Text + '%')+
		 ' AND  postavchik_6 like ' + QuotedStr(Edit6.Text + '%');
         
  ADOQuery.Close;
  ADOQuery.SQL.SetText(PChar(sql));
  ADOQuery.Open;
end;

procedure FindEditChange(Sender: TObject);
begin
  Finder(Sender);
end;
Теперь у каждого Edit'а, в событии OnChange
вставить вот это - FindEditChange.
GX_h10 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15
Оптимизация sql запроса в хп eda SQL, базы данных 3 28.07.2009 11:57
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08
Обработка SQL-запроса iid2007 Microsoft Office Access 2 10.07.2008 12:41