Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / End of file encountered / 11 сообщений из 11, страница 1 из 1
06.11.2006, 15:12
    #34107198
Asolka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Zdravstvuite, ni kak ne mogu spravitsia s oshibloj.
Est kursor, v kotorom nado izmenit dannije. Vot kod:
SELECT nr, nazvanije, schiot, suma FROM gruppa INTO CURSOR test
USE (DBF('test')) AGAIN IN 0 ALIAS test1
USE IN test
SELECT test1
GO TOP
DO WHILE !EOF('test1')
SCAN FOR papild1.gruppa = test1.nr
sum1 = sum1 + papild1.suma
ENDSCAN
REPLACE test1.suma WITH sum1
SKIP 1 IN 'test1'
ENDDO
GO TOP

Problema v tom, chto na SKIP vidajiot oshibku " End of file encountered ". Jesli ubrat SCAN ... ENDSCAN vsio rabotaet otlichno, bez suchka i zadorenki. Kak ukazat v kakoj tablice neobhodimo perehodit po dannim? Uze ne anju chto i probovat.
Zaranee spasibo.
...
Рейтинг: 0 / 0
06.11.2006, 16:01
    #34107253
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Какая версия Фокса? А то толи с 7-ки толи с 8-ки для SELECT-а добавилась конструкция ...INTO CURSOR test READWRITE и танцы с переоткрытием курсора не нужны

Ну а чтобы не влетало сообщение проверяй на EOF() перед последним SKIP

А ваще конструкция очено опасная - по умолчанию SCAN FOR это SCAN ALL FOR. И после ENDSCAN указатель уже стоит на EOF()
Лучше не скрещивать SCAN и DO WHILE - т.к. у каждого независимый механизм перемещения по записям и где ты окажишся в результате совместного их применения один бог знает.

Что делает твой код непонятно, но скорее всего ты потерял SELECT papild1

Как я понимаю хотелось чтото такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT test1
SCAN ALL
   SELECT papild1
   SUM papild1.suma TO sum1 FOR papild1.gruppa = test1.nr
   SELECT test1
   REPLACE test1.suma WITH sum1 
ENDSCAN
GO TOP
...
Рейтинг: 0 / 0
06.11.2006, 16:04
    #34107257
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Вместо SCAN ... ENDSCAN я бы использовал конструкцию DO WHILE... ENDDO - работает надежнее
...
Рейтинг: 0 / 0
06.11.2006, 16:14
    #34107270
Asolka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
U menia 6 FoxPro, poetomu variant READWRITE ne podhodit. Bolshoje spasibo za pomosch. Vsio poluchilos. Teper budu znat, chto SCAN vmeste s DO...WHILE luchshe ne ispolzovat.
...
Рейтинг: 0 / 0
06.11.2006, 16:18
    #34107279
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Sergey ChВместо SCAN ... ENDSCAN я бы использовал конструкцию DO WHILE... ENDDO - работает надежнее
Это в случае вложеных циклов по одной таблице - тогда однозначно DO WHILE.
А если надо просто перебрать один раз записи то SCAN...ENDSCAN писать быстрее;)
...
Рейтинг: 0 / 0
06.11.2006, 18:00
    #34107464
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Burn А если надо просто перебрать один раз записи то SCAN...ENDSCAN писать быстрее;)
Просто я иногда терял по нескольку часов времени из-за некорректной работы SCAN...ENDSCAN , что "зарекся" его использовать даже в простых вещах
...
Рейтинг: 0 / 0
07.11.2006, 06:52
    #34108047
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Sergey Ch Burn А если надо просто перебрать один раз записи то SCAN...ENDSCAN писать быстрее;)
Просто я иногда терял по нескольку часов времени из-за некорректной работы SCAN...ENDSCAN , что "зарекся" его использовать даже в простых вещах

Удивлен. Может стоило один раз повнимательней почитать про то, как SCAN работает?
...
Рейтинг: 0 / 0
07.11.2006, 07:05
    #34108056
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
BurnЭто в случае вложеных циклов по одной таблице - тогда однозначно DO WHILE.
А если надо просто перебрать один раз записи то SCAN...ENDSCAN писать быстрее;)

Я бы не стал так категорично от SCANа отказываться даже в таких случаях.
например конструкция:
Код: plaintext
1.
2.
3.
do while <условие>
    * полезный код
    skip
enddo
полностью идентична такой:
Код: plaintext
1.
2.
scan rest while <условие>
    * полезный код
endscan
Я сталкивался только с одной задачей, где SCAN не применим: поиск добавленных/удаленных записей в двух копиях одной таблицы, там нужно одновременно по двум таблицам идти.
...
Рейтинг: 0 / 0
07.11.2006, 09:28
    #34108165
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Dima T Удивлен. Может стоило один раз повнимательней почитать про то, как SCAN работает?
Спасибо за совет...
...
Рейтинг: 0 / 0
07.11.2006, 10:56
    #34108395
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
Dima T
например конструкция:
Код: plaintext
1.
2.
3.
4.
do while <условие>
    * полезный код
    skip
enddo

полностью идентична такой:
Код: plaintext
1.
2.
3.
scan rest while <условие>
    * полезный код
endscan


В последнем варианте опция REST - лишняя (хотя и не мешает). Конструкция SCAN WHILE и так всегда работает от текущей записи и до тех пор, пока выполняется условие.
...
Рейтинг: 0 / 0
07.11.2006, 11:29
    #34108512
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
End of file encountered
>Я бы не стал так категорично от SCANа отказываться даже в таких случаях
А я и не советую категорично - тут дело привычки;) Но скажем так - вложеные SCAN-ы по одной табличке требуют большего внимания и понимания что на самом деле происходит... DO WHILE лично для меня понятнее
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / End of file encountered / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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