2010-11-17 7 views
0

Я нашел это:Как преобразовать поле memo в текстовое поле в запросе доступа?

SELECT [PartsInfoRaw].[Types] as memofield, Replace([PartsInfoRaw].[Types],"","") AS textfield 
into newTable FROM [PartsInfoRaw]; 

где Типы является memofield в PartsInfoRaw, содержащий некоторое описание. Замена по какой-то причине преобразует memofield в текстовое поле. Но он чувствует себя взломанным, и я не уверен, может ли он перевернуть кислый. Кто-нибудь имеет лучшую идею?

+0

Почему, по вашему мнению, существует необходимость различать поле, возвращаемое как памятку или текст? Это потому, что вы используете запрос MakeTable? Если это так, вероятно, ваша проблема - запросы MakeTable не относятся к производственному приложению. Они полезны для быстрых и грязных целей, а также для создания временной таблицы, которая затем может быть повторно использована, но вам не нужно делать это регулярно в производственном приложении. Если вы повторно используете одну и ту же таблицу temp, вы можете установить типы данных для каждого поля так, как вам нравится. –

ответ

0

Вы протестировали это на записи [Типы], где функция replace вернет более 255 символов? Вы найдете некоторые из ваших [текстовых полей] данных, отрубленных.

Функция Replace возвращает строку, поэтому Access предполагает, что поле типа текста является подходящим.

Я не знаю, почему вам нужно использовать выбор в другом, чем это проще, чем создавать таблицу, удаляя все записи, а затем добавляя новые данные.

Попробуйте создать таблицу результатов, которую вы хотите в первую очередь, чтобы вы могли убедиться, что оба поля являются типом memo. Затем включите запрос в запрос добавления (вставить). Сначала вам нужно запустить запрос «Удалить», если вам нужны только результаты этого запроса в таблице newTable.

delete from newTable; 

Ваш запрос в Append:

Insert into newTable(memofield, textfield) 
SELECT [PartsInfoRaw].[Types] as memofield 
    , Replace([PartsInfoRaw].[Types],"","") AS textfield 
FROM [PartsInfoRaw]; 
4

Это не для меня ясно, что вы пытаетесь достичь, но вы пробовали Left ([MemoField], 255) в вашем ВЫБРАТЬ?

Смежные вопросы