Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите,функция для получения элемента из строки с разделителями
 
 автор: Seryoga204   (15.07.2008 в 01:18)   личное сообщение
 
 

Помогите.
По работе столкнулся с такой проблемой, при формировании отчетов. для автоматической печати заполненых бланков распоряжений. В таблице ODM.dbf есть строки с названием ASNTEXT,DATE,SUM все эти поля используются для заполнения, но поле ASNTEXT содержит информацию которая должна быть разбита на несколько полей для отображения в различных частях документа. Имеет формат типа
W;989;Иванова Светлана Петровна;ВВ625432;2840216080;03036637323; и так далее 10-15 строк в зависимости от дня с аналогичной структурой.
Мне нужно чтобы в форме отчета Иванова Светлана Петровна,ВВ625432 и 2840216080 отражались в отдельных полях.
Пожалуйста помогите, в аксесе пока не силен, так что можно по подробнее или в [пример на основании моих данных.
Заранее спасибо.

  Ответить  
 
 автор: ДрЮня   (15.07.2008 в 08:45)   личное сообщение
 
 

есть такая функция Split()
посмотрите для нее HELP

  Ответить  
 
 автор: Seryoga204   (15.07.2008 в 09:33)   личное сообщение
 
 

ДрЮня
Спасибо за ответ, но работу в аксес я только начинаю, использование функций для меня не совсем понятное. На многих сайтах встречается данная функция, но как ее использовать подробно нигде не написано . А мне бы на моем примере . Пожалуйста. Не судите строго чайника.

  Ответить  
 
 автор: Кабан   (15.07.2008 в 09:38)   личное сообщение
 
 

в хелпе обычно есть примеры(example)
если вы собираетесь писать программы, то на что вы надеетесь, если у вас нет желания найти ответ самостоятельно?

функция split разбивает строку, согласно разделителю, на элементы массива
к которым можно обратиться через индексы


?split("W;989;Иванова Светлана Петровна;ВВ625432;2840216080;03036637323;",";")(0)
W

?split("W;989;Иванова Светлана Петровна;ВВ625432;2840216080;03036637323;",";")(1)
989

?split("W;989;Иванова Светлана Петровна;ВВ625432;2840216080;03036637323;",";")(2)
Иванова Светлана Петровна


если вам непонятно что я написал, то вам следует начать с основ - с терминологии.
если вы не желаете изучаь инструмент, которым пытаетесь владеть, то грош вам цена :)

  Ответить  
 
 автор: Seryoga204   (15.07.2008 в 10:02)   личное сообщение
 
 

Я всегда решаю проблему самостаятельно, изучая от и до. Просто срок решения данной проблемы до завтра. Вот я обратился за помощью к вам.
Спасибо за ответ

  Ответить  
 
 автор: Кабан   (15.07.2008 в 11:06)   личное сообщение
 
 

:) сроки... как много в этом слове!

успехов, да :)

  Ответить  
 
 автор: Анатолий (Киев)   (15.07.2008 в 10:46)   личное сообщение
 
 


Function GetPartFromString(Text, Optional ByVal sSep As String = " ", Optional ByVal PartNum As Byte = 1) As String
On Error Resume Next
    GetPartFromString = Split(Text, sSep)(PartNum - 1)
End Function

Эту функцию положите в модуле (создайте новый на вкладке "Модули");
Создайте запрос на основе вашей таблицы, который будет использоваться в источнике отчета. В конструкторе выберите поля ASNTEXT,DATE,SUM, и добавьте еще три такого вида:
Первое: GetPartFromString([ASNTEXT]; ";" ; 3)
Второе: GetPartFromString([ASNTEXT]; ";" ; 4)
Третье: GetPartFromString([ASNTEXT]; ";" ; 5)
Эти поля будут возвращать Иванова Светлана Петровна,ВВ625432 и 2840216080 соответственно.
Успехов в освоении Access.

  Ответить  
 
 автор: Seryoga204   (15.07.2008 в 11:07)   личное сообщение
 
 

Анатолий
Все получилось.
Спасибо большое.
Напротив каждой фамилии есть строка с надписью "для выдачи", но попадаются строки с другим содержимым данной строки, так мне нужно распечатать только распоряжения на тех людей напротив которых стоит эта надпись, а остальные люди чтобы не входили в отчет? Если поможете спасибо.
И так сильно помогли. я б сам эту задачу так быстро не решил. Я бухгалтер а не программист. Но изучение Access, займусь в плотную, очень сильно он помогает в моей работе.
Все всем спасибо за помощь.

  Ответить  
 
 автор: Анатолий (Киев)   (15.07.2008 в 15:14)   личное сообщение
 
 

>Напротив каждой фамилии есть строка с надписью "для выдачи"
Примените к полю с этой строкой условие отбора LIKE "*для выдачи*"
Но правильно было бы иметь для этой цели логическое поле - надежнее.

  Ответить  
 
 автор: Seryoga204   (15.07.2008 в 16:36)   личное сообщение
 
 

Анатолий (Киев)
Спасибо. все получилось.

  Ответить  
 
 автор: Seryoga204   (15.07.2008 в 17:57)   личное сообщение
 
 

Анатолий (Киев)
Спасибо. все получилось.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList