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

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

Поиск в БД! Помогите!


Jazzz ©   (2006-02-05 13:30:00) 

У меня Delphi 2005. Есть ms access таблица. В ней есть несколько полей (FIO:string,NPV:integer,NlS:integer и т.д.).
Вобщем всё подключено и работает. Нужно сделать чтобы в Edit1 пользователь вводил ФИО, и по мере того как он его вводит курсор перемещается к наиболее соответствующему ФИО. Под Д6 у меня был компонент, которій это делал (AlVas). Как это сделать без него?

ADOTable1.IndexFieldNames:='FIO';
if not ADOTable1.Locate('FIO',Edit1.Text,[loPartialKey])
then ShowMessage('Не найдено записей'); - не работает

var str:&string;
str:='select * from spum where fio='+'"'+Edit1.Text+'*'+'"';
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(str);
ADOQuery1.Active:=True;

такое тоже не работает.

Может кто нибуть знает???
ПОМОГИТЕ!!!! Плиззззз!!!!!! Срочно нужно!!!!


Asail   (2006-02-06 18:33:00) [1]


> msguns ©   (06.02.06 11:12) [6]


> И тут же написал еще одну ;)

Какую? У меня так прекрасно работает, правда на BDE!!!


msguns   (2006-02-06 11:12:00) [2]

>atruhin ©   (05.02.06 16:07) [2]
>>* на % поменяй
>Эт что значит? Что это даст?

 Это даст то, что движок "поймет" запрос также, как его понимает акцес.

>По вопросу: смотри оператор like, воспользуйся параметрами в запросе или функцией Quote.

Каким боком Like поможет там, где не помог PartialKey ?

>sail   (05.02.06 20:17) [4]
>ардон, чушь написал!!!

И тут же написал еще одну ;)

>stur   (06.02.06 11:01) [5]

Масло масляное ?


nstur   (2006-02-06 11:01:00) [3]

В методе Edit1 Change добавить
var
 v: variant;
begin
 v:= Edit1.Text;
 dbgMain.DataSource.DataSet.Locate('FIO',v,[loPartialKey]);

Бывает необходимо заранее определить тип передаваемой переменной, а у Locate это variant.


Asail   (2006-02-05 20:17:00) [4]

Пардон, чушь написал!!!

Вместо ADOTable1.SetKey:=S; надо:

ADOTable1.SetKey;
ADOTable1.FieldByName('FIO').AsString:=S;

Сорри...


Asail   (2006-02-05 20:01:00) [5]

Если ADOTable1.IndexFieldNames:='FIO' то
В обработчике OnChange для Edit1 делай:
var S : String;
begin
 S:=Trim(Edit1.Text);
 if S='' then Exit;
 ADOTable1.SetKey:=S;
 ADOTable1.GotoNearest;
end;


atruhin   (2006-02-05 16:07:00) [6]

>>* на % поменяй
Эт что значит? Что это даст?
По вопросу: смотри оператор like, воспользуйся параметрами в запросе или функцией Quote.


sniknik   (2006-02-05 15:05:00) [7]

* на % поменяй


Наверх

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