2013-08-15 8 views
0

У меня есть база данных Access, которая требует ежемесячных обновлений из таблицы Excel. Электронная таблица имеет значимые заголовки столбцов, которые не соответствуют таблицам базы данных. Кроме того, мне нужно проверить, должны ли данные быть объединены или добавлены. Итак, я хочу получить набор данных из электронной таблицы, который я могу выполнить, и мой код решает, что делать с данными. Я мог бы создать временную таблицу в Access, которая точно соответствует структуре электронных таблиц, заполнить ее с помощью DoCmd.TransferSpreadsheet acImport, сделать мои вещи, а затем удалить.Загрузка ежемесячных данных в Access из Excel

Это самый простой метод, или я могу сделать что-то вроде:

strQuery = "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" _ 
    & Chr(34) & fromFile & Chr(34) & "].[sheet1]" 

Set rs = CurrentDb.OpenRecordset(strQuery) 

Этот код производит ошибку: не удается обновить. База данных или объект только для чтения

ответ

0

Я думаю, что это лучше, чтобы создать новую таблицу в доступе , а затем первым скопировать все первенствует данные в этой таблице то все будет работать нормально и быстро

ilan

0

Я думаю, вам нужно использовать ADO, а не набор записей DOA. ADO требует, чтобы вы добавили ссылку (если вы не используете позднюю привязку). Некоторые из свойств и методов ADO отличаются от DAO, например, нет метода .Edit в ADO.

Const adOpenStatic = 3 
Const adLockOptimistic = 3 
Const adCmdText = &H0001 

Set objConnection = CreateObject("ADODB.Connection") 
Set objRecordSet = CreateObject("ADODB.Recordset") 

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Data Source=C:\Scripts\Test.xls;" & _ 
     "Extended Properties=""Excel 8.0;HDR=Yes;"";" 

objRecordset.Open "Select * FROM [Sheet1$]", _ 
    objConnection, adOpenStatic, adLockOptimistic, adCmdText 

Do Until objRecordset.EOF 
    Wscript.Echo objRecordset.Fields.Item("Name"), _ 
     objRecordset.Fields.Item("Number") 
    objRecordset.MoveNext 
Loop 

Это было взято из Technet сайта MS, где вы можете получить более подробную информацию: http://technet.microsoft.com/en-us/library/ee692882.aspx

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