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

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

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

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

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

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

тогда, имхо, стоит один раз создать спецификацию,
и грузить используя DoCmd.TransferText, а сам файл выбирать обзором в файл-диалоге
...
Рейтинг: 0 / 0
15.10.2010, 12:38
    #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
15.10.2010, 13:38
    #36901372
fedors1995
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
ё, да, подменяю потому, что файлы имеют порядковые названия: 1,2 и т.д. Объединить в один не могу, так как мне это будет неудобно. Грубо говоря, присоединяю файл, беру из него данные, анализирую, получаю, что мне нужно и все. А исходные данные пусть лежат в файлах.

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

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

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


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

За ранее спасибо, от души.
...
Рейтинг: 0 / 0
12.04.2016, 12:16
    #39213454
Разделить текстовую таблицу
Aslonov MНаша система экспортирует отчеты Экспортирует куда? В текстовый файл? И в каждой строке данные в виде трех элементов с разделителем ","? И внутри элементов запятых нет?
Ну тогда в Аксе выполните вручную импорт или, при этом настройте и сохраните под каким-то именем спецификацию. В дальнейшем эту спецификацию можно использовать при импорте с помощью VBA.
...
Рейтинг: 0 / 0
12.04.2016, 12:24
    #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
12.04.2016, 12:40
    #39213492
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
Akina,

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

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

Вот это уже другое дело ) Спасибо большое ) ) )
...
Рейтинг: 0 / 0
14.04.2016, 09:50
    #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
14.04.2016, 10:08
    #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
14.04.2016, 10:17
    #39215336
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
Уберите кавычки вокруг [a ] в вызове функции.
В функции опишите ее, что она возвращает.
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As String 
...
Рейтинг: 0 / 0
14.04.2016, 10:49
    #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
14.04.2016, 10:58
    #39215391
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
Спасибо большое! А как быть если нету отчество у клиента? Например "Ханипов, Чамшед" и все
у некоторых клиентов такие данные, и функция дает ошибку на них
__MichelleУберите кавычки вокруг [a ] в вызове функции.
В функции опишите ее, что она возвращает.
Код: vbnet
1.
Public Function clname1(str As String, n As Byte) As String 
...
Рейтинг: 0 / 0
14.04.2016, 11:01
    #39215396
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
Aslonov M,

добавляю пустышки
Код: vbnet
1.
2.
3.
Public Function clname1(str As String, n As Byte)
clname1 = Split(str & ",,,,,", ",")(n)
End Function
...
Рейтинг: 0 / 0
14.04.2016, 11:03
    #39215397
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить текстовую таблицу
Aslonov M,
гарантировано будет 5 полей, даже при пустой строке
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разделить текстовую таблицу / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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