![]() |
|
|
![]()
|
|
| romanыч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 16.8.2008 Репутация: нет Всего: нет |
Этот код сначала выдает "ok", а потом "1". Не пойму. Locate же вроде должен еще и перемещаться на найденную запись. Или я в чем то не прав? |
|||
|
||||
| romanыч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 16.8.2008 Репутация: нет Всего: нет |
Я понял. Она не перемещает в найденную позицию, так как ADOTable1 связана с другим DataSource через MasterSource.
Подскажите, а есть какой нить другой способ переместиться на запись с определенным "id"? |
|||
|
||||
| Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Не знаю, что такое MasterSource, но почему нельзя таблицу напрямую подключить к ADOConnection ?
Есть вроде нечто вроде этого (пишу в синтаксисе Дельфи):
- т.е. перемещение на строку номер 10 (не id=10, а физический номер =10). А ещё - ну, фильтр если поставить на таблицу или же запросом выбрать данные с нужным ID. -------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
| romanыч |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 16.8.2008 Репутация: нет Всего: нет |
Спасибо за внимание.
MasterSorce, это тоже что-то типа фильтра, только связанного с другой таблицей, т.е. у меня 2 ADOTable со связанными с ними DataSorce, и во второй таблице записи фильтруются в зависимости от того какая запись активна в первой, т.е. типа динамического запроса что то. А фильтр поставить нелььзя так же потому что таблица уже отфильтрована. RecNo мне не подходит так как мне нужно переместиться к определенному id, а цикл я пускать не хочу(и так уже много вложенных циклов и база большая, долго искать будет). Но я уже нашел выход. Оказывается - Locate ищет запись не в той таблице которая отфильтрована, а в оригинальной полной таблице, и он перемещается на первую найденную запись, но так как в моей отфильтрованой таблице эта запись под фильтр не попадает, вот он и возвращает самую первую запись. Я настроил Locate на поиск по двум полям и тогда все ОК. Я просто не знал что Locate может искать по нескольким полям, уже и Lookup и Seek перебрал. |
|||
|
||||
| Solree |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.5.2010 Репутация: нет Всего: нет |
Чтобы не создавать новую тему напишу здесь.
TLocateOptions Opts; Opts << loCaseInsensitive; for (int Search=0;Search<DBGrid1->Columns->Count;Search++) { if (ADOTable1->Locate(DBGrid1->Columns->Items[Search]->Title->Caption,Edit1->Text,Opts)==true) { Label1->Caption="Малаца"; break; } if (Search==(DBGrid1->Columns->Count)-1) { Label1->Caption="Нима такого"; } } Если то, что надо найти находится в колонке, с которой начинается цикл - то все нормально. Но если нужное находится где-то дальше, то при изменении параметра поиска в Locate выдает ошибку "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом". Как использовать эту функцию для такого поиска? Или посоветуйте другой способ. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |