![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как построить такой запрос... [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