2017-01-16 5 views
0

Не уверен, что мне не хватает. Я пытаюсь перебрать все поля в таблице, и если какой-либо тип данных <> текст, то измените его на текст. У нас есть несколько полей, входящих в число, но вам нужно преобразовать их в текст перед экспортом в формате .txt. Я не могу добавить цитаты в поле - каждое поле должно содержать только числа и буквы.Пропустить все поля и изменить тип данных

Я пробовал следующее и использовал строку изменения db.execute для каждого поля, но я получаю время выполнения 3047 Запись Слишком большая синтаксическая ошибка после 6-го поля. Я предполагаю, что было бы лучше как-то петли проверить каждое поле и только изменить текст, если он еще не был?

Dim table As DAO.TableDef 
Dim db As DAO.Database 
Set db = CurrentDb 

db.Execute "ALTER TABLE ImportFromExcel " _ 
     & "ALTER COLUMN RPT_SPLIT_ID CHAR;" 
+0

Это единственная причина, по которой вы преобразуете нетекстовые поля в текст, потому что вам нужно экспортировать в .txt-файл? Если это так, я думаю, что это совершенно не нужно. Когда вы экспортируете номер 25 в текстовый файл, вы не можете сказать, просмотрев полученный текстовый файл, каков тип данных исходных данных. – Skippy

ответ

0

Самый простой способ - указать поле в виде строки в инструкции SELECT. Используйте функцию CStr(), чтобы использовать любое текстовое поле для текста. Когда это возможно, всегда старайтесь собирать данные со здоровым SQL-запросом, а не зацикливаться на наборах данных. Это может быть не заметная разница в меньших таблицах, но это имеет огромное значение для больших наборов записей. Попробуйте следующее:

SELECT CStr(field1), CStr(field2), CStr(field3) 
FROM ImportFromExcel 
+0

_whatever_ немного шире, поскольку 'CStr' не будет иметь значения _Null_. Однако 'Ltrim (Str ([field])) не будет. – Gustav

+0

Справедливая точка. Проклятье нулевых полей –

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