![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
masterofmind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Доброго всем, вот столкнулся с такой вот проблемкой. Активно юзаю импорт данных для расчетов из баз данных в эксел, до сего момента все было нормально, но...
1. При попытке импорта данных из запроса в базе акцесс не вижу сам запрос, возможно это связано с тем что в запросе используюца связанные таблицы из разных баз, в т.ч. книга эксель, Эскуэль сервер и Эскуэль Линкед сервер с базой файрберд. Под не вижу подразумеваю, при подключении к базе в Экселе для импорта данных в списке данных таблиц и запросов нет... 2. Создал одбс источник на данную акцесс базу подключился к базе через одбц---таблицы и запросы вижу, но при импорте данных из необходимого мне запроса вываливает ошибку(" неопределённая функция Replace в выражении), как бороца с этим??? Я действительно использую эту функцию в запросе и без неё никуда.Как быть??? |
|||
|
||||
miptleha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
По поводу использования процедуры Replace в SQL запросе.
В Access такой запрос будет работать, а вот из OleDb (или ODBC) драйвера нет. Дело в том, что эта функция из Visual Basic, а не из SQL. В Access SQL есть набор элементарных функций работы со строками: Len(str) - длина InStr (str, substr) - индекс подстроки StrComp(str1, str2) - сравнение строк Mid(str, start, len) - извлечение подстроки Надо упростить запрос до этих элементарных функций. |
|||
|
||||
ss_sany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.12.2007 Репутация: нет Всего: нет |
Да согласен. Если запрос сложный, его "не видно" при импорте данных. Решение нашел следующее (где уже не помню) - использовать VBA для импорта данных. Смысл в том что они просто копироруются из запроса.
Sub Обновить_все_данные() Dim objAccess As Object Dim dB As Object Dim R As Object: Dim A As Range: Dim i As Long: Dim ii As Long: Dim j As Long: Dim jj As Long: Sheets("0").Select: ' выделяю лист, куда нужно перенести данные Cells.ClearContents: 'стираю содержимое Set objAccess = GetObject(ThisWorkbook.Path & "\Управление.accdb") 'указываю место расположения Базы Set dB = objAccess.Currentdb 'упрощаю ссылку на Базу Set R = dB.OpenRecordset("rep_PlanFactOchered_Администрация") 'упрощенная ссылка на нужный запрос With R 'переношу заголовки полей Базы For i = 0 To R.fields.Count - 1 Range("A1").Offset(0, i).Value = R.fields(i).Name Next i 'копирую базу Range("A1").Offset(1, 0).CopyFromRecordset R End With dB.Close End Sub |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Работа с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Работа с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |