2015-02-23 4 views
0

Есть ли способ изменить тип поля DAO.Recordset в VBA?Как изменить тип поля DAO.Recordset

По какой-то причине интерпретатор evalueted набора записей поле типа 8 (DateTime), но мне нужно это поле, чтобы быть текст, как это должно быть

Я попробовал следующее:

rs.Fields(0).Type = 10 

, но это дает мне пункт не найдено в этой коллекции. ошибка.

Есть ли способ изменить тип конкретного поля в DAO.Recordset?

Edit1: Вот что я получил до сих пор

Private Sub doMagic() 
    Dim db as DAO.Database 
    Dim rs as DAO.Recordset 
    Dim sql as String: sql = "SELECT * FROM [Sheet1$] WHERE [Column1] IS NOT NULL" 

    Set db = OpenDatabase(ThisWorkbook.FullName, False, True, "Excel 8.0; HDR=Yes; IMEX=1;" 
    set rs = db.OpenRecordset(sql) 

    Dim updateSQL As String: updateSQL = "ALTER TABLE [Sheet1$] ALTER COLUMN [Column5] TEXT(100)" 

    ' I tried following, non of them working: 
    ' db.RunSql(updateSQL) - error: Metod or data member not found 
    ' db.Execute(updateSQL) - fails with error: Operation is not supported for this type of object. 
    ' DoCmd.RunSql(updateSQL)- error: Object required 
End Sub 
+0

Вам необходимо подать в суд на команду 'ALTER'. Вы не можете изменить такой тип. – PaulFrancis

+0

@PaulFrancis Можете ли вы предоставить мне пример, как это сделать? Я не могу найти примеры/документацию об этом – Kajiyama

+0

Just Googled: ** изменить структуру полей таблицы vba access **. Я получил это: https://msdn.microsoft.com/en-us/library/office/ff822825.aspx – PaulFrancis

ответ

0

Вы не можете изменить тип поля таблицы с DAO. Когда вы создаете набор записей DAO, определение поля доступно только для чтения. Чтобы изменить тип поля, вам нужно использовать запрос DDL (Data Definition Language), который является тем, что объясняет SQL-код link, что и вы обычно делаете. Что-то вроде,

DoCmd.RunSQL "ALTER TABLE yourTableName ALTER COLUMN yourColumnName TEXT(50)" 
+0

, когда я пытаюсь запустить эту команду, я получаю сообщение об ошибке: 424: «Object required» кажется, что мой DoCmd объект пуст – Kajiyama

+0

Ум, вы уверены, что отредактировали код в соответствии с вашими потребностями? Не могли бы вы показать строку кода, который вы используете? Возможно, обновите свой оригинальный пост? – PaulFrancis

+0

отредактирован - добавлен все способы, которые я пытался исправить – Kajiyama

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