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