|
|
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Мне нужно сделать импорт данных в Access-таблицу из текстового файла. Но в одной колонке таблицы есть переносы строк, и нужно, чтоб в Access-таблице эти переносы сохранились. В текстовом файле же строки разделяются переносом строк, столбцы - каким-то значком (пусть запятой). Может быть, есть какой-то спецсимвол, который следует вставить в текстовый файл на место переносов строк? Или какие-нибудь другие варианты решения этой проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:18 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
По-моему, никакого стандартного символа нет. Можно взять какой-нибудь произвольный символ, только чтобы он не встречался в данных, и после ввода заменить его в таблице на перенос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:24 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
1) ASCII коды символов: 10 - перенос строки 13 - возврат каретки Можно кусочек файла в студию? Меня терзают смутные сомнения, что придется писать свою функцию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:28 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Насчет 10 и 13 - самое надежное пользоваться сочетанием 13+10 (именно в таком порядке). Остальные варианты (10+13, только 10, только 13) могут быть неправильно поняты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:30 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Саныч, а почему именно в таком? Какая разница: что я сначала вернусь в начало строки, а потом перейду на новую; что я сначала перейду на новую, а потом вернусь в начало??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:32 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Это тебе какая разница. А MS думает иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:34 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Блин, ну и как же он думает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:34 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Может неправильно понять. Я не экспериментировал со всеми вариантами, но MS во всех примерах пишет именно 13+10. Кстати, ты знаешь, почему этих символов два? В пишущей машинке можно повернуть валик на 1 строку, оставшись на той же позиции (10), а можно сдвинуться в начало строки, оставшись на той же строке (13). В современных устройствах обе возможности отсутствуют, символ 10 не сохраняет номер позиции, а символ 13 не сохраняет номер строки. Рассуждая теоретически, достаточно писать только 10 или только 13, да и вообще между 13 и 10 никакой разницы нет. Однако ж - в некоторых эдиторах действительно достаточно поставить только 10 или только 13, чтобы произошел переход на новую строку, а в некоторых нет. В notepad'е, по-моему, надо ставить именно 13+10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:44 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Кусочек файла: --------------------------------------- Название поля 1, Название поля 2 x11, cтрока11 \n строка21 \n строка31 x12, cтрока12 \n строка22 \n строка32 x13, cтрока13 \n строка23 \n строка33 --------------------------------------- \n я обозначен перенос строки. Количество переносов всюду произвольно. Скажите, пожалуйста, а как Access дать понять, что это - ASCII - код? (Например, в html именованные коды символов начинаются с & и заканчиваются ; А здесь?) & ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:54 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
А здесь никак. После импорта придется запустить запрос, который заменит в этом поле все \n на vbCrLf. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2003, 23:56 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Это не только в некоторых старых устройствах. Биос так до сих пор работает. В текстовых режимах экрана (до 7-го включительно, если я не ошибаюсь), отправка в stdout (обычно монитор) 10-го символа сдвигает курсор на одну позицию вниз (или содержимое экрана на одну строку вверх, если курсор на 25-й строке), а 13-й символ перемещает курсор в первый символ строки. Аналогично до сих пор работают все принтеры, печатающие в текстовом режиме (да и в графике, кстати) - 10й символ, использованный в качестве команды, говорит принтеру, что следующие данные будут печататься на один сдвиг ниже (обычно это строка, но его можно заменить и на другое расстояние), а 13-й, что с начала строки. Исторически сложилось, что символы идут в порядке 13, 10. Почему - я не помню (не знаю). Но почти во всех текстовых файлах они идут именно так. Многие текстовые редакторы, встречая символ 13, ожидают следующим 10-й, если его нет, они показывают 13-й, не начиная новой строки. Аналагично, неожиданно встретив 10-й символ, они его просто показывают. Можно ждать неожиданных глюков, если обозначать новую строку иначе, чем символами 13 & 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 00:04 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Cпасибо, Владимир Саныч! Попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 00:06 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Geo, спасибо за поддержку и за пояснение про экран. Насчет почему именно 13+10, а не наоборот, - я думаю, что из-за механических пишущих машинок, у которых рычаг перевода строки выполняет сначала 13, а потом 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 00:19 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
2Гала И вот еще: раз уж ты пользуешься Сишной терминологией, то в Си (по крайней мере в старых, думаю и в новых версиях аналогично) "\n" означает именно последовательность 13 - 10, т.е. нормальный переход к новой строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 00:28 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Да, Geo, это я знаю, поскольку сейчас пишу в PHP+PostgeSQL, раньше - Perl и Cи. С Access дело не имела, потребовалось сделать сброс в него данных. Так что я здесь у вас гость... Вообще-то мне надо было данные в Excel cбросить, только я не нашла, как туда импорт делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 16:50 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
2Галя А почему бы тебе не создавать текстовый файл в стандартном формате, который все понимают? Не помню, как он называется, но выглядит, кажется, так: "ТекстовоеПоле1","ТекстовоеПоле2","ЧисловоеПоле1"; "аааа","бббб",123.45; "вввв","ггг",4321.00; Точно узнать его вид можно экспортом какой-нибудь таблички из экселя или акцесса в разные форматы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2003, 17:25 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Geo, я не поняла вопроса. Я ведь и создаю текстовый файл в стандартном формате. Отличие моего фрагмента файла (см. выше) от твоего - только в кавычках, но это не принципиально. А вообще - хороший у вас форум. Мгновенная реакция потрясает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 14:18 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
> только в кавычках, но это не принципиально. Как раз принципиально. Кавычки, запятые и т.п. - стандартный формат, который понимает и акцесс и ексель и многие другие программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 15:36 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Видимо, Geo пытается сказать, что если воспользоваться кавычками, то можно оставить переносы строк как есть. Например: "111", "222", "3 3 3", "444", "555" где третье поле состоит из трех троек с переносами между ними. Лично я не уверен, что оно так сработает. Мне кажется, что каждая строка будет все равно воспринята как отдельная запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 16:11 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
2ВС, Галя Виноват. Я невнимательно прочитал вопрос и почему то решил, что \n - разделители не то полей, не то записей. Тогда, как и говорил ВС, импортировать файл в акцесс а потом заменить в нужном поле (полях) "\n" на vbNewline. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 16:21 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч, то что Вы предлагаете, я пробовала с самого начала - не помогает. При импорте данных в Ассеss из текстового файла строки таблицы разделяются ТОЛЬКО ПЕРЕНОСОМ строк - здесь вариантов нет. Это первое. Второе - кавычки у меня могут встречаться внутри ячеек, как экранировать их для Access не знаю, поэтому я их не использую. И еще. Попробовала пойти от обратного - создать таблицу, в которой в каком-то столбце допускаются переносы строк, а потом экспортировать ее в текстовый файл. Не получилось. Нашла "Сервис/Параметры/Клавиатура/Переход при нажатии Enter" - установила в "Нет" (два остальных варианта "Cледующее поле", "Cледующая запись") - без толку. На самом деле для спецов по Access это должно быть элементарно - перенос строк в ячейках, но я не смогла найти, как это сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 18:28 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
> Второе - кавычки у меня могут встречаться внутри ячеек, как экранировать их для Access не знаю, поэтому я их не использую. А попробуй их сдваивать: здесь"кавычка -> "здесь""кавычка" Потом, у акцесса есть функции чтения файла (а-ля Read и Write). Можешь пользоваться ими, при создании файла для разделителей столбцов использовать какой-нибудь chr(1), записей - сhr(2). И программно читать этот файл и заполнять таблицу. Будет чуть медленнее, зато куда безотказнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 18:42 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Для Access 2000 и выше Я понимаю так: в файле можно оставить в качестве переноса строки комбинацию \n, после импорта файла в таблицу выполнить запрос update mytable set pole1=replace(pole1, "\n", chr(13)+chr(10),1,-1,1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 18:44 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
> то что Вы предлагаете, я пробовала с самого начала - не помогает. О чем речь? Если о том, что я написал в 16:11, то это была идея не моя и все сошлись на том, что работать это не будет. А если о том, что я написал 12 ноя 03 в 23:24, то это уже интересно. Почему не помогает, на каком этапе валится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 19:05 |
|
||
|
Перенос строк при импорте из текстового файла
|
|||
|---|---|---|---|
|
#18+
Галя писал:Вообще-то мне надо было данные в Excel cбросить, только я не нашла, как туда импорт делать Галя все очень просто: Запускаете Excel File->Open (выбираете тип файла txt,csv) имя вашего файла . После этого следуете подсказкам визарда. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2003, 19:40 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32322250&tid=1678238]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
328ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 657ms |

| 0 / 0 |
