|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Здравствуйте! В excel-ом файле на каждом листе "Лист1" и 'Лист2" есть по одной таблице с подключением с MDX-запросом. На "Лист3" нужно вставить таблицу с подключением с SQL-запросом к этим двум листам. Нужно сделать внешнее соединение из этих двух таблиц. Логичнее было сделать так: обойтись без первых двух листов и вставить на лист таблицу с подключением с непосредственным SQL-запросом на сервер. Но такой возможности нет. Делаю так. Данные - Из других источников- Из Microsoft Query. Но фишка в том, что синтаксис Microsoft Query не совсем такой как SQL. Более капризный. Запутался там как делать внешнее соединение Для данной задачи нужно подключаться через Microsoft Query или можно подключаться по другому (через другой провайдер)? ADO не вариант, там ограниченный SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 14:41 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
В общем, сделал так В меню "Из других источников" - "С сервера SQL сервер" - выбираю любую базу данных, потом меняю свойства подключении и текст запроса. Вариант 1 В строке подключения ввел так Provider=Microsoft.ACE.OLEDB.12.0;Excel 12.0;Database=C:\Users\User\Desktop\СМ2.xlsm. Тип команды - SQL. Текст запроса Код: sql 1.
Выгрузились данные нормально. Захожу в свойства подключения и в строке подключения теперь другая запись Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source="";Mode=Share Deny None;Extended Properties="Excel 12.0;Database=C:\Users\User\Desktop\СМ2.xlsm";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False Теперь вставляю такой текст простого запроса с объединением Код: sql 1. 2. 3. 4. 5. 6.
Пишет, что ошибка в From. Вроде все по синтаксису написал. Вариант 2 Если в строке подключения написать Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\User\Desktop\СМ2.xlsm;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"" .Тип команды - SQL. И текст запроса Код: sql 1.
Данные выгружаются нормально. Захожу в свойства подключения и в строке подключения теперь также другая запись как в первом варианте. Если вставить такой текст запроса Код: sql 1. 2. 3. 4. 5. 6.
Пишет также, что ошибка в From. Что не так делаю? Может надо что в строке подключения изменить? Какой вариант подключения лучше использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2016, 09:00 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Доброе время суток Странно всё это. Попробуйте явно указать тип соединения INNER JOIN ferzmikkКакой вариант подключения лучше использовать?, а вот подключение лучше использовать ODBC . С OLEDB периодически возникают проблемы с блокировкой файла. При подключении запроса к самому себе, всё нормально, а вот с другими бывают проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2016, 21:12 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvg, вместо JOIN написал INNER JOIN - заработал. Потом FULL JOIN не работал. Использовал UNION - заработало. Похоже SQL к excel листам ограниченный. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 07:20 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgferzmikkКакой вариант подключения лучше использовать?, а вот подключение лучше использовать ODBC . Тут я не совсем понял. Код: xml 1. 2.
Это писать в строке подключения? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 07:42 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Потом FULL JOIN не работаДля обращения к листам Excel используется движок Access, а он года с 97, в плане SQL, не развивается. Там есть только Left Join, Right Join, Inner Join Тут я не совсем понял. Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=C:\MyExcel.xlsx; Это писать в строке подключения? Смотря как вы создавали подключение. В уже существующем, если не ошибаюсь, перейти с OleDb на ODBC не получится (не эксперементировал). А так да, по минимальному тексту подключения всё правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 09:13 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgСмотря как вы создавали подключение. В уже существующем, если не ошибаюсь, перейти с OleDb на ODBC не получится (не эксперементировал). А так да, по минимальному тексту подключения всё правильно Получилось. Делал так: в меню "Из других источников" - "С сервера SQL сервер" - выбираю любую базу данных, потом меняю свойства подключении и текст запроса. Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\Users\User\Desktop\СМ2.xlsm; Только потом excel изменил запись в подключении Provider=MSDASQL.1;Persist Security Info=True;Extended Properties="DBQ=C:\Users\User\Desktop\СМ2.xlsm;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;MaxBufferSize=2048;PageTimeout=5;" Тут фишка в том, что если этот файл будет открывать другой пользователь, то ему надо будет изменить строку подключения, а именно, изменить путь к файлу. Такая проблема только макросом решается, который в строке подключения меняет путь к файлу, или есть другие варианты решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 13:06 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Обратил внимание. Если в свойствах подключении ставить тип команды "По умолчанию" или "SQL", то таблица формируется. А если ставить "Таблица", то выходит такое сообщение ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 13:27 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Provider=MSDASQL.1;Увы, это слой с ODBC в OLEDB. Чтобы чистый ODBC получить делайте через MS Query, а потом точно также редактируете строку подключения. Такая проблема только макросом решается, который в строке подключения меняет путь к файлуУвы, да, макросом или "ручками". Можете, попробовать вариант с Power Query, там, используя, таблицу параметров, можно через функцию ЯЧЕЙКА("filename"; A1) в ней получить путь к файлу в котором выполняется запрос, а по нему сконструировать относительный путь к вашему файлу-источнику данных. "По умолчанию" или "SQL", то таблица формируется. А если ставить "Таблица", то выходит такое сообщение Естественно, вы же запрос помещаете. Оставьте только, например, [ИД1$], тогда будет и "Таблица" работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 17:35 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgProvider=MSDASQL.1;Увы, это слой с ODBC в OLEDB. Чтобы чистый ODBC получить делайте через MS Query, а потом точно также редактируете строку подключения. DSN=Excel Files;DBQ=C:\Users\User\Desktop\СМ3.xlsm;DefaultDir=C:\Users\User\Desktop;DriverId=1046;MaxBufferSize=2048;PageTimeout=5; Тип команды - SQL, но тут неактивно поле, то есть нельзя изменить. Если в свойствах подключении нажать на "Изменить запрос", то вылезает такое сообщение. Как можно изменить запрос в конструкторе? Почему кнопка "параметры" не активна? Даже бывает не активна, когда подключаешься к кубу. Как еe сделать активной? Какую роль играет файл подключения? В интернете мало информации на тему Создание подключений к excel листам, где прописаны такие тонкие логические нюансы ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2016, 07:39 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
ип команды - SQL, но тут неактивно поле, то есть нельзя изменить.При Odbc подключении другого и нет. А вам зачем? Я обычно для создания подключения пользуюсь такой заготовкой, а потом допиливаю подключение. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Успехов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2016, 22:27 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvg, Обнаружил такую фишку. В запросе присутствует 2 параметра и записываем их как знаками "?". Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Какой именно знак "?" соответствует для заданного параметра, определяется последовательность заданных параметров Set Параметр1 и Set Параметр2. Записывал в тексте параметры не как "?", а как "@Параметр1" и "@Параметр2". Но так почему то не работает. Как надо правильно записывать в тексте запроса разные параметры (без знаков вопросов)? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2016, 13:46 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Какой именно знак "?" соответствует для заданного параметра, определяется последовательность заданных параметров Set Параметр1 и Set Параметр2.По опыту использования по порядку следования. 1-ый параметр 1-ому ?, второй - второму. С другой стороны с глубокой вложенностью параметров не экспериментировал - есть ли приоритет параметра по положению в основном запросе ли или в подзапросе или главное порядковый номер ? в тексте SQL. Если установите то или другое, сообщите, пожалуйста. Именованных параметров в Access нет, увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2016, 16:09 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgесть ли приоритет параметра по положению в основном запросе ли или в подзапросе или главное порядковый номер ? Это пример простого запроса, на самом деле будет сложным. Разные таблицы на разных листах, в запросе присутствуют подзапросы, несколько параметров. Со временем будут изменяться столбцы, добавляться еще таблицы. Хотелось бы сделать запрос мобильным, чтобы потом легко дорабатывать. Конечно здесь не такого удобного конструктора как в 1С - СКД. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2016, 19:01 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Реально ли с помощью программы SQL Server Management Studio подключиться к excel-листу? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 11:58 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Подключиться не подключиться, а вот брать данные из закрытой книги вполне возможно. Using OPENROWSET to Read Excel Worksheets from SQL Server: Part 1 – How to Set Up the System , Импорт данных из Excel в SQL Server Успехов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 18:02 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Вот на двух первых листах присутствуют таблицы с подключением с MDX-запроса. На третьем листе делаю SQL-запрос к этим двум листам. Первые два листа обновляю, потом обновляю третий. После после обновления двух листов данные свежие. Потом обновляю третий лист, но данные берутся из двух листов, но которые были до обновления. Почему так происходит? Как исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2016, 18:17 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Даже если менять SQL-запрос, то все равно обращается к данным до обновления ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2016, 18:23 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Как сделать корректное обновление? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2016, 12:15 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Может надо параметры подключения изменить? DBQ=C:\Users\User\Desktop\СМ3.xlsm;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;ExtendedAnsiSQL=1;MaxBufferSize=2048;PageTimeout=5;ReadOnly=1; ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2016, 15:34 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Обратил внимание на следующее. Если обновить таблицы на первых двух листах с подключением OLAP с помощью MDX-запросов, то данные обновляются корректно. Если обновить лист с SQL-запросом к этим двум листам, то отображаются данные с листов до обновления. Если обновить таблицы на первых двух листах и программно создать лист с SQL-запросом к этим двум листам, то такая же проблема. Если добавить новый лист с таблицей с подключением OLAP и также программно создать лист с SQL-запросом, то также все. Если создать новый файл с такими же таблицами, то данные свежие. Но если в этом новом файле опять обновить данные на первых двух листах, то опять такая же проблема. Почему так происходит? Как сделать так, чтобы данные можно корректно обновлять без создании новых файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 16:25 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgДля обращения к листам Excel используется движок Access, а он года с 97, в плане SQL, не развивается. Там есть только Left Join, Right Join, Inner Join Может эту тему перенести в "Microsoft Access"? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2016, 07:30 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
Доброе время суток Извиняюсь, давно не заглядывал. Могу предположить следующее. Не эксперементировал. При обновлении запрос обращается не к текущей открытой книге, а к её версии на диске. Естественно, что там изменений нет. Поэтому, скорее всего стоит написать макрос, который сначала обновляет mdx запросы, сохраняет книгу, а затем обновляет запрос к листам с результатами mdx запросов. Скорее всего в настройках подключения mdx запросов стоит включить синхронное обновление, иначе сохранение может прервать их обновление, либо каким- то образом отслеживать факт завершения обновления. По RefreshAll есть толпа обсуждений, но, правда, законченного решения проблемы нет. Всё же там можно будет, найти что-то полезное по поводу асинхронного обновления. Успехов ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2016, 09:55 |
|
Подключение к excel-листам
|
|||
---|---|---|---|
#18+
anvgСкорее всего в настройках подключения mdx запросов стоит включить синхронное обновление, иначе сохранение может прервать их обновление Такая строка подключения Provider=MSOLAP.4;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=profit;Data Source=...;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error Что тут нужно дописать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2016, 11:43 |
|
|
start [/forum/topic.php?fid=61&msg=39243341&tid=2172918]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 435ms |
0 / 0 |