Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
Господа (и дамы разумеется) !! Есть проблема. Идед импорт из xx.txt файла в dbf НО !!! в txt в полях повторяющиеся значения не приведены. В итоге в таблице поля одной записи идут полностью со значениями, а несколько следующих без значений в некоторых полях. Для дальнейшей обработки нужны ВСЕ поля. Подскажите как при импорте проверять что если значение " ", то подставлять значение предидущей спроки. Заранее ВСЕМ благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 17:02 |
|
||
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
например так APPEND FROM MYFILE.TXT TYPE SDF FOR !EMPTY(MYFIELD1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 17:12 |
|
||
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
При импорте такого не сделаешь. Самое большее, что ты можешь сделать это просто не импортировать записи с пустыми значениями, о чем и написал Samir . Если же эти записи нужны, но вместо пустых значений надо ввести некое значение, то у тебя 2 варианта: -) Используя групповые команды импортировать файл как есть, а потом просканировать файл и заменить пустые значения на значения из предыдущей записи -) Отказаться от групповых команд импорта, а заливать файл построчно с символьным разбором (очень медленно) Скорее всего, ты используешь первый вариант. В этом случае имей в виду, что физически, записи всегда добавляются в конец файла. Т.е. логика будет примерно следующая Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 18:26 |
|
||
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
Ребята это все не подходит. Импорт "хитрый", файл неупорядоченный. Так что идет только на низком уровне - вид такой do while !feof(dsk) lstr=fgets(dsk) lst=1 leop=.f. if substr(lstr,хх,х)="ТТ" and substr(lstr,хх,х)="КК" && Найдено нач нов стр select MyFile do apprec replace Field1 with substr(lstr,хх,х) select RECV && Таблица с описанием параметров полей для импорта go top scan if lst#RECV.nst do while lst#RECV.nst lstr=fgets(dsk) if substr(lstr,хх,х)="ТТ" and substr(lstr,хх,х)="КК" leop=.t. =fseek(dsk,-len(lstr),1) exit endif lst=lst+1 enddo endif if !leop lval=alltrim(substr(lstr,RECV.ncol,RECV.sizer)) lfild=alltrim(RECV.marka) if RECV.marka="DDD" and empty(substr(lstr,уу,уу)) do while !feof(dsk) lstr=fgets(dsk) lval=alltrim(substr(lstr,RECV.ncol,RECV.sizer)) if !empty(substr(lstr,уу,уу)) exit endif enddo endif select MyFile replace &lfild with lval select RECV else exit endif endscan endif enddo Вот такто !! И ват эти самые "lval" повторяющиеся не занесены в сам исходный .TXT. А они жуть как нужны !!! ДА забыл что все это безобразие в VFP50 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 19:11 |
|
||
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
Так какие проблемы-то? Запоминаешь предыдущее значение (из предшествующей строки) и если текущее пустое, то подставляешь вместо него запомненное. Честно говоря, лень разбирать такой "слепой" код, но общая идея примерно такая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Разумеется, это работает, если в твоем текстовом файле строки не перепутаны. Т.е. строки с пустым значением означают именно то, что надо брать значение из первой непустой строки до текущей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2004, 00:58 |
|
||
|
Импорт из .TXT с дозаполнением
|
|||
|---|---|---|---|
|
#18+
Еще несколько идей. Может пригодятся: -) Если длина одной строки текстового файла не превышает 254 символа, то можно сначала загнать весь текстовый файл в премежуточную таблицу из одного символьного поля длиной 254 символа: CREATE CURSOR curFile (cText C(254)) APPEND FROM xx.txt TYPE DELEMITED Т.е. каждая строка текстового файла окажется записана в одну запись таблицы. Идея в том, что навигация и поиск по таблице осуществлять проще, чем в текстовом файле -) Если количество символов в одной строке больше, чем 254, то можно загнать текстовый файл в Memo-поле: CREATE CURSOR curFile (cText M) APPEND BLANK APPEND MEMO cText FROM xx.txt Далее использовать функции навигации по Memo-полям SET MEMOWIDTH TO 254 _MLINE MLINE() MEMLINES() Идея та же. Облегчить навигацию по строкам текстового файла -) Не обращать внимание на пустые значения полей в процессе заполнения таблицы. А вот по окончании заполнения пройтись по итоговой таблице и заполнить эти пустые значения данными из предшествующих записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2004, 19:22 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1595248]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 338ms |

| 0 / 0 |
