In JET-SQL language you have to be more specific with the syntax and add the 'COLUMN' word in the 'ALTER TABLE' sentence. Exemple:
strSql = "ALTER TABLE MyTable ADD COLUMN MyField DECIMAL (28,3);"
strSql = "ALTER TABLE MyTable ADD COLUMN MyText TEXT(3);"
According to the Help, you can define a default value but I never tried it. This syntax is only valid with Access/JET database. I do not think it will work if you reach your access table through ODBC or ADO.
In such situations, you can change your database structure through other means. You'll find an example here. This was made with DAO object model but can be easily switched to common ADO object model to be used with an ADODB connection.
EDIT: one "implicit ADO solution" (meaning using the ADODB connection but not the ADO tables objects etc" can then be the following:
(for connection string examples, check here)
Dim myConnection AS ADODB.connection
set myConnection = New ADODB.connectionString
myConnection.connectionString = 'here is your connection string'
myConnection.open
myConnection.execute "ALTER TABLE myTable ADD Column MyField DECIMAL (12,3);"
myConnection.close
If you are working with the active mdb file, just write:
CurrentProject.Connection.Execute "ALTER TABLE myTable ADD Column MyField DOUBLE;"
That's it.
If you prefer to use ADO objects, please add ADOX library to your code source and use the Table.columns.append
method. You'll find an example here