Я столкнулся со странным сценарием со следующим кодом в приложении vb6:
Private database As dao.Database
Set database = openDaoDatabase([some valid database location], False)
createDBField database, "Table", "FirstRow", dao.dbInteger, 0, "0"
Public Sub createDBField(targetDB As dao.Database, strTable As String, strField As String, dbType As dao.DataTypeEnum, Size As Integer, strDefValue As String)
Dim td As dao.TableDef
Dim fld As dao.field
Set td = targetDB.TableDefs(strTable)
Set fld = td.CreateField(strField, dbType, 0)
If dbType = dao.DataTypeEnum.dbText Or dbType = dao.DataTypeEnum.dbMemo Then fld.AllowZeroLength = True
If strDefValue <> "" Then fld.DefaultValue = strDefValue
td.Fields.Append fld
Set td = Nothing
Set fld = Nothing
End Sub
Когда я перехожу, все работает, и новое поле добавляется в базу данных. Однако, когда я просто запускаю приложение, база данных становится поврежденной из-за «несогласованности». Я добавил обработку ошибок и теперь получаю сообщение об ошибке: «Неопознанный формат базы данных: [путь]».
После поиска в базе данных Microsoft я нашел решение: http://support.microsoft.com/kb/238401. Я использую поставщика Microsoft.Jet.OLEDB.4.0, установил SP6 и имею ссылку на библиотеку объектов Microsoft DAO 3.6, но она все еще не рабочий!
Есть мысли?
Обновление:
td.Fields.Append Fld является виновником. После удаления всей автоматической обработки ошибок мне удалось отловить ошибку: «Ошибка времени выполнения 3343 Неопознанный формат базы данных». По какой-то причине я могу просто перешагнуть через это.