Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выход за пределы базы / 21 сообщений из 21, страница 1 из 1
05.05.2015, 10:34
    #38951494
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Уважаемые форумчане! Помогите пожалуйста решить проблему, которой раньше не было:
Конструкция такая:
DO WHILE !EOF()
...
SKIP
ENDDO
Так вот стала появляться ошибка: "Данные за пределами допустимого" (или что-то вроде этого). Я знаю, что можно написать обработку с IF EOF(), но это огромная программа, целый АРМ, где сплошь и рядом такие конструкции со SKIP. Можно ли с помощью какой-нибудь настройки Фокса решить эту проблему. Ведь раньше-то все работало! Может быть какую-нибудь SET-ку написать?
Буду очень благодарна за помощь!
...
Рейтинг: 0 / 0
05.05.2015, 10:39
    #38951499
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Возможно индекс попортился. Надо переиндексировать.

В такой конструкции
Код: sql
1.
2.
3.
4.
DO WHILE !EOF()
...
SKIP
ENDDO


не может быть этой ошибки. Если только внутри (в ...) еще раз SKIP не делается.
...
Рейтинг: 0 / 0
05.05.2015, 11:35
    #38951559
Fffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
В Фоксе есть конструкция

Код: vbnet
1.
2.
3.
Scan
...
EndScan


, которая все это заменяет.
...
Рейтинг: 0 / 0
05.05.2015, 11:36
    #38951560
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Dima T, дело в том, что из-под Фокса такой ошибки нет, а из ярлыка есть.
...
Рейтинг: 0 / 0
05.05.2015, 11:40
    #38951565
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Fffffffffffff, сделать дополнительную конструкцию - не проблема, если бы не масштабы исправлений. Непонятно вот что: ЕЩЕ МЕСЯЦ НАЗАД ВСЕ РАБОТАЛО И ТАКОЙ ОШИБКИ НЕ ВОЗНИКАЛО. Вообще АРМу несколько лет и не было проблем. А сейчас вдруг стала на этом месте возникать ошибка "Данные за пределами...".
...
Рейтинг: 0 / 0
05.05.2015, 11:41
    #38951571
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Dima T, если бы попортился индекс, то весь АРМ бы не стал работать.
...
Рейтинг: 0 / 0
05.05.2015, 11:43
    #38951579
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZaus, может тогда табличку в студию? посмотрим
...
Рейтинг: 0 / 0
05.05.2015, 11:44
    #38951582
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZausDima T, дело в том, что из-под Фокса такой ошибки нет, а из ярлыка есть.
Добивайся повтора ошибки в фоксе.
Фокс и "ярлык" один и тот же код выполняют? Одни и те же таблицы используют?

Как уже написал: скорее всего дело в испорченных индексах.

PS нет таких SET которые подобную ошибку уберут.
...
Рейтинг: 0 / 0
05.05.2015, 12:01
    #38951626
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Dima T, а мог ли Фокс попортиться? Например, пропали dll-файлы из Widows...
...
Рейтинг: 0 / 0
05.05.2015, 12:06
    #38951635
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZaus, если бы дллки пропали, то оно бы вообще не запустилось. У вас либо данные запороты, либо индексы. Пальцем в небо: может, антивирь мешает?
...
Рейтинг: 0 / 0
05.05.2015, 12:14
    #38951654
Fffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Что вообще ярлык запускает?
...
Рейтинг: 0 / 0
05.05.2015, 12:17
    #38951659
Дед Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Может в таблицах появились записи помеченные на удаление? Нужно проверить статус SET DELETED, может по этой причине и выдает количество записей одно (вместе с помеченными на удаление), а при выборке оказывается другое. Так же перед выполнением команд DO WHILE, желательно установить указатель записи в начало таблицы командой GO TOP IN WorkAlias
...
Рейтинг: 0 / 0
05.05.2015, 13:08
    #38951719
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Fffffffffffff, в ярлыке прописан тока ехе-файл.
...
Рейтинг: 0 / 0
05.05.2015, 13:11
    #38951723
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Dima T, а у вас лично уже была такая проблема?
Я почему сомневаюсь в порче индексов, потому что остальная-то часть АРМа работает...
Может ли так испортиться индекс, что что-то работает, а что-то не работает?
...
Рейтинг: 0 / 0
05.05.2015, 13:12
    #38951726
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Дед Евгений, в этой таблице удаления не происходит. А GO TOP есть, как и положено.
...
Рейтинг: 0 / 0
05.05.2015, 13:58
    #38951784
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZausDima T, а у вас лично уже была такая проблема?
Я почему сомневаюсь в порче индексов, потому что остальная-то часть АРМа работает...
Может ли так испортиться индекс, что что-то работает, а что-то не работает?
Да - была, да - может так испортится что будет частично работать.

Надо решать проблему, а не доказывать что все работало и само-собой перестало. Чудес не бывает. Надо искать причину.

Если ошибка выходит на операторе SKIP то смотреть в какой таблице он выполняется, и какой индекс используется (если вообще используется). Дальше тест:
Код: sql
1.
2.
3.
4.
5.
6.
use BadTable
set order to BadIndex
go top
DO WHILE !EOF()
SKIP
ENDDO
...
Рейтинг: 0 / 0
05.05.2015, 14:43
    #38951817
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
Dima T, спасибо за помощь. Я обязательно попробую. А можно еще вопрос? Какой результат можно ожидать от теста?
...
Рейтинг: 0 / 0
05.05.2015, 14:56
    #38951831
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZausDima T, спасибо за помощь. Я обязательно попробую. А можно еще вопрос? Какой результат можно ожидать от теста?
Ту же самую ошибку.

Ситуацию можно легко смоделировать: взять таблицу, создать индекс, сделать копию индекса (.CDX), удалить одну запись, сделать PACK, вернуть ранее скопированный индекс.

Если при открытии не указывается полный путь до файла, то тут еще может быть что используется DBF (или CDX) не из базы, т.е. в путях поиска находится другой одноименный файл. Например в папке где лежит EXE.
...
Рейтинг: 0 / 0
05.05.2015, 14:58
    #38951835
alextashk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZaus,

Если ошибка вылезет - то нарушена целостность таблицы/индекса.
То что остальной АРМ работает - может он не обращается в конец таблицы.
...
Рейтинг: 0 / 0
06.05.2015, 13:43
    #38952617
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
alextashk, всем спасибо. Тема закрыта. Дело оказалось в том, что программа пошла по недоотлаженной ветке. Прошу прощения за беспокойство!
...
Рейтинг: 0 / 0
06.05.2015, 14:48
    #38952701
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход за пределы базы
ElenaZausДело оказалось в том, что программа пошла по недоотлаженной ветке.
Вместо
Код: sql
1.
2.
3.
4.
5.
6.
sele MyTable
go top
DO WHILE !EOF()
...
SKIP
ENDDO


лучше использовать
Код: sql
1.
2.
3.
4.
sele MyTable
Scan
...
EndScan


это тоже самое, только EndScan эквивалентен
Код: sql
1.
2.
3.
4.
5.
...
 if !eof()
   skip
 endif
enddo
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выход за пределы базы / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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