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

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

Поиск! [D7, XP]


Sapos ©   (2007-03-06 10:23:00) 

Приветствую всех мастеров!

Помогите плиз. Пытаюсь организовать поиск в БД по конкретному полю, но у меня 2 таблицы связаны между собой с помощью одного индекса.
Пытаюсь применить следующий код:
Table2.SetKey;
Table2.FieldByName('Field1').AsString:=FindEdit.Text;
Table2.GotoKey;

при выполнении такого кода генерится эксепшн: Field 'Field1' is not indexede and cannot be modified.

Для этого поля индекс у меня есть и если я делаю так:
Table2.IndexName:='Index_Field1';
Table2.SetKey;
Table2.FieldByName('Field1').AsString:=FindEdit.Text;
Table2.GotoKey;
то слетает тот индекс по которому у меня организована связь между таблицами, ошибки не происходит, но и результата я не получаю - ниче не находит.

Помогите, пожалуйста решить проблему!!!


Desdechado   (2007-03-06 12:10:00) [1]

> SetKey эквивалентно Edit?
Нет, конечно. Но ругается ведь не просто "нет индекса", а "нет индекса и нельзя редактировать".
Хотя Table и его методы я никогда не использую, поэтому все весьма относительно.

ЗЫ я просто решил провести логический анализ текста сообщения, а тут так всерьез приняли мои потуги ;)


Плохиш   (2007-03-06 11:48:00) [2]


> Desdechado ©   (06.03.07 11:20) [6]
> Плохиш ©   (06.03.07 11:14) [5]
> Правильно. Раз не индексировано, значит, взведение флага
> не актуально, значит, попытка редактирования

Хм, сам придумал? В каком мануале написано, что при невозможности установки поиска по индексу, SetKey эквивалентно Edit? Т.к. в случае, при попытки редактирования записи без предварительного вызова Edit, текст исключения несколько иной.


sniknik   (2007-03-06 11:41:00) [3]

поле индексировано, выше пример, просто нужный индекс не может быть установлен/использован для поиска т.к. другой в тоже время используется для связки...

имхо, ввиду моего плохого знания BDE.


Desdechado   (2007-03-06 11:20:00) [4]

Плохиш ©   (06.03.07 11:14) [5]
Правильно. Раз не индексировано, значит, взведение флага не актуально, значит, попытка редактирования, а не поиска.


Плохиш   (2007-03-06 11:14:00) [5]


> Desdechado ©   (06.03.07 11:13) [4]

Неправильные слова выделил, основные здесь " Field'Field1' is not indexede".


Desdechado   (2007-03-06 11:13:00) [6]

Флаг-то флаг, но текст ошибки недвусмыслен.
Field'Field1' is not indexede and cannot be modified.


sniknik   (2007-03-06 11:01:00) [7]

> Это не поиск, это изменение данных.
поведение зависит от "взведенного" перед этим флага, т.е. если бы перед было Table2.Edit; вместо Table2.SetKey; то да, это бы было изменением данных.
но как написано это не так.


Desdechado   (2007-03-06 10:52:00) [8]

Table2.FieldByName('Field1').AsString:=FindEdit.Text;
Это не поиск, это изменение данных. Надеюсь, разницу чувствуешь?


Плохиш   (2007-03-06 10:45:00) [9]

Table2.Locate('Field1', FindEdit.Text, [<здесь написать то, что надо, возможные значения в справке>]);


Наверх

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