powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чтение и одновременная запись в текстовый файл.
44 сообщений из 44, показаны все 2 страниц
чтение и одновременная запись в текстовый файл.
    #39833131
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как решить проблему одновременного чтения строк из текстового файла и пометкой данных строк в текстовом файле, как прочитанные?
Что бы не читать , случайно, второй раз.
Или это не проблема?
------------------------------------------------------------------------
Спасибо за ответ.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833134
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
регулярно читаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Set fso = CreateObject("Scripting.FileSystemObject")
 Set txt = fso.OpenTextFile("*******\99.txt", 1)
 Do While Not txt.AtEndOfStream
*
 nomp = Trim(txt.ReadLine)
*
Loop


Пока не понадобилось проверять....
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833149
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Что бы не читать , случайно, второй раз.При открытии файла как текстового потока для чтения указатель помещается в начало и при каждом чтении перемещается на начало непрочитанного хвоста. Сам он не смещается. Так что второй раз одно и то же не прочитаешь при всём желании - у него даже нет метода для перемещения указателя в направлении начала,- только если переоткрывать...
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833170
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Я имею ввиду в следующую загрузку.
То есть - после обеда загружальщика.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833175
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,

создали ФСО
Открыли файл
Читаем до конца...
а дальше - поясните - что происходит.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833180
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58а дальше - поясните - что происходит.Закрываем поток
Код: vbnet
1.
txt.Close
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833182
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833188
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833195
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Я имею ввиду в следующую загрузку.Пфф... тогда сохраняйте где-то количество уже прочитанных строк, и при следующем открытии SkipLines.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833213
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Понятно, что можно где-то сохранить.
А в самом файле отметить, в строке - это не вариант?
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833216
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58А в самом файле отметить, в строке - это не вариант?То есть изменение файла - процедура допустимая? да не вопрос - вот только как минимум придётся его открывать не как текстовый поток, а для произвольного доступа. При этом однозначно потеряв возможность встроенного парсинга на строки.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833230
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

мда ....
ятахател - прочёл строку и тут же отметку в конце строки написать(==прочитано==).
значит фигвам....
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833259
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно открывать файл с рандом-доступом и в вашем случае методами api или писать компоненты-обёртки, чтобы их использовать внутри акцеса
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833273
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
Спасибо.
Понятно.
То есть в моём случае - это безнадёжно.
Ну ладно. Буду искать выход.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833284
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833291
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58, может ты обрисуешь чего хочешь получить, а не как ты думаешь это получить

Так-то файл можно считать в память целиком даже средствами VBA без привлечения других сущностей. Далее его можно разбить на отдельные строки, работать с ними в любой последовательности, дописывать, удалять, добавлять. В конце переписать файл.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833292
час58, допустим "пометка", это спецсимвол в начале строки, например "#". А перевод строки в фыйле стандартный, т.е. vbCrLf. Тогда предлагаю вариант:
1. Читаете сразу все содержимое файла в переменную. Это можно сделать и средствами VBA, и FSO, и ADODB.Stream. После чтения закрываете файл.
2. Преобразуете текст в массив строк функцией Split v = Split(s, vbCrLf)
3. В цикле по массиву проверяете наличие "#". Если отсутствует - обрабатываете, затем дописываете "#" в начало строки. Пустые строки (могут быть в конце массива) игнорируете.
4. По завершении (или после обработки каждой строки) функцией Join преобразуете массив в текст s = Join(v, vbCrLf) и сохраняете в том же файле (замена содержимого).
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833301
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Или это не проблема?

Не проблема, первое решение которое пришло на ум:
Читая файл, сразу открывай второй на запись и пиши в него построчно первый плюс в конце строки своё (==прочитано==), клади файл рядом с тем же именем + _прочитано.txt

Ну а дальше варианты:
- оставлять оба файла
- убить читаемый, переименовать записанный в имя убитого прочитанного...
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833305
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургчас58, может ты обрисуешь чего хочешь получить, а не как ты думаешь это получить

Так-то файл можно считать в память целиком даже средствами VBA без привлечения других сущностей. Далее его можно разбить на отдельные строки, работать с ними в любой последовательности, дописывать, удалять, добавлять. В конце переписать файл.
Панург истину глаголит озвуч проблему.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833311
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58прочёл строку и тут же отметку в конце строки написать(==прочитано==).Это означает, что тебе придётся перезаписать половину файла - всё от места вставки (включая вставку) и до конца. Диск не резиновый, он жёсткий, и на нём файл не "раздвигается", чтобы принять в середину горсть байтов. А вот перезаписать байт по определённому смещению, не вставляя и не удаляя байтов - это попроще...
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833324
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
ситуёвина такова.

Данные из текстового файла читаются построчно в таблицу.
При считывании строк файла - всякое может произойти...
И хотелось бы при последующем считывании данного файла, уже не заносить данные, которые уже ранее занесены в таблицу.
То есть пропускать строки, которые уже прошли обработку.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833327
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это надо сравнение с табличными данными делать, а не файл импорта "портить"
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833328
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Сегодня Туда меня уже посылали.
Спасибо.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833331
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneтак это надо сравнение с табличными данными делать, а не файл импорта "портить"
Можно и так.
Но это, наверное дольше будет по времени.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833333
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,

Спасибо за вариант.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833347
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/open-statement

дерзайте
Спасибо.
я там был.
Не полегчало.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833352
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Панург,
ситуёвина такова.

Данные из текстового файла читаются построчно в таблицу.
При считывании строк файла - всякое может произойти...
И хотелось бы при последующем считывании данного файла, уже не заносить данные, которые уже ранее занесены в таблицу.
То есть пропускать строки, которые уже прошли обработку.Тут могут быть разные варианты. Например, писать в таблицу в транзакции, при том всяком, что может произойти, данные просто не сохранятся. И это наиболее правильный путь. ИМХО.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833356
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

А вариант когда при чтении файла - попадается битая(кривая, не соответствующая правилам, фиговая) строка, и прогу выкидывает в обработчик ошибок.
Прежние строки считаны в таблицу, а последующие ждут в смятении своей загрузки.
Шо робить?
Самое простое - загрузть файл ещё раз.
Вот тут-то и нужно пропустить уже загруженное и с исправленной строкой проглотить остатки файлика.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833358
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Шо робить?Сообщить пользователю, пусть принимает решение, исправляет и по новой. Либо игнорировать и писать дальше, ошибки логировать. Я бы предпочёл первое.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833359
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё зависит от данных и их количества
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833362
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может чё пропустил...
запоминать номер последней удачно загруженной, не?
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833364
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делал примерно по такой схеме в случае импорта построчно:
1) созданы специальнеые таблицы для импорта , как правило 2 (заголовок файла и содержимое)
2) при начале импорта записываются все данные в эти 2 промежуточные таблицы импорта
3) потом начинается построчный импорт из таблицы содержимого текущего импорта
4) если запись не сохраняется или неверный формат или другие проблемы, то данная строка помечается с ошибкой импорта (лог записывается или в файл и в специальную таблицу логов)
5) по окончании обработки всех строк импорта пользователю выдаётся результат - сколько строк импортировано, сколько ошибок и в каких строках или общая ошибкка импорта, если например файл не прочитался

написал вкрадце, там ещё куча нюансов и наворотов, уже сами можете добавить/придумать
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833370
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Да.
Так оно конечно всё правильно сделано.
Я искал лёгкие пути решения. непринуждённая пометочка в строке.
А это - да. так можно.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833375
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Смотри своство и методы TextStream.Line
Панург ссылку дал тебе.
Запоминай номер строки.
Может это спасёт?
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833377
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

да...
Ссылками завалили.
Буду разгребать.
Всем спасибо.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833389
час58Данные из текстового файла читаются построчно в таблицу.
Что ж там за содержимое, что его нельзя импортировать с помощью драйвера?
Покажите пример.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833393
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургвсё зависит от данных

Возможно здесь есть ключ к решению, например некоторый уникальный идентификатор строки (хотя бы в пределах даты или файла), по которому можно реализовать вот это

Konst_Oneтак это надо сравнение с табличными данными делать,

ТС так и ни привел ни одной строки данных и ни слова описания...
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833395
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,

да,
Извините заработался.
Данные такие:
Код: vbnet
1.
;1452;3366;21.50;
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833398
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолийчас58Данные из текстового файла читаются построчно в таблицу.
Что ж там за содержимое, что его нельзя импортировать с помощью драйвера?
Покажите пример.

С помощью драйвера нельзя потому, что каждую строку пробивают чеком через фискальный регистратор ( через кассу.)
Потому ошибки чреваты. Хотелось бы их исключить из работы "Кассира-оператора".
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833411
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58С помощью драйвера нельзя потому, что каждую строку пробивают чеком через фискальный регистратор ( через кассу.)
Потому ошибки чреваты. Хотелось бы их исключить из работы "Кассира-оператора".Ну так сперва импортировать всё, а потом проверить на корректность. И только корректные записи - печатать, явно некорректные - не печатать, остальные - запросить ручную корректировку.
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833417
час58Данные такие:
Код: vbnet
1.
;1452;3366;21.50;

Может логичнее загрузить файл в Ёксель - подрихтовать при необходимости - сохранить как XLS - выполнить импорт в таблицу?
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833424
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно полюбопытствовать, а о файле какого размера и на какое кол-во строк идет речь?
10, 100, 1000, 10000000.... строк?
идет борьба за простоту кода, скорость обработки, надежность ? :-)
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833462
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Данные такие:
Код: vbnet
1.
;1452;3366;21.50;



ну и что здесь что ?
21.50 - понятно - цена
а первые два значения что ?
связка из трех значений уникальна ?
...
Рейтинг: 0 / 0
чтение и одновременная запись в текстовый файл.
    #39833473
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Вообще то можно сделать проще (для этого)

час58каждую строку пробивают чеком через фискальный регистратор ( через кассу.)
Потому ошибки чреваты. Хотелось бы их исключить из работы "Кассира-оператора".

нужно просто во временной таблице вести протокол обработки файла:
- в начале чистим таблицу (счетчик-ключ лучше сделать свой принудительный)
- так как файл всегда читается одинаково (последовательно), то после обработки строки пишем в таблицу
протокола номер строки в файле и результат.
- соответственно на втором и последующем проходе по файлу в протоколе будет три исхода для каждой строки файла:
- строка в протоколе есть, результат положительный
- строка в протоколе есть, результат отрицательный
- строки в протоколе нет - строка не обрабатывалась совсем, до фискальника дело не дошло
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чтение и одновременная запись в текстовый файл.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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