|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
На листе имеется 2 "умных" таблицы, к ним нужно написать несколько sql-запросов. Вопросы следующие: 1) Если в качестве источника указываю "умную" таблицу как диапазон (условно [Лист1$Диапазон]), то запрос работает, но при попытке использовать имя "умной" таблицы или задать MyRange = Worksheets("SQL").ListObjects("Tabl1").Range и затем в запросе в From использовать MyRange выдается ошибка "Объект не найден ядром базы данных Microsoft Office Access. Проверьте существование объекта и правильность имени и пути." В чем проблема? 2) Как правильно написать часть запроса, начинающуюся с From, когда необходимо выбрать в качестве источника данных несколько таблиц, и когда таблицы заданы видом [Лист1$Диапазон]? Заранее спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 01:20 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
Со вторым вопросом разобрался, 1й все еще актуален ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 09:53 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
sergerosСо вторым вопросом разобрался, 1й все еще актуален У тебя в range Table1 не входит строка с названиями столбцов. SELECT * FROM [MyRange] WHERE [Просрочка дней]=0 выбрасывает ошибку, т.к. нету никакого поля [Просрочка дней]. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 12:35 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
гр к, Так а разве range у listobject включает не всю таблицу вместе со строкой заголовков? Да и ошибка выскакивает и при самом простом варианте ("SELECT * FROM [MyRange]") вне зависимости от значения параметра HDR. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 14:48 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
Доброе время суток А имена умных таблиц вообще не входят в список имён книги :) Можете проверить кодом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
А вообще, список имён листов и именованных диапазонов доступных для ADO лучше предварительно выяснять через такой код Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Успехов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 05:46 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
anvg, Спасибо, я бы долго голову над этим ломал :) Можете объяснить, чем вызвана такая "несправедливость" (отсутствие имен умных таблиц в списке имен книги)? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 12:19 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
sergerosМожете объяснить, чем вызвана такая "несправедливость" (отсутствие имен умных таблиц в списке имен книги)?Для примера. Во вложении в файле pq.xlsx источники данных файла names.xlsx, полученные через Power Query. Понятно, почему динамический диапазон, возвращаемый формулой СМЕЩ, и указанный как именованная функция не видится (по коду выше RefersToRange - ошибка). Однако умная таблица вполне себе присутствует как источник данных. Видимо, это связано с тем, что так работает "движок" Access, который собственно и анализирует источники данных книги. По каким-то причинам Microsoft не стал создавать код, для использования умных таблиц этим "движком". А почему - можно только лишь гадать или найти спеца среди разработчиков Office и выяснить - на каком основании опустили использование умных таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 05:44 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
SQL не понимает динамически вычисляемых величин диапазонов, т.к. сами вычисления размера производятся Excel-м, а не чем-то извне. Внутри файлов Excel размеры таких диапазонов ни в каком виде не хранятся - только формулы, на основании которых они вычисляются. И пока не запустить инструмент, который смог бы вычислить адрес динамически вычисляемого диапазона, ничего не получится. В SQL его, видимо, пока нет. Таблицы вообще не являются чем-то относящимся к именам, если рассматривать иерархию зависимости объектов внутри книги - их просто можно видеть в Диспетчере имен. Не более. На деле это не что иное, как схема XML - возможно поэтому SQL их и не видит, т.к. они не перечислены в списке объектов, входящих в схему самой книги. В Диспетчере они отображаются, скорее всего из-за того, что к ним можно обращаться в формулах. Хотя и обращение в формулах тоже ведь своеобразное - именованный диапазон можно просто вписать в ячейку Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 20:44 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
The_PristТаблицы вообще не являются чем-то относящимся к именамИ что это доказывает? Power Query прекрасно видит имена умных таблиц что в текущей книге, что во внешних, и позволяет ими манипулировать. То есть - это не физически не возможное действие, как с именованными формулами (допустим потому что такая формула может вернуть только какое-то числовое значение), а просто не желание Microsoft встраивать доступ к данным умных таблиц через "движок" Access. Я другого объяснения не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 10:23 |
|
sql-запросы в экселе
|
|||
---|---|---|---|
#18+
anvg, а я разве что-то пытался кому-то доказать? :) Я лишь пояснил почему возможно не видит. Power Query разбирает не только объекты внутри книги, но и остальные схемы XML, в которых среди прочего и таблицы преречислены. Плюс не только Access же не видит. Но и некоторые другие провайдеры. Понятное дело, что дело в них. Поэтому я и написал: The_PristИ пока не запустить инструмент, который смог бы вычислить адрес динамически вычисляемого диапазона, ничего не получится. В SQL его, видимо, пока нет Видимо, неправильно с моей стороны было писать SQL, во избежание неверного толкования. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 12:45 |
|
|
start [/forum/topic.php?fid=61&msg=39097290&tid=2173297]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 135ms |
0 / 0 |