access преобразование текста в число

Мне нужно запустить запрос в массивной (650 МБ) таблице данных в MS Access 2010. Все типы данных для полей — это текст, но некоторые поля содержат все числа, даже если тип данных является текстом. Поэтому мне нужно преобразовать из текста в long int, чтобы выбрать, например, все записи, у которых значение больше 10 в указанном поле. Но всякий раз, когда я делаю это, я получаю ошибку несоответствия типа, предположительно из-за сравнения числового значения текстового поля. Вот SQL для запроса, который должен выбрать из полей, которые являются всеми типами текстовых данных.

Я попытался преобразовать тип данных поля в long integer в представлении дизайна, но операция завершилась неудачей с сообщением о том, что для выполнения операции недостаточно памяти.

Может ли кто-нибудь показать мне, как исправить код выше, чтобы он выбирал все записи, а значения больше 10, не бросая ошибку преобразования типа?

База данных, над которой я работаю, имеет поле в одной таблице в виде текста, тогда как другая таблица имеет поле в числовом формате. Я не могу полностью изменить формат поля в базе данных. Поэтому мне нужно знать, как преобразовать поле из текста в число перед связыванием (или объединением) таблиц, чтобы вытащить данные.

TblCoachingDB.SourceID — это ТЕКСТ, тогда как tblCoachingDBSource.ID — NUMBER

2 ответа

1 Решение HansUp [2015-05-07 21:53:00]

Вы можете использовать CStr() для передачи числа в виде текста и JOIN в другое текстовое поле.

Вообще-то я не буду оставлять WHERE до тех пор, пока вы не подтвердите правильность работы JOIN .

Первоначально вы попросили JOIN , преобразовывая текстовое поле в число. Сначала я предложил текст, потому что я помню, что доступ был менее вероятным. Но моя память об этом шаткая, и если вы хотите иметь числовое значение для обеих сторон JOIN , посмотрите, какая из них (если есть) работает лучше всего для вас:

Примечание. Я предлагал это предложение только потому, что вы сказали нам, что вам не разрешено изменять структуру таблицы tblCoachingDB, чтобы вместо исходного типа SourceId использовать числовой тип. Поскольку вы не можете сделать это изменение, вам придется жить с воздействием производительности во время конвертирования типа данных в поле JOIN . Это нехорошо, но я не знаю, насколько это будет плохо. Удачи.

На этом шаге мы перечислим функции преобразования форматов .

Преобразование строки в число и обратно осуществляют следующими функциями.

Таблица 1. Преобразование строки в число и обратно

Функция Назначение
Val ( строка ) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа
Str ( число ) Возвращает значение типа Variant (String) , являющееся строковым представлением числа

В качестве допустимого десятичного разделителя функция Str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr , указанную в конце этого шага.

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

Функция Format возвращает значение типа Variant (String) , содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис:

При построении пользовательского числового формата возможно использование следующих символов.

Таблица 2. Символы, используемые в числовом формате

Символ Назначение
0 Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится 0, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль
# Резервирует позицию цифрового разряда. Отображает цифру или ничего не отображает. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится #, функция отображает эту цифру аргумента, если нет — в исходной позиции не отображается ничего. Действие данного символа аналогично действию 0, за исключением того, что лидирующие нули не отображаются
. ( точка ) Резервирует позицию десятичного разделителя. Указание точки в строке формата определяет, сколько разрядов необходимо отображать слева и справа от десятичной точки
% Резервирует процентное отображение числа
, Разделитель разряда сотен от тысяч
: Разделитель часов, минут и секунд в категории форматов Время (Time)
/ Разделитель дня, месяца и года в категории форматов Дата (Date)
E+, E-, e+, e- Разделитель мантиссы и порядка в экспоненциальном формате

Кроме функций Val и Str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Таблица 3. Функции преобразования форматов

Функция Тип, в который преобразуется выражение
CBool ( Выражение ) Boolean
CByte ( Выражение ) Byte
CCur ( Выражение ) Currency
CDate ( Выражение ) Date
СDbl ( Выражение ) Double
CDec ( Выражение ) Decimal
CInt ( Выражение ) Integer
CLng ( Выражение ) Long
CSng ( Выражение ) Single
CVar ( Выражение ) Variant
CStr ( Выражение ) String

На следующем шаге мы рассмотрим функции обработки строк .

Оцените статью