|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.03.2011, 11:40 | #1 |
Новичок
Джуниор
Регистрация: 12.03.2011
Сообщений: 2
|
Перенос данных из Excel в Access: Automation error
Доброго времени, Уважаемые!
Помогите решить следующую проблему: Есть два файла: загрузчик (excel) и база данных (access). В Excel написан код (VBA) для передачи данных в Access. Задача кода – из файла xls копировать его содержимое в access при этом выполняется проверка – если в access уже есть такие данные, то они сначала удаляются, а потом перезаписываются новыми значениями. Код рабочий – проверял на работе )). Проблема: При переносе файлов на другие компьютеры с разными установленными Windows (XP, 7 и MS Office 2003 и 2010 – все лицензия) код не работает – выдается ошибка (бывают ее вариации): Run-time error "-2147467259 (80004005) Automation error Unspecified error" Методом имперического тыка установлено, что ошибка возникает при исполнении строки добавления данных в базу. Код следующий: Sub load() Dim x As Integer, i As Integer, dd As Date, str As String Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;D ata Source=C:\ db.mdb" cn.Open With Sheets("Data") For x = 2 To ActiveSheet.UsedRange.Rows.Count For i = 6 To ActiveSheet.UsedRange.Columns.Count + 1 dd = .Cells(1, i) If Not IsNull(.Cells(x, i)) And Len(.Cells(x, i)) > 0 Then str = "Delete * from tblResult Where Ticker='" & .Cells(x, 2) & "' and ID_Field='" & .Cells(x, 4) & _ "' and ID_Year=" & .Cells(x, 5) & " and format(DateI,'dd/mm/yyyy')='" & Format(dd, "mm/mm/yyyy") & "'" cn.Execute str str = "Insert Into tblResult(Ticker, Asset, DateI, ID_Field, ID_Year, ValueI ) " & _ " Values ('" & .Cells(x, 2) & "','" & .Cells(x, 3) & "',#" & Format(dd, "dd/mm/yyyy") & _ "#,'" & .Cells(x, 4) & "'," & .Cells(x, 5) & "," & .Cells(x, i) & ")" cn.Execute str End If Next i Next x End With End Sub Поля excel ID_TICKER ID_ASSET ID_FIELD ID_YEAR + даты Если есть возможность подсказать решение данной проблемы – буду благодарен. Файлы прилагаю. Спасибо! |
12.03.2011, 12:02 | #2 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Я думаю проблема с датами возникает,встречалось подобное.
Попробуйте такой вариант. Код:
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 12.03.2011 в 12:06. |
12.03.2011, 12:13 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
вот это Format(DD, "mm/mm/yyyy") Вас не смущает? там день не надо указать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
12.03.2011, 19:44 | #4 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Function DataSql(dt_sql As String)
DataSql = "#" & Replace(Format(CDate(dt_sql), "mm/dd/yyyy hh:nn:ss"), ".", "/") & "#" End Function всегда для SQL использую, и ни когда не подводила
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
24.03.2011, 23:34 | #5 |
Новичок
Джуниор
Регистрация: 12.03.2011
Сообщений: 2
|
Господа, прошу прощения за длительное отсутствие с ответом .
Проблема действительно заключалась в дате. Но конкретно не в фрагменте Format(DD, "mm/mm/yyyy"), как справедливо заметил IgorGo (это при переносе кода в форум – я допустил очепятку), а в формате представления дат. Решение оказалось довольно лаконичным – в панели управления после изменения формата представления дат (замена разделителя с точки на слэш). Логически размышляя - я так подозреваю, что решение данной проблемы на уровне кода было предложено R Dmitry – за что ему отдельное спасибо, но к сожалению, не являясь докой в VBA – я не смог сообразить в каком месте необходимо вызывать его функцию и как (было бы здорово если бы вы могли показать пример). Аналогично выражаю признательность doober’у за предоставленный код, но я также не смог сообразить в какой участок изначального кода его необходимо ставить. Надеюсь, что решения данной проблемы, представленные здесь будут полезны для форумчан. Спасибо Вам большое! |
25.03.2011, 00:28 | #6 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
и используйте в коде примерно так Код:
только не зная типов данных на 100 % не уверен
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Импорт-экспорт данных Excel-Access, и из Access-Excel | Людвиг | Microsoft Office Access | 3 | 27.10.2011 14:38 |
Периодическая ошибка Run-time error -2147417848 (80010108) Automation error в файле с макросом | faraviper | Microsoft Office Excel | 0 | 24.02.2011 16:23 |
ошибка при старте макроса "Automation error (Error 440)" | Дятел | Microsoft Office Excel | 7 | 29.11.2010 17:34 |
перенос данных из stringgrid в Access | 13Angel | БД в Delphi | 4 | 26.08.2009 11:11 |
перенос данных из Access в MS SQL Server2000 | ГОСЕАН | БД в Delphi | 5 | 28.12.2007 12:31 |