Shahkalpesh's answer это хорошо, если ваш двигатель базы данных поддерживает ALTER TABLE ALTER COLUMN. Если вы используете механизм базы данных Access (Jet .mdb, ACE .accdb и т. Д.), Вы можете использовать ALTER COLUMN, когда в ANSI-92 Query Mode (Jet 4.0 и Access 2002 и далее).
В прошлом я делал это так, используя код. Код ниже преобразует поле строки в double с плавающей запятой без использования ALTER COLUMN. Он создает новое поле с другим именем и правильным типом данных, копирует данные, удаляет исходное поле и переименовывает новое поле в исходное имя. Вы можете легко адаптировать это, чтобы сделать целое число длинным.
Dim fld As DAO.Field
' Cant just change the type of an existing field. '
' Instead have to create the new field with a temporary name, '
' fill it with the required data, delete the old MyField field '
' and then rename the new field. The renaming has to be done '
' with DAO - cant do it through SQL '
' Add TEMP_MyField field: required double field. Will be renamed later '
sSQL = "ALTER TABLE MyTable " & _
"ADD COLUMN TEMP_MyField DOUBLE NOT NULL "
dbDatabase.Execute sSQL, dbFailOnError
' Copy the MyField values to the TEMP_MyField field '
sSQL = "UPDATE MyTable SET TEMP_MyField = CDbl(MyField)"
dbDatabase.Execute sSQL, dbFailOnError
' Delete the original MyField field (the text field) '
sSQL = "ALTER TABLE MyTable DROP COLUMN MyField"
dbDatabase.Execute sSQL, dbFailOnError
' Need to refresh the TableDefs to make sure new field shows up '
dbDatabase.TableDefs.Refresh
' Get a reference to the temporary MyField field we just created '
Set fld = dbDatabase.TableDefs("MyTable").Fields("TEMP_MyField")
' Rename it to the final name we want it to have '
fld.Name = "MyField"
Это автоматический «обновить» инструмент, а не один раз задача – BrianH