Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как построить такой запрос... [D7, MS Access]


BlackCat ©   (2003-12-16 18:27:00) 

Доброго времени суток, Уважаемые мастера. Ситуация такая:

Есть БД на Access,
На форме Есть DBGrid, DataSource, и AdoQuery, Edit
А как можно сделать так, чтобы при возникновении события OnChange
у Edit"а В DBGrid"е оставались только те записи, с которые начинаются с буквы, введенной в Edit, вводишь следующую букву, они еще отсортировываются???

Заранее благодарен.


Johnmen   (2003-12-22 10:07:00) [1]

>Silver Alex © (22.12.03 10:05)

Тогда возможно...


Silver Alex   (2003-12-22 10:05:00) [2]


> Johnmen © (22.12.03 09:52) [12]

а если еще вот так?

procedure TForm1.Edit1Change(Sender: TObject);
begin
ADODataSet1.Filtered:=false;
ADODataSet1.Filtered:=true;
end;


Johnmen   (2003-12-22 09:52:00) [3]

>Silver Alex © (22.12.03 09:43)

Так интересно. Но работать не будет...:)


Silver Alex   (2003-12-22 09:43:00) [4]

на событие OnFilterRecord

procedure TForm1.ADODataSet1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=((pos(AnsiUpperCase( Edit1.Text), AnsiUpperCase(DataSet.FieldByName("name").AsString))=1) or
(Edit1.Text=EmptyStr)) ;
end;


Johnmen   (2003-12-22 09:17:00) [5]

>bon © (22.12.03 09:14)

Это текст процедуры... И, казалось бы, причем тут аксесс ?


bon   (2003-12-22 09:14:00) [6]

текст запроса:
declare @str as nvarchar
set @str= :par1
Select * from CLIENTS
where Fam Like "%"+@str+"%"

код:

procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.Parameters[0].Value:=Edit1.Text ;
ADOQuery1.Open;
end;


gestern1   (2003-12-21 16:57:00) [7]

У меня ibx, но тоже самое
procedure TForm1.Edit5Change(Sender: TObject);
var
sql:string;
begin
sql:="Select * from CLIENTS where Fam Like """+edit5.text+"%"+"""";
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add(sql);
IBQuery1.Open;
IBQuery1.First;
end;


Vilen   (2003-12-21 16:24:00) [8]

Have fun with this untill you find a better solution!
procedure TForm1.Edit1Change(Sender: TObject);
var s : string;
begin
If Edit1.Text > " " then
s := Edit1.Text + "%";
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("select field_name " +
"from table_name " +
"where field_name like :field_name");
ADOQuery1.Parameters[0].Value := s ;
ADOQuery1.Open;
end;


JibSkeart   (2003-12-17 09:29:00) [9]

Да к Query

Сорри за ошибочку :)

да и попробуй раставить ковычки везде одинарные


BlackCat   (2003-12-17 09:24:00) [10]


> BlackCat © (16.12.03 18:51) [3]
> Да, но только почему у меня DBGrid сразу же становится пустой,
> после ввода первой буквы, хотя слова, начинающиеся с этой
> буквы есть в том поле, к которому применяю фильтрацию???
>
> P.S. Кароче почему-то не фурычит :((


Ну хоть кто-нить помогите, плиззззз...


BlackCat   (2003-12-16 19:30:00) [11]


> JibSkeart © (16.12.03 18:34) [2]
> ..onChange(...)
> begin
> if (Edit1.text != "") then
> begin
> DBGrid.Filtered := true;
> DBgrid.Filter := "fieldname like ""+Edit1.Text+""%""


и по моему надо применять не к граду, а к AdoQuery


BlackCat   (2003-12-16 18:51:00) [12]

Да, но только почему у меня DBGrid сразу же становится пустой, после ввода первой буквы, хотя слова, начинающиеся с этой буквы есть в том поле, к которому применяю фильтрацию???

P.S. Кароче почему-то не фурычит :((


JibSkeart   (2003-12-16 18:34:00) [13]

..onChange(...)
begin
if (Edit1.text != "") then
begin
DBGrid.Filtered := true;
DBgrid.Filter := "fieldname like ""+Edit1.Text+""%"";
end
else
DBGrid.Filtered := false

end;

Это ??


Anatoly Podgoretsky   (2003-12-16 18:32:00) [14]

LIKE


Наверх

Титульная страница Поиск, карта сайта Написать письмо