Изменение данных в столбце

  • Автор темы Nerus
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

Nerus

#1
Добрый день гаспода Знатоки.
Помогите плз решить одну проблемму, я что то не как не догоняю как это по проще сделать хотя и сложно пока не знаю как сделать.
Есть БД (в Access или Excel) и столбец вот в такой форме:
1(4),1(66),1(67),1(69)
1(7),1(122)
1(5),1(122)
1(5),1(122)
1(6),1(122)
1(8),3(71),1(72),2(73),2(75),1(122)
1(2),1(122)
1(4),1(66),1(67),1(69),1(70),1(122)
1(3),1(122)
1(2),1(122)
1(5),1(122)
1(1),1(122)
1(5),1(122)
1(4),2(65),2(67),1(23),1(122)
1(5),1(122)
1(7),1(122)
1(6),1(122)
мне нужно цыфры в скобках заменить (для репорта) соответствующими словами.
Каждой цыфре в скобках соответствует определённая продукция, а цыфры без скобок это количество этой продукции.
Извените если что не грамотно, у меня с русским языком не очень хорошо .

Заранее спасибо
 
B

Barmutik

#2
Без предобработки я думаю это будет сложно .. а если перед построением отчёта парсить данные то задача решается достаточно легко...

В Экселе нужно написать кусочек кода на VBA.. а как сдлать это в аксесе перед построением отчёта ... пусть раскажут те кто его пользует :)
 
S

Shtirlitz

#3
А в каком виде ты бы хотел иметь результат?
 
S

Shtirlitz

#5
Начнем с решения задачки поменьше:
Вижу , что имеется разделитель "," :1(4),1(66),1(67),1(69)
В VBA есть функция instr("1(4),1(66),1(67),1(69)",","), Которая вернет позицию ","
Если организовать цикл, то эта строка , разобьется на лексемы:

1(4)
1(66)
1(67)
1(69)

В каждой лексеме теперь будем искать "(" по такому же принципу , но учтем ,что последний символ в лексеме ")" , применим функцию Mid и Len
Для 1й лексемы имеем 4

Далее , я полагаю имеется словарь (dictionary),в котором каждой цифре соответствует название предприятия,например, "Toshiba"
Меняем (4) на "Toshiba".
Имеем 1 "Toshiba".
И т. д.
Успехов
 
Статус
Закрыто для дальнейших ответов.