База данных, над которой я работаю, имеет поле в одной таблице в виде текста, тогда как другая таблица имеет поле в числовом формате. Я не могу полностью изменить формат поля в базе данных. Поэтому мне нужно знать, как преобразовать поле из текста в число перед связыванием (или объединением) таблиц, чтобы вытащить данные.
TblCoachingDB.SourceID — это ТЕКСТ, тогда как tblCoachingDBSource.ID — NUMBER
2 ответа
1 Решение HansUp [2015-05-07 21:53:00]
Вы можете использовать CStr() для передачи числа в виде текста и JOIN в другое текстовое поле.
Вообще-то я не буду оставлять WHERE до тех пор, пока вы не подтвердите правильность работы JOIN .
Первоначально вы попросили JOIN , преобразовывая текстовое поле в число. Сначала я предложил текст, потому что я помню, что доступ был менее вероятным. Но моя память об этом шаткая, и если вы хотите иметь числовое значение для обеих сторон JOIN , посмотрите, какая из них (если есть) работает лучше всего для вас:
Примечание. Я предлагал это предложение только потому, что вы сказали нам, что вам не разрешено изменять структуру таблицы tblCoachingDB, чтобы вместо исходного типа SourceId использовать числовой тип. Поскольку вы не можете сделать это изменение, вам придется жить с воздействием производительности во время конвертирования типа данных в поле JOIN . Это нехорошо, но я не знаю, насколько это будет плохо. Удачи.
Мне нужно запустить запрос в массивной (650 МБ) таблице данных в MS Access 2010. Все типы данных для полей — это текст, но некоторые поля содержат все числа, даже если тип данных является текстом. Поэтому мне нужно преобразовать из текста в long int, чтобы выбрать, например, все записи, у которых значение больше 10 в указанном поле. Но всякий раз, когда я делаю это, я получаю ошибку несоответствия типа, предположительно из-за сравнения числового значения текстового поля. Вот SQL для запроса, который должен выбрать из полей, которые являются всеми типами текстовых данных.
Я попытался преобразовать тип данных поля в long integer в представлении дизайна, но операция завершилась неудачей с сообщением о том, что для выполнения операции недостаточно памяти.
Может ли кто-нибудь показать мне, как исправить код выше, чтобы он выбирал все записи, а значения больше 10, не бросая ошибку преобразования типа?
На этом шаге мы перечислим функции преобразования форматов .
Преобразование строки в число и обратно осуществляют следующими функциями.
Таблица 1. Преобразование строки в число и обратно
В качестве допустимого десятичного разделителя функция Str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr , указанную в конце этого шага.
Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format .
Функция Format возвращает значение типа Variant (String) , содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис:
При построении пользовательского числового формата возможно использование следующих символов.
Таблица 2. Символы, используемые в числовом формате
Кроме функций Val и Str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.
Таблица 3. Функции преобразования форматов
На следующем шаге мы рассмотрим функции обработки строк .
Источник: