У меня есть необработанные текстовые файлы финансов, которые я импортирую в Access 2010 и экспортирую в формат Excel. Эти файлы содержат несколько полей длиной 14 символов, которые представляют значения в долларах. У меня проблемы с преобразованием этих полей в валюту из-за 14-го символа. 14-й символ — это число, представленное скобкой или буквой. Он также определяет, является ли уникальное поле положительным или отрицательным значением.
Положительные числа от 0 до 9 начинаются с открывающей скобки { равной нулю, A равной единице, B равной двум,...I равной девяти.
Отрицательные числа от -0 до -9 (я знаю, что -0 - это математическая оплошность, но остановитесь на этом. Я не знаю, как еще это объяснить.) начинаются с закрывающей скобки } равно -0, J равно -1, K равно -2,... R равно -9.
Пример данных (все принадлежат одному полю/столбцу):
0000000003422{ преобразовано равно 342,20 долл. США
0000000006245} преобразовано равно -624,50 долл. США
0000000000210N преобразовано равно -21,05 долл. США
0000000011468D преобразовано составляет 1146,84 доллара США.
Вот запрос, с которым я работаю. Каждый раз, когда я его выполняю, все поле удаляется. Я бы предпочел придерживаться SQL-запроса, если это возможно, но я открыт для всех методов разрешения.
SET FIELD_1 = Format(Left([FIELD_1],12) & "." & Mid([FIELD_1],13,1) & IIf(Right([FIELD_1],1)="{",0,IIf(Right([FIELD_1],1)="A",1,IIf(Right([FIELD_1],1)="B",2,IIf(Right([FIELD_1],1)="C",3,IIf(Right([FIELD_1],1)="D",4,IIf(Right([FIELD_1],1)="E",5,IIf(Right([FIELD_1],1)="F",6,IIf(Right([FIELD_1],1)="G",7,IIf(Right([FIELD_1],1)="H",8,IIf(Right([FIELD_1],1)="I",9,"")))))))))),"$##0.00"), IIf(Right([FIELD_1],1)="}",0,IIf(Right([FIELD_1],1)="J",1,IIf(Right([FIELD_1],1)="K",2,IIf(Right([FIELD_1],1)="L",3,IIf(Right([FIELD_1],1)="M",4,IIf(Right([FIELD_1],1)="N",5,IIf(Right([FIELD_1],1)="O",6,IIf(Right([FIELD_1],1)="P",7,IIf(Right([FIELD_1],1)="Q",8,IIf(Right([FIELD_1],1)="R",9,"")))))))))),"-$##0.00")
Mid("0000000000210N", 13, 1)
возвращает 0.Mid("0000000000210N", 14, 1)
возвращает N, что, я думаю, вам действительно нужно. ПримечаниеRight("0000000000210N", 1)
даст вам N. - person HansUp   schedule 05.02.2015