powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как встать на запись?
14 сообщений из 14, страница 1 из 1
Как встать на запись?
    #32878430
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня значение поля в таблице (ID - Integer), как найти запись и встать на нее? LOCATE почему-то не прокатывает - не могу понять почему....
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878444
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможные причины:

-) Поврежден индексный файл
-) на таблицу наложен фильтр (SET FILTER), исключающий данную запись
-) главный индекс (SET ORDER) имеет FOR-условие, исключающее данную запись
-) запись удалена и установлно SET DELETED ON
-) Поиск осуществляется не в той рабочей области (по другой таблице)
-) Записи с таким значением нет в таблице

Гадать можно и дальше. Может все-таки приведешь кусок кода, как именно осуществляешь поиск и как убедился что запись с таким кодом действительно существует?
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878447
Фотография SAM-FoxPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. LOCATE FOR id=<Value>
Почему у тебя не ищет? Не знаю, должно работать.
2. Проиндексировать по полю ID и использовать
2.1. SEEK
2.2. SEEK()
3. Можно еще сложнее.
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878451
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*** ActiveX Control Event ***
LPARAMETERS node
ii=node.index
kk=node.key
tt=node.tag
ll=LEN(kk)-1
nn=RIGHT(kk,ll) && уникальный номер детали из таблицы, строковый
idn=VAL(nn) && получаем числовой номер
node.selected=.T.
id_sb = idn
SELECT sp_zapch
SET ORDER TO id_detal
goto top

LOCATE FOR id_detal=INT(idn)
x=RECNO()
MESSAGEBOX(STR(x))
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878453
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смысл всего этого -
в тревью я выбираю деталь, (ее id_detal определяется отлично), потом мне нужно передать эту запись на редактирование.
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878457
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
х у меня получается 2292, записей в таблице - 2291
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878459
Фотография SAM-FoxPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в переменной IDN то, что надо?
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878478
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего, поврежден индекс. Для команды LOCATE надо делать

SELECT sp_zapch
SET ORDER TO 0
goto top
LOCATE FOR id_detal=INT(idn)

Т.е. активный главный индекс только замедляет выполнение поиска по LOCATE.

Также можешь использовать функцию поиска SEEK()

IF SEEK(INT(idn),"sp_zapch","id_detal")=.T.
* Есть такая запись
ELSE
* Нет такой записи
ENDIF

Следует также помнить, что содержимое TreeView после построения уже никак не связано с содержимым таблицы. Если, например, после построения дерева ты удалили запись, или настроил фильтр на таблицу, или изменил настройку SET DELETED, то можешь ничего и не найти.
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878526
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAM-FoxProА в переменной IDN то, что надо?

Да, там id_detal - все верно определяется

ВладимирМ

Следует также помнить, что содержимое TreeView после построения уже никак не связано с содержимым таблицы. Если, например, после построения дерева ты удалили запись, или настроил фильтр на таблицу, или изменил настройку SET DELETED, то можешь ничего и не найти.

Я сначала делаю фильтр, потом строю дерево. Все, что мне нужно - взять id_nasosy, встать на эту запись и пойти на редактирование
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878527
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставлю брекпойнт на локейте, делаю броузе - все записи есть, в том числе и та, которую надо.
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878533
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМСкорее всего, поврежден индекс. Для команды LOCATE надо делать

SELECT sp_zapch
SET ORDER TO 0
goto top
LOCATE FOR id_detal=INT(idn)

Т.е. активный главный индекс только замедляет выполнение поиска по LOCATE.

Также можешь использовать функцию поиска SEEK()

IF SEEK(INT(idn),"sp_zapch","id_detal")=.T.
* Есть такая запись
ELSE
* Нет такой записи
ENDIF

Следует также помнить, что содержимое TreeView после построения уже никак не связано с содержимым таблицы. Если, например, после построения дерева ты удалили запись, или настроил фильтр на таблицу, или изменил настройку SET DELETED, то можешь ничего и не найти.

Ни тот ни другой вариант не прокатывают - все время EOF
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878572
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто открываю таблицу (отдельно от всего), в коммандном окне говорю:
LOCATE FOR id_detal=5239
... ничего (точнее улетает в EOF)
Запись такая есть - смотрю на нее
...
Рейтинг: 0 / 0
Как встать на запись?
    #32878740
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi w3d!

Сделай резервную копию, потом
DELETE TAG ALL
и твой LOCATE - если сработает, значит у тебя скорее всего убился индекс...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как встать на запись?
    #32879121
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки да, индекс слетел. REINDEX помог.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как встать на запись?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]