Shahkalpesh's answer Ordnung ist, wenn Sie Ihre Datenbank-Engine ALTER TABLE ALTER COLUMN unterstützt. Wenn Sie das Access-Datenbankmodul (Jet .mdb, ACE .accdb usw.) verwenden, können Sie ALTER COLUMN in ANSI-92 Query Mode (Jet 4.0 und Access 2002 ab) verwenden.
In der Vergangenheit habe ich es so ganz durch Code gemacht. Der folgende Code konvertiert ein Zeichenfolgenfeld zu einem Gleitkommadoppel, ohne ALTER COLUMN zu verwenden. Es erstellt ein neues Feld mit einem anderen Namen und dem richtigen Datentyp, kopiert die Daten, löscht das ursprüngliche Feld und benennt das neue Feld in den ursprünglichen Namen um. Sie könnten dies leicht anpassen, um integer zu long zu machen.
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"
Dies ist eine automatisierte „Upgrade“ Werkzeug, nicht eine einmalige Aufgabe – BrianH