Как добавить (?) Число в текстовое поле к '0'? - PullRequest
3 голосов
/ 08 марта 2012

У меня есть текстовое поле в Microsoft Access, которое состоит только из цифр.Я не знаю, предшествуют ли этим цифрам пустые символы или нет.

Что я хочу сделать, так это если в поле «1» я хочу преобразовать его в «0001», если в нем «89», то я хочу преобразовать его в «0089» и т. Д. Значение Iпросто хочу, чтобы поле соответствовало длине 4 символов и дополняло число соответствующим числом «0».

Как мне это сделать?Могу ли я использовать рассчитанный полевой подход?Я могу преобразовать базу данных в SQL, если у SQL есть простой способ сделать это.

Спасибо.

Ответы [ 3 ]

6 голосов
/ 08 марта 2012

Вы можете использовать функцию Format() для преобразования строки цифр.Format() не волнует, предшествуют ли цифры пробелам.

? Format("89","0000")
0089
? Format("    89","0000")
0089

Если вы хотите отобразить значения этих полей с этим форматом в запросе:

SELECT Format([YourTextField],"0000")
FROM YourTable;

Если вы хотите изменить способ их хранения:

UPDATE YourTable
SET [YourTextField] = Format([YourTextField],"0000");

Редактировать : @onedaywhen предложил использовать CHECK CONSTAINT или Validation Rule, чтобы ваша таблица принимала только действительные данные в будущем.Вот пример CHECK CONSTRAINT:

ALTER TABLE YourTable
ADD CONSTRAINT four_digits_required
CHECK (
    YourTextField LIKE '[0-9][0-9][0-9][0-9]'
    );

Этот оператор можно запустить из CurrentProject.Connection.Execute, который является методом объекта ADO.Операторы DDL с ограничениями CHECK могут выполняться только из ADO.Таким образом, вы не могли выполнить этот оператор из CurrentDb.Execute, который является методом объекта DAO.

В качестве альтернативы это должно работать для свойства правила проверки YourTextField:

LIKE "[0-9][0-9][0-9][0-9]"

Подход правила проверки такжепозволяют использовать свойство «Текст проверки» для отображения сообщения пользователю, когда отправленные значения недопустимы:

"4 digits required."

В этой ситуации подход «Текст проверки» аналогичен отображению имени ограничения CHECK, когда это ограничениенарушается.Однако, если вы хотите получить более подробное сообщение, текст проверки может быть лучшим выбором.

3 голосов
/ 08 марта 2012

Вы можете попробовать что-то вроде этого:

RIGHT('0000' + TRIM(column), 4)
1 голос
/ 08 марта 2012

Есть несколько вариантов, вот еще один:

Left("0000", 4 - Len(Cstr(Trim(column)))) & Cstr(Trim(column))

Иногда команда Len возвращает длину минус 1 с числовыми значениями, поэтому Cstr существует, чтобы избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...