|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
Задача такая формируется файл каждый раз в нем разное кол-во записей, необходимо разбить файл по 2000 записей. Т.е в одном файле не должно быть большее 2000 записей. Помогите никак не сображу как это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 16:59 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
dualshock2Задача такая формируется файл каждый раз в нем разное кол-во записей, необходимо разбить файл по 2000 записей. Т.е в одном файле не должно быть большее 2000 записей. Помогите никак не сображу как это сделать. *Пример DO WHILE !EOF() SCAN NEXT 2000 *Операции над данными ENDSCAN IF !EOF() SKIP ENDIF ENDDO ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 17:19 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
dualshock2Задача такая формируется файл каждый раз в нем разное кол-во записей, необходимо разбить файл по 2000 записей. Т.е в одном файле не должно быть большее 2000 записей. Помогите никак не сображу как это сделать. Допустим, имеем результирующую таблицу (курсор) TABLE0, которую нужно разбить по 2000 записей. Тогда можно так: SELECT TABLE0 NUMTABLES = CEILIUNG (RECC()/2000) && Считаем, солько у нас д/б файлов FOR I1 = 1 TO NUMTABLES GOTO (2000*(I1-1) + 1) OBJ1 = 'TABLE' + TRANSFORM(I1,@T) && ИМЯ ОЧЕРЕДНОЙ ТАБЛИЦЫ типа TABLE1, TABLE2... COPY NEXT 2000 TO &OBJ1 NEXT Не проверял на Фоксе, т.к. пишу "на коленях". Идея должна быть понятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 17:59 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
igorbik, Сканы, селекты... Это всё замечательно. А не проще ли Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Если я в деталях не ошибся. Образуется набор таблиц с именами NewTable1, NewTable2 и т.д. в каждой из которых по 2000 записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 19:09 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
rewareigorbik, Сканы, селекты... Это всё замечательно. А не проще ли При условии, что нет записей, помеченных как удаленные. Впрочем, это легко обходится, если первый раз скопировать ВСЕ записи, а потом разбивать результат этого первого прогона ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 20:08 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
Спасибо всем большое . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 20:22 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
ВладимирМ При условии, что нет записей, помеченных как удаленные. Впрочем, это легко обходится, если первый раз скопировать ВСЕ записи, а потом разбивать результат этого первого прогона Владимир всегда найдёт, за что зацепиться :)) Ну если ума хватает у программёра, так в COPY ... FOR добавить условие .AND. !DELETED(). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2010, 22:31 |
|
Необходимо разбить файл
|
|||
---|---|---|---|
#18+
Следует заметить, что COPY TO в процессе своего выполнения автоматически перемещает указатель записи на последнюю скопированную запись. Поэтому, можно все сделать проще Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Как уже говорил, использование команды GO - не надежно из-за возможного наложения не явного фильтра по SET DELETED или явного SET FILTER по каким-либо другим критериям. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2010, 00:03 |
|
|
start [/forum/topic.php?fid=41&fpage=94&tid=1585130]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 144ms |
0 / 0 |