|
|
|
| Помогите.
По работе столкнулся с такой проблемой, при формировании отчетов. для автоматической печати заполненых бланков распоряжений. В таблице ODM.dbf есть строки с названием ASNTEXT,DATE,SUM все эти поля используются для заполнения, но поле ASNTEXT содержит информацию которая должна быть разбита на несколько полей для отображения в различных частях документа. Имеет формат типа
W;989;Иванова Светлана Петровна;ВВ625432;2840216080;03036637323; и так далее 10-15 строк в зависимости от дня с аналогичной структурой.
Мне нужно чтобы в форме отчета Иванова Светлана Петровна,ВВ625432 и 2840216080 отражались в отдельных полях.
Пожалуйста помогите, в аксесе пока не силен, так что можно по подробнее или в [пример на основании моих данных.
Заранее спасибо.
| |
|
| |
|
|
|
| есть такая функция Split()
посмотрите для нее HELP | |
|
| |
|
|
|
| ДрЮня
Спасибо за ответ, но работу в аксес я только начинаю, использование функций для меня не совсем понятное. На многих сайтах встречается данная функция, но как ее использовать подробно нигде не написано . А мне бы на моем примере . Пожалуйста. Не судите строго чайника. | |
|
| |
|
|
|
| в хелпе обычно есть примеры(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)
Иванова Светлана Петровна
|
если вам непонятно что я написал, то вам следует начать с основ - с терминологии.
если вы не желаете изучаь инструмент, которым пытаетесь владеть, то грош вам цена :) | |
|
| |
|
|
|
| Я всегда решаю проблему самостаятельно, изучая от и до. Просто срок решения данной проблемы до завтра. Вот я обратился за помощью к вам.
Спасибо за ответ | |
|
| |
|
|
|
| :) сроки... как много в этом слове!
успехов, да :) | |
|
| |
|
|
|
|
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. | |
|
| |
|
|
|
| Анатолий
Все получилось.
Спасибо большое.
Напротив каждой фамилии есть строка с надписью "для выдачи", но попадаются строки с другим содержимым данной строки, так мне нужно распечатать только распоряжения на тех людей напротив которых стоит эта надпись, а остальные люди чтобы не входили в отчет? Если поможете спасибо.
И так сильно помогли. я б сам эту задачу так быстро не решил. Я бухгалтер а не программист. Но изучение Access, займусь в плотную, очень сильно он помогает в моей работе.
Все всем спасибо за помощь. | |
|
| |
|
|
|
| >Напротив каждой фамилии есть строка с надписью "для выдачи"
Примените к полю с этой строкой условие отбора LIKE "*для выдачи*"
Но правильно было бы иметь для этой цели логическое поле - надежнее. | |
|
| |
|
|
|
| Анатолий (Киев)
Спасибо. все получилось. | |
|
| |
|
|
|
| Анатолий (Киев)
Спасибо. все получилось. | |
|
| |