Страницы: 1
RSS
Ошибка run-time error при использовании метода open объекта recordset, появилась ошибка run-time error '-2147217865(80040e37)' после перехода на excel 2016
 
Доброго дня, уважаемые форумчане!
Долго и нудно наковыряла  в рабочей таблице макрос для создания отчетов (их у нас тысяча, один повторяет другой, только "под разными углами").
Смысл (как я это понимаю) - создаю набор данных из основной таблицы (она у меня на листе "МНОГОЛЕТНИЙ"), затем SQL запросом выбираю необходимое, копирую на лист "отчет" (предварительно очистив). Потом уже ручками оформляю в служебки, докладные и т.д...
Все сломалось когда установили office 2016!
Я получила ошибку  run-time error '-2147217865(80040e37)'

Прошу вас подсказать что сломалось? Или в каком направлении копать..

Вложенный файл сократила по-максимуму :) , оставила 2 макроса:
"невыполненные" - это тот, что работал в предыдущей версии офиса. Остальные отличаются только запросом, удалила чтобы не путаться;
"на опыты" - в нем пробую все подряд))

Спасибо за Ваше внимание!!
 
Цитата
JadeenPo написал:
ADODB.recordset
JadeenPo, Вы полагаете, что из ТАКОГО названия понятна ЗАДАЧА?
 
Попыталась назвать тему так, чтобы люди с подобной проблемой смогли её найти .
Возможно, "ошибка run-time error при использовании метода open объекта recordset"?
Изменено: Надежда Потуткина - 02.05.2021 20:09:29
 
Уже поменял.
 
У вас не полный пример, поля, которые выбираются SQl запросом, отсутствуют. Можете приложить более полный пример?
 
Переделала. Именованный диапазон диапазон "график" переназначила.  
Изменено: Надежда Потуткина - 02.05.2021 23:54:49
 
Проверяйте
 
Артем, прошу подождать ответа до 11-12 мая!  Пока что на работу не попасть!
 
Надежда, у Вас база данных - это книга эксель, как в примере, или другая?
 
Сам файл весит очень большой. Я не смогла его уменьшить до 100кБ.
Я скопировала данные с основного листа в чистую книгу и скопировала туда же макросы.
Я смотрела Ваш пример - поменялся "provider". Как грамотные люди его выбирают? :)
 
Все строки подключения можно посмотреть на сайте https://www.connectionstrings.com/

Если будете подключать другую книгу, то нужно будет поменять путь до файла подключаемой книги.
 
Доброго дня! проверила!
В Вашем примере изменилось два момента:
1. подключение к книге
2. в запросе Вы убрали уточнение именованного диапазона "график" на листе "многолетний"
sSQLSting = "SELECT Объект,[Элемент первичной схемы] ,Наименование,Напр_кВ,Цикл_проверки_лет,Дата_НВ, пл" & strYear & ", г20" & strYear & " , вып" & strYear & " " _
                 & "FROM [многолетний$график]" _
                 & "WHERE г20" & strYear & " <> 'доп' and  вып" & strYear & " is  null  and [пл" & strYear & "] = #" & Format(a1, "mm\/dd\/yy ") & "# ;"

1. Ваш макрос работает, к книге подключается.
  Я проверила, если убрать "график" из запроса мои старые подключения тоже работают

2. на листе есть пустая строка (четвертая) - она оставлена для реализации "умного фильтра", подсмотренного на этом форуме
 лишние строки попадают в мою выборку (если удалить все условия из запроса) - не красиво, но жить можно!

3. Очевидно , что моя проблема зарылась все-таки в запросе - и именованный диапазон не распознает, и какая-то проблема в условиях (чуть позже в них поковыряюсь, сначала придется поработать).

Неужели при смене офиса меняется синтаксис SQL запроса??  8-0  
 
Попробуйте:

Код
sSQLSting = "SELECT Объект,[Элемент первичной схемы] ,Наименование,Напр_кВ,Цикл_проверки_лет,Дата_НВ, пл21, г2021, вып21 " _
                  & "FROM [многолетний$]" _
                  & "WHERE вып21 IS NULL OR вып21 = '' AND г2021 <> доп21 AND пл21 = #" & Format(a1, "mm\/dd\/yy ") & "# ;" 

Посмотрите файл, в нем с именованным диапазоном запрос

Изменено: artemkau88 - 11.05.2021 16:14:27
 
Все получилось!! :)
Артем, огромное спасибо Вам за помощь!!!! Да и всему проекту, форумчанам... за то, что делитесь такой полезной информацией!!! Ребята, вы- волшебники!!

Результирующее по проблеме:
достаточно было просто удалить имеющийся именованный диапазон и назначить заново! (причем, изменение/пересохранение имеющегося диапазона не помогало!)
 
Рад за Вас!

Если будете назначать именованный диапазон, то выбирайте область "Лист", а не "Книга", так как в запросе обращение идет к листу и соответственно к диапазонам листа.

То есть, например:

Код
SELECT * FROM [НазваниеЛиста$ИменованныйДиапазон]

В последнем сообщении, в примере макрос, который показывает диапазоны листов. Нашел на просторах интернета. Может Вам пригодится.
Изменено: artemkau88 - 11.05.2021 17:30:37
Страницы: 1
Наверх