powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / sql-запросы в экселе
11 сообщений из 11, страница 1 из 1
sql-запросы в экселе
    #39090664
sergeros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На листе имеется 2 "умных" таблицы, к ним нужно написать несколько sql-запросов.
Вопросы следующие:

1) Если в качестве источника указываю "умную" таблицу как диапазон (условно [Лист1$Диапазон]), то запрос работает, но при попытке использовать имя "умной" таблицы или задать MyRange = Worksheets("SQL").ListObjects("Tabl1").Range и затем в запросе в From использовать MyRange выдается ошибка "Объект не найден ядром базы данных Microsoft Office Access. Проверьте существование объекта и правильность имени и пути." В чем проблема?

2) Как правильно написать часть запроса, начинающуюся с From, когда необходимо выбрать в качестве источника данных несколько таблиц, и когда таблицы заданы видом [Лист1$Диапазон]?

Заранее спасибо за помощь.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39090789
sergeros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Со вторым вопросом разобрался, 1й все еще актуален
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39090979
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergerosСо вторым вопросом разобрался, 1й все еще актуален
У тебя в range Table1 не входит строка с названиями столбцов.
SELECT * FROM [MyRange] WHERE [Просрочка дней]=0 выбрасывает ошибку, т.к. нету никакого поля [Просрочка дней].
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39092089
sergeros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,

Так а разве range у listobject включает не всю таблицу вместе со строкой заголовков?
Да и ошибка выскакивает и при самом простом варианте ("SELECT * FROM [MyRange]") вне зависимости от значения параметра HDR.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39094801
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток
А имена умных таблиц вообще не входят в список имён книги :)
Можете проверить кодом
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Function IsAdoName(ByVal thisName As Name) As Boolean
On Error GoTo errHandle
    Dim pRange As Range
    Set pRange = thisName.RefersToRange
    IsAdoName = True
Exit Function
errHandle:
    IsAdoName = False
End Function
Public Sub TestNames()
    Dim pName As Name
    For Each pName In ThisWorkbook.Names
        Debug.Print pName.Name & " = " & IsAdoName(pName)
    Next
End Sub


А вообще, список имён листов и именованных диапазонов доступных для ADO лучше предварительно выяснять через такой код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub PrintTableNames()
    Dim pConn As Object, pRSet As Object
     
    Set pConn = CreateObject("ADODB.Connection")
    pConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES';"
     
    Set pRSet = pConn.OpenSchema(20)
    Do Until pRSet.EOF
        Debug.Print pRSet("TABLE_NAME").Value
        pRSet.MoveNext
    Loop
    pRSet.Close: pConn.Close
    Set pRSet = Nothing: Set pConn = Nothing
End Sub


Успехов.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39095140
sergeros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anvg,

Спасибо, я бы долго голову над этим ломал :) Можете объяснить, чем вызвана такая "несправедливость" (отсутствие имен умных таблиц в списке имен книги)? :)
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39096050
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergerosМожете объяснить, чем вызвана такая "несправедливость" (отсутствие имен умных таблиц в списке имен книги)?Для примера. Во вложении в файле pq.xlsx источники данных файла names.xlsx, полученные через Power Query. Понятно, почему динамический диапазон, возвращаемый формулой СМЕЩ, и указанный как именованная функция не видится (по коду выше RefersToRange - ошибка). Однако умная таблица вполне себе присутствует как источник данных.
Видимо, это связано с тем, что так работает "движок" Access, который собственно и анализирует источники данных книги. По каким-то причинам Microsoft не стал создавать код, для использования умных таблиц этим "движком". А почему - можно только лишь гадать или найти спеца среди разработчиков Office и выяснить - на каком основании опустили использование умных таблиц.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39097008
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL не понимает динамически вычисляемых величин диапазонов, т.к. сами вычисления размера производятся Excel-м, а не чем-то извне. Внутри файлов Excel размеры таких диапазонов ни в каком виде не хранятся - только формулы, на основании которых они вычисляются. И пока не запустить инструмент, который смог бы вычислить адрес динамически вычисляемого диапазона, ничего не получится. В SQL его, видимо, пока нет.
Таблицы вообще не являются чем-то относящимся к именам, если рассматривать иерархию зависимости объектов внутри книги - их просто можно видеть в Диспетчере имен. Не более. На деле это не что иное, как схема XML - возможно поэтому SQL их и не видит, т.к. они не перечислены в списке объектов, входящих в схему самой книги. В Диспетчере они отображаются, скорее всего из-за того, что к ним можно обращаться в формулах. Хотя и обращение в формулах тоже ведь своеобразное - именованный диапазон можно просто вписать в ячейку
Код: plaintext
=имя
и будет возвращено значение первой ячейки диапазона. В случае же с таблицей необходимо ввести такую формулу как формулу массива. Иначе получим ЗНАЧ.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39097155
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristТаблицы вообще не являются чем-то относящимся к именамИ что это доказывает? Power Query прекрасно видит имена умных таблиц что в текущей книге, что во внешних, и позволяет ими манипулировать.
То есть - это не физически не возможное действие, как с именованными формулами (допустим потому что такая формула может вернуть только какое-то числовое значение), а просто не желание Microsoft встраивать доступ к данным умных таблиц через "движок" Access. Я другого объяснения не вижу.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39097196
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvg,

а я разве что-то пытался кому-то доказать? :)
Я лишь пояснил почему возможно не видит. Power Query разбирает не только объекты внутри книги, но и остальные схемы XML, в которых среди прочего и таблицы преречислены.
Плюс не только Access же не видит. Но и некоторые другие провайдеры. Понятное дело, что дело в них. Поэтому я и написал:
The_PristИ пока не запустить инструмент, который смог бы вычислить адрес динамически вычисляемого диапазона, ничего не получится. В SQL его, видимо, пока нет
Видимо, неправильно с моей стороны было писать SQL, во избежание неверного толкования.
...
Рейтинг: 0 / 0
sql-запросы в экселе
    #39097290
sergeros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь, тему, я думаю, на данном этапе можно считать закрытой.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / sql-запросы в экселе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]