|
|
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Как программно перенести данные из текстового файла в dbf? Не прибегая к помощи мастера? Работаю на VFP 5.0. Примерное содержание текстового файлика: G444592,1,10011,3,,,,,,,608.59,4.91,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,613.5 G444591,1,5608,3,,,,,,,153.76,1.24,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,155 G444593,1,10152,3,,,,,,,478.26,11.76,02/08/05,002,440008,,,,,,,,,,,,,,,,,,198908,490.02 и т.д. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:45:44 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
почитай APPEND FROM FileName | ?[FIELDS FieldList] [FOR lExpression] [[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB | WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5 [SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:53:14 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
DenverКак программно перенести данные из текстового файла в dbf? Не прибегая к помощи мастера? Работаю на VFP 5.0. Примерное содержание текстового файлика: G444592,1,10011,3,,,,,,,608.59,4.91,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,613.5 G444591,1,5608,3,,,,,,,153.76,1.24,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,155 G444593,1,10152,3,,,,,,,478.26,11.76,02/08/05,002,440008,,,,,,,,,,,,,,,,,,198908,490.02 и т.д. Заранее благодарен. Как-как! Написать программу и запустить ее... Короче: 1. Открыть текстовый файл через fopen 2. Считать одну строку в переменную (при помощи fgets) 3. Распарсить строку на отдельные составляющие (ведь запятая = разделитель полей), которые поместить в соответствующие переменные 4. В dbf файл добавить запись посредством insert into..., где в value(...) будут стоять имена переменных. 5. Повторять п.п. 2-4 до достижения конца текстового файла... 6. Все открытое закрыть :) Только есть свои "НО": 1. порядок следования данных в текстовом файле должен строго соблюдаться. 2. Вкачать текстовой файл произвольного формата не получится. Надо каждый раз (для каждого нового порядка следования данных) "изобретать велосипед" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:54:35 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. в пятом нету GETWORDNUM(lcStr,1,',') . Тогда: Код: 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. 25. 26. 27. Т.о. в массиве будут соответствующие фрагменты строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:59:18 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
на функцию возвращает из строки с разделителем-запятая элементы ******************************************** para номер_элемента,символьная_строка retu_строка='' do case case номер_элемента=1 retu subs(символьная_строка,1,at(',',символьная_строка)-1) othe начальная_позиция=at(',',символьная_строка,номер_элемента-1) конечная_позиция =at(',',символьная_строка,номер_элемента) do case case начальная_позиция=0 retu '' case конечная_позиция=0 on erro true=.f. retu_строка=subs(символьная_строка,начальная_позиция+1) on erro if empt(retu_строка) retu_строка='' endif retu retu_строка othe on erro true=.f. retu_строка=subs(символьная_строка,начальная_позиция+1,конечная_позиция-начальная_позиция-1) on erro if empt(retu_строка) retu_строка='' endif retu retu_строка endcase endcase как страшно жить, посмотрю иногда , ну как навернут- блин бедная фокса если аппенд не хочешь, никого не слушай делай так считай filetostr и затем в цикле построчно функцией выдергивай и в таблицу поченное реплейсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:35:54 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
alex11100на функцию возвращает из строки с разделителем-запятая элементы ******************************************** как страшно жить, посмотрю иногда , ну как навернут- блин бедная фокса Действительно, настолько усложнить себе жизнь, это надо постараться Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Пример вызова Код: plaintext При желании, можно добавить в качестве третьего параметра собственно символ-разделитель (значение lcSeparator) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:31:21 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
я про аппенд там все есть нафиг файл дергать у него все с разделителями - лучше не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:36:11 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
alex11100я про аппенд там все есть нафиг файл дергать у него все с разделителями - лучше не бывает Да, самое разумное и простое - это APPEND FROM. Одной командой закачивается вся информация одновременно распределясь по полям. PS: функция FileToStr() появилась только в VFP6. В 5 ее не было (точнее, надо покопаться в FoxTools.fll, кажется, там уже была). Нужны другие способы получения строки (Memo-поле, FGETS()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:43:08 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
DenverКак программно перенести данные из текстового файла в dbf? Не прибегая к помощи мастера? Работаю на VFP 5.0. Примерное содержание текстового файлика: G444592,1,10011,3,,,,,,,608.59,4.91,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,613.5 G444591,1,5608,3,,,,,,,153.76,1.24,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,155 G444593,1,10152,3,,,,,,,478.26,11.76,02/08/05,002,440008,,,,,,,,,,,,,,,,,,198908,490.02 и т.д. Заранее благодарен. Как советовал alex11100 почитай и обрати внимание на DELIMITED Указывает, что файл-источник, из которого записи добавляются в текущую таблицу Visual FoxPro, является файлом с разделителями. Файл с разделителями - это текстовый ASCII-файл, в котором каждая запись заканчивается возвратом каретки и переводом строки. По умолчанию предполагается, что значения полей отделены друг от друга запятыми и символьные значения заключены в кавычки. Например: "Smith", 9999999, "TELEPHONE" А после этого и применяй эту команду. Или 1. Либо структуру таблицы в которую нужно записать приложи в топик. 2. Читай и внедряй другие советы. 3. Вообще надо как-то самому пробовать изобретать что-то. Это гораздо полезнее, если хочешь научиться программировать. А может это у тебя разовая работа, и больше никогда не вернешься к FOXу??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:45:14 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
alex11100почитай APPEND FROM FileName | ?[FIELDS FieldList] [FOR lExpression] [[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB | WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5 [SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage] DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5 Это как я понимаю типы файлов. А txt к какому из них относится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:10:30 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
SDF Задайте SDF, чтобы импортировать данные из файла System Data Format. Файл SDF ѕ это текстовый ASCII-файл, в котором записи имеют фиксированную длину и заканчиваются возвратом каретки и переводом строки. Предполагается, что файлы SDF имеют расширение имени .TXT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:17:35 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Владимир СА DenverКак программно перенести данные из текстового файла в dbf? Не прибегая к помощи мастера? Работаю на VFP 5.0. Примерное содержание текстового файлика: G444592,1,10011,3,,,,,,,608.59,4.91,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,613.5 G444591,1,5608,3,,,,,,,153.76,1.24,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,155 G444593,1,10152,3,,,,,,,478.26,11.76,02/08/05,002,440008,,,,,,,,,,,,,,,,,,198908,490.02 и т.д. Заранее благодарен. Как советовал alex11100 почитай и обрати внимание на DELIMITED Указывает, что файл-источник, из которого записи добавляются в текущую таблицу Visual FoxPro, является файлом с разделителями. Файл с разделителями - это текстовый ASCII-файл, в котором каждая запись заканчивается возвратом каретки и переводом строки. По умолчанию предполагается, что значения полей отделены друг от друга запятыми и символьные значения заключены в кавычки. Например: "Smith", 9999999, "TELEPHONE" А после этого и применяй эту команду. Или 1. Либо структуру таблицы в которую нужно записать приложи в топик. 2. Читай и внедряй другие советы. 3. Вообще надо как-то самому пробовать изобретать что-то. Это гораздо полезнее, если хочешь научиться программировать. А может это у тебя разовая работа, и больше никогда не вернешься к FOXу??? Да нет работа не разовая и очень интересная, просто с фоксом знаком 2 месяца всего. А вот насчет структуры... мне необходимо просто перегнать txt в dbf , поэтому структура будет как и сам текстовый файлик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:19:35 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
PaulWist SDF Задайте SDF, чтобы импортировать данные из файла System Data Format. Файл SDF ѕ это текстовый ASCII-файл, в котором записи имеют фиксированную длину и заканчиваются возвратом каретки и переводом строки. Предполагается, что файлы SDF имеют расширение имени .TXT. Огромное спасибо за подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:20:47 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
DenverА txt к какому из них относится? Он по другому задается. Факт наличия ключевого слова DELIMITED и является тем признаком, который указывает, что информация берется из текстового файла. В твоем случае надо дать команду Код: plaintext 1. 2. Разумеется, поля таблицы, в которую пойдет закачка должны быть физически расположены в том порядке, как предполагаемые значения в тектовом файле. Конвертация типов данных произойдет автоматически, если это возможно. Если это по каким-либо причинам конвертация в нужный тип данных невозможна, то будет сформировано пустое или нулевое значение для данного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:21:11 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
ну слава..., пришли к консенсусу , шалю я сегодня вчера хенеси попил старого пока не ругнешься - не пониме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:40:15 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Denver PaulWist SDF Задайте SDF, чтобы импортировать данные из файла System Data Format. Файл SDF ѕ это текстовый ASCII-файл, в котором записи имеют фиксированную длину и заканчиваются возвратом каретки и переводом строки. Предполагается, что файлы SDF имеют расширение имени .TXT. Огромное спасибо за подсказку. Только надо быть крайне внимательным! В приведенном фрагменте файла автор G444592,1,10011,3,,,,,,,608.59,4.91,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,613.5 G444591,1,5608,3,,,,,,,153.76,1.24,02/08/05,001,05211,,,,,,,,,,,,,,,,,,198907,155 G444593,1,10152,3,,,,,,,478.26,11.76,02/08/05,002,440008,,,,,,,,,,,,,,,,,,198908,490.02 этого (одинаковой длины строк) не наблюдается... Хотя, могут быть пробелы на концах... Поэтому надежнее - все-таки закачка "под контролем" с выделением отдельных значений из строки, явными преобразованиями и т.д... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:51:49 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Hi, Denver ! Т.к. ты не прислал структуру таблицы, пришлось сделать самому: Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Код: plaintext Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:58:44 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
длина - побарабану, главное колич-во запятых в строке тяни аппендом, затем меняй структуру его и сливай куда нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:59:09 |
|
||
|
Еще раз про txt-dbf
|
|||
|---|---|---|---|
|
#18+
Владимир САHi, Denver ! Т.к. ты не прислал структуру таблицы, пришлось сделать самому: Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Код: plaintext Код: plaintext 1. 2. Вот спасибо огромное :) Все прекрасно работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 14:41:57 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33306001&tid=1593345]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
196ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 471ms |

| 0 / 0 |
