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

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

Помогите разобраться с Locate [D3]


iStat ©   (2003-04-17 06:33:00) 

Народ, подскажите кого пинать. При выполнении

suc=Table1.Locate("Code",code,Options);

выдается ошибка "Record not found", а иногда "Record/key deleted".
Я думал, что функция Locate возвращает false если запись не найдена. Кто из нас не прав?


iStat   (2003-04-17 14:51:00) [1]

Одинаковы не полностью, а только кусочки делающие одно и тоже


Anatoly Podgoretsky   (2003-04-17 14:41:00) [2]

Не верю, Станиславский.
При одинаковом коде не возможно различить программы, кроме как по имени.


iStat   (2003-04-17 14:33:00) [3]

>Anatoly Podgoretsky
Код-то одинаков и там и там


iStat   (2003-04-17 14:28:00) [4]

BDE у меня от 5 Delphi, это недостаточно новое?


Anatoly Podgoretsky   (2003-04-17 14:21:00) [5]

iStat (17.04.03 13:58)
Дело не во внешней среде, у тебя два приложения одно работает, а другое нет, так что вывод сделай сам.


blackman   (2003-04-17 14:07:00) [6]

>Или лучше BDE закопать...
Проще обновить или скачать полностью новое
Я же написал...


iStat   (2003-04-17 13:58:00) [7]

Ничего не понимаю!
Создал таблицы по новой с нуля, заполнил.
Создал новое приложение со строчками с выборкой и Locate.
Запускаю - работает.
Запускаю старое приложение - не работает.
Запускаю SQLExplorer, пишу "select * from таблица where code=111"
Выдает нужную строчку.
На что грешить? Куда еще копать? Или лучше BDE закопать...


alexLi   (2003-04-17 11:58:00) [8]

Не влияет, если только выборка, а не удаление или замена.


iStat   (2003-04-17 11:14:00) [9]

>alexLi

У меня сначала Query1 делает выборку из нескольких таблиц, в т.ч. и из той с которой связана Table1, затем
code=Query1.FieldByName("Code").AsInteger;
suc=Table1.Locate("Code",code,Options);
Это влияет на набор данных связанный с Table1?


blackman   (2003-04-17 10:52:00) [10]

>[D3]
Интересно, а что будет если с D1 попробовать ?


Anatoly Podgoretsky   (2003-04-17 10:42:00) [11]

iStat (17.04.03 09:43)
Там есть Restructure, в кочном удалить и пересоздать, самый действенный метод


alexLi   (2003-04-17 10:25:00) [12]

Еще вариант. На том же файле открыта еще одна таблица и в ней,
например, удалена запись. Если на текущей Table1 не сделать Refresh, то результатом будут имеенно такие сообщения. С точки зрения Table1 нет записи соответствующей индексу, хотя индексы в порядке.


iStat   (2003-04-17 09:43:00) [13]

Да, Paradox. А с помощью DBD как?


Anatoly Podgoretsky   (2003-04-17 09:15:00) [14]

А у тебя Парадокс?
Тогда вполне реально, но можно и без него, с помощью DBD


iStat   (2003-04-17 08:58:00) [15]

Набор данных однозначно не пустой, а вот с индексами скорей всего...
Восстановить индексы с помощью TUTIL32 - это реально?


АлексейК   (2003-04-17 07:27:00) [16]

Синтасис правильный. Только наименование поля пишется в одинарных кавычках, т. е. "field_name", а не "field_name". А вот при поиске по пустому набору данных может возникнуть ошибка.


ЮЮ   (2003-04-17 07:11:00) [17]

Locate, действительно, возвращает false если запись не найдена, а "Record not found", "Record/key deleted".скорей всего, Exception-ы возбуждаемые при работе с таблицей, имеющей поврежденные индексы.


Наверх

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