powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разделить текстовую таблицу
30 сообщений из 30, показаны все 2 страниц
Разделить текстовую таблицу
    #36900367
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Число______________Поле2___________Поле3_____Число2
------------ ------------------ ------------- ------
11111111111 текст текст текст еще еще еще 1.00
11111111111 текст текст текст еще еще еще 2.00
11111111111 текст текст текст еще еще еще 1.00

Такого типа таблица есть в текстовом файле. Ее можно разделить по столбцам в икселе. Но хочется автоматически в аксесе.
Проблема в том, что в поле2 и поле3 текст имеет пробелы, поэтому я не знаю, что выбрать в качестве разделителя. В икселе я использую фиксированную ширину столбцов.

Правда может помочь строка между названиями полей и данными полей. Пунктир, который покрывает полностью ширину любого поля и между пунктирами есть пробел. Можно ли как-то использовать этот пунктир для разделения этой таблицы на столбцы?
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36900371
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица съехала. На всякий случай:
поле "число" - 11111111111
поле "поле2" - текст текст текст
поле "поле3" - еще еще еще
поле "число2" - 1.00
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36900385
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
fedors1995В икселе я использую фиксированную ширину столбцов.
Что мешает сделать то же самое в Аксессе?
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36900734
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, ничего. Вчера так и сделал. Прилинковал текстовый файл с определенными параметрами. Теперь просто замещаю этот файл таким же с другими данными и все хорошо.
И каждый раз не приходится разбивать, так как данные одинаковые.
Думал автоматически через VBA смогу выбирать любой файл и он будет автоматически вставляться в таблицу. В принципе, и сейчас неплохо, но приходится менять название файла, с которым сейчас должен работать и обновлять данные.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36900749
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedors1995,

а у вас все текстовые файлы одной структуры?
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36900987
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
те, что нужны для этой задачи - да.
кстати, я понял, почему мне не нравится присоединять через стандартное разделение по полям. Сегодня на другом компьютере пробовал обработать файлы, но пришлось менять путь к прилинкованному файлу.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36901033
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedors1995,

какая кодировка у текстовых файлов......win-dos....
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36901085
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
win
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36901173
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
fedors1995те, что нужны для этой задачи - да.
кстати, я понял, почему мне не нравится присоединять через стандартное разделение по полям. Сегодня на другом компьютере пробовал обработать файлы, но пришлось менять путь к прилинкованному файлу.

а в целом, как выглядит задача ? почему вы "подменяете" этот файл всё время ?
вы куда-то подгружаете данные из этих тхт-файлов ? так ?

тогда, имхо, стоит один раз создать спецификацию,
и грузить используя DoCmd.TransferText, а сам файл выбирать обзором в файл-диалоге
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36901174
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedors1995,

линкую файл под условным именем схемы в определенном месте
и создаю запрос на него

в коде
filecopy исходн, имя_схемы
docmd.runsql запрос


если серия файлов
Код: plaintext
1.
2.
3.
4.
5.
6.
isx=dir(biblio & "\" & macka)
do while len(isx)> 0 
исходн=biblio & "\" & isx
filecopy исходн, имя_схемы
docmd.runsql запрос
isx=dir
loop

убрать конечно русский в коде-это для наглядности
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #36901372
fedors1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ё, да, подменяю потому, что файлы имеют порядковые названия: 1,2 и т.д. Объединить в один не могу, так как мне это будет неудобно. Грубо говоря, присоединяю файл, беру из него данные, анализирую, получаю, что мне нужно и все. А исходные данные пусть лежат в файлах.

Что касается DoCmd.TransferText и кода от Пенисионерки - сейчас буду пробовать. О результатах сообщу. спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Разделить текстовую таблицу
    #39213421
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет ребят!

У меня вот такая ситуация, Наша система экспортирует отчеты субъектов на такой форме. "Сергеев, Сергей, Сергеевич"

Нельзя ли в Accessе сделать так чтобы Имя Фамилия и отчество лежали в разных столбцах ?


Жду ответа как можно скорее.

За ранее спасибо, от души.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39213454
Aslonov MНаша система экспортирует отчеты Экспортирует куда? В текстовый файл? И в каждой строке данные в виде трех элементов с разделителем ","? И внутри элементов запятых нет?
Ну тогда в Аксе выполните вручную импорт или, при этом настройте и сохраните под каким-то именем спецификацию. В дальнейшем эту спецификацию можно использовать при импорте с помощью VBA.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39213467
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aslonov MНельзя ли в Accessе сделать так чтобы Имя Фамилия и отчество лежали в разных столбцах ?Можно. Делай...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Function ExtractPart(str As String, num As Integer, Optional delim As String = " ") As String
' Разделить строку str на части по разделителю delim и вернуть часть номер N
' Если N отрицательно - отсчитывать от конца.
' Несколько последовательных разделителей считать одним.
Dim temp As String
Dim tmp() As String
Dim n As Integer

Do
    temp = str
    str = Replace(str, delim & delim, delim, , , vbTextCompare)
Loop Until str = temp
tmp = Split(str, delim, , vbTextCompare)
n = UBound(tmp)
If n < Abs(num) - 1 Then
    ExtractPart = ""
ElseIf num < 0 Then
    ExtractPart = tmp(n + num + 1)
Else
    ExtractPart = tmp(num - 1)
End If
End Function
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39213492
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо большое, но я незнаю как это оставлять в запросах ..
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39213506
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov MAkina,

Спасибо большое, но я незнаю как это оставлять в запросах ..
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39213649
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем так много букфф ? (если я Вас правильно понял)
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215201
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Вот это уже другое дело ) Спасибо большое ) ) )
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215299
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M,

Ребят я просто не понимаю, Что я тут делаю не так ? почему на форму не работает (

Код: vbnet
1.
2.
3.
Public Function clname1(str As String, n As Byte)
clname1 = Split(str, ",")(n)
End Function
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215323
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет разделителя в поле. Размерность массива, формируемого сплитом 0.

Попробуйте так
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function clname1(str As String, n As Byte)
    Dim p
    If Len(str) = 0 Then clname1 = "": Exit Function
    p = Split(str, ",")
    If n > UBound(p) Then clname1 = p(UBound(p)) Else clname1 = p(n)
End Function
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215336
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уберите кавычки вокруг [a ] в вызове функции.
В функции опишите ее, что она возвращает.
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As String 
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215380
mds_world
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function clname1(str As String, n As Byte)
    Dim p
    If Len(str) = 0 Then clname1 = "": Exit Function
    p = Split(str, ",")
    If n > UBound(p) Then clname1 = p(UBound(p)) Else clname1 = p(n)
End Function

Т.к. велика вероятность передачи в функцию значения Null (пустое поле), аргумент str надо объявить как Variant и подправил здесь:
Код: vbnet
1.
    If Len(str & "") = 0 Then clname1 = "": Exit Function

.
Ну и обработчик ошибок для надежности.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215391
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое! А как быть если нету отчество у клиента? Например "Ханипов, Чамшед" и все
у некоторых клиентов такие данные, и функция дает ошибку на них
__MichelleУберите кавычки вокруг [a ] в вызове функции.
В функции опишите ее, что она возвращает.
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As String 
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215396
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aslonov M,

добавляю пустышки
Код: vbnet
1.
2.
3.
Public Function clname1(str As String, n As Byte)
clname1 = Split(str & ",,,,,", ",")(n)
End Function
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215397
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aslonov M,
гарантировано будет 5 полей, даже при пустой строке
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215401
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aslonov MСпасибо большое! А как быть если нету отчество у клиента? Например "Ханипов, Чамшед" и все
у некоторых клиентов такие данные, и функция дает ошибку на них Измените описание возвращаемого значения
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As Variant
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215421
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleAslonov MСпасибо большое! А как быть если нету отчество у клиента? Например "Ханипов, Чамшед" и все
у некоторых клиентов такие данные, и функция дает ошибку на них Измените описание возвращаемого значения
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As Variant

необязательно типизировать, значение возвращаемое функцией и так будет вариант.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215422
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое! Вы лучшие.
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39215792
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aslonov M... А как быть если нету отчество у клиента? Например "Ханипов, Чамшед" и все
у некоторых клиентов такие данные, и функция дает ошибку на них....Перед отсутствующим элементом должен быть разделитель. Иначе задача,по-моему, для всех возможных вариантов,не разрешима + ошибок не возникнет
Код: vbnet
1.
2.
3.
4.
5.
? my("пп,22,ханипов,чамшет-оглы,",2)
ханипов
? my("пп,22,ханипов,чамшет-оглы,",3)
чамшет-оглы
?my("пп,22,ханипов,чамшет-оглы,",4)
...
Рейтинг: 0 / 0
Разделить текстовую таблицу
    #39216226
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

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


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