Всем привет! Ребят, подскажите, пожалуйста. Пробовал кто-то делать запросы с Join из ADODB (Excel) к SQL Server'у? Т.е. такой запрос (ниже) нормально работает с Аксессом, а вот переделать его на SQL Server у меня никак не получается.
Всем привет! Ребят, подскажите, пожалуйста. Пробовал кто-то делать запросы с Join из ADODB (Excel) к SQL Server'у? Т.е. такой запрос (ниже) нормально работает с Аксессом, а вот переделать его на SQL Server у меня никак не получается.
Запрос к SQL-серверу обрабатывается другим провайдером OLEDB/ODBC, к Jet не имеющим отношения Так что и коннект надо делать соответствующий (см. http://connectionstrings.com/) Скажешь версию сервера?
Запрос к SQL-серверу обрабатывается другим провайдером OLEDB/ODBC, к Jet не имеющим отношения Так что и коннект надо делать соответствующий (см. http://connectionstrings.com/) Скажешь версию сервера?AndreTM
Версия сервера SQL Server 2008 R2 (SP2) Подключение, которое выше – я привел просто для примера каким образом я делаю запросы к mdb. А вот с помощью этого подключения «Provider=SQLOLEDB.1; …» – я пытался сделать тот же запрос, только уже к базе на сервере. Но у меня ничего не вышло.
Вообще суть моего вопроса заключается в том, возможно ли взаимодействовать Экселем с SQL Server'ом? Интересуют такие манипуляции как: Join и Insert
Примерные запросы:
[vba]
Код
INSERT INTO SqlTab (Column1, Column2) SELECT Column1, Column2 FROM ExcelTab
[/vba]
[vba]
Код
SELECT * FROM ExcelTab AS t1 LEFT JOIN SqlTab As t2 ON (t1.Column1 = t2.Column1)
[/vba]
Версия сервера SQL Server 2008 R2 (SP2) Подключение, которое выше – я привел просто для примера каким образом я делаю запросы к mdb. А вот с помощью этого подключения «Provider=SQLOLEDB.1; …» – я пытался сделать тот же запрос, только уже к базе на сервере. Но у меня ничего не вышло.
Вообще суть моего вопроса заключается в том, возможно ли взаимодействовать Экселем с SQL Server'ом? Интересуют такие манипуляции как: Join и Insert
Примерные запросы:
[vba]
Код
INSERT INTO SqlTab (Column1, Column2) SELECT Column1, Column2 FROM ExcelTab
[/vba]
[vba]
Код
SELECT * FROM ExcelTab AS t1 LEFT JOIN SqlTab As t2 ON (t1.Column1 = t2.Column1)
суть моего вопроса заключается в том, возможно ли взаимодействовать Экселем с SQL Server'ом?
Возможности взаимодействия с любой СУБД определяются возможностями соответствующего провайдера OLEDB/ODBC для этой СУБД. Запросы при этом пишутся в синтаксисе того диалекта SQL, который поддерживается данной СУБД. И эти запросы могут быть невероятно сложными, подстраиваемыми практически под любой разработческий каприз (конечно, в рамках позволенного синтаксисом).
В качестве "среды запуска" провайдера может выступать любое приложение Windows, грубо говоря, допускающее программирование: хоть Excel, хоть Word, хоть Outlook, хоть VBscript, хоть отдельно компилируемая программа на C++. Никаких особых команд в Excel, ставящих его выше других, для работы с провайдерами нет. Правда, есть замечательная, истинно экселевская команда Range.CopyFromRecordset, позволяющая одним махом вставить на рабочий лист данные, возвращаемые запросом.
Цитата (LightZ)
Примерные запросы: INSERT INTO SqlTab (Column1, Column2) SELECT Column1, Column2 FROM ExcelTab
Так в Excel не получится, если под ExcelTab понимать некий диапазон на рабочем листе. Но получится использование однострочных операторов INSERT с явно заданными значениями: [vba]
Код
INSERT INTO SqlTab (Column1, Column2) VALUES (115, 'Вася')
[/vba] Причем подобные операторы можно конструировать как в коде VBA, так и формулами на рабочем листе, типа для C1:
Дальше из C1 можно скопиировать, хотя бы и вручную, и вставить в какой-нибудь Query Analyzer SQL Server'а и там исполнить.
А вот именно так, как вы написали, чтобы в одном запросе были и Excel, и SQL Server, можно сделать в Access. Для этого надо сначала присоединить таблицы Excel и SQL Server к файлу базы данных Access. После присоединения c этими таблицами можно работать как с таблицами "из одного хранилища". Разумеется, если нужны запросы действия (т.е. не только select), то должны быть обеспечены соответствующие права доступа.
Цитата (LightZ)
суть моего вопроса заключается в том, возможно ли взаимодействовать Экселем с SQL Server'ом?
Возможности взаимодействия с любой СУБД определяются возможностями соответствующего провайдера OLEDB/ODBC для этой СУБД. Запросы при этом пишутся в синтаксисе того диалекта SQL, который поддерживается данной СУБД. И эти запросы могут быть невероятно сложными, подстраиваемыми практически под любой разработческий каприз (конечно, в рамках позволенного синтаксисом).
В качестве "среды запуска" провайдера может выступать любое приложение Windows, грубо говоря, допускающее программирование: хоть Excel, хоть Word, хоть Outlook, хоть VBscript, хоть отдельно компилируемая программа на C++. Никаких особых команд в Excel, ставящих его выше других, для работы с провайдерами нет. Правда, есть замечательная, истинно экселевская команда Range.CopyFromRecordset, позволяющая одним махом вставить на рабочий лист данные, возвращаемые запросом.
Цитата (LightZ)
Примерные запросы: INSERT INTO SqlTab (Column1, Column2) SELECT Column1, Column2 FROM ExcelTab
Так в Excel не получится, если под ExcelTab понимать некий диапазон на рабочем листе. Но получится использование однострочных операторов INSERT с явно заданными значениями: [vba]
Код
INSERT INTO SqlTab (Column1, Column2) VALUES (115, 'Вася')
[/vba] Причем подобные операторы можно конструировать как в коде VBA, так и формулами на рабочем листе, типа для C1:
Дальше из C1 можно скопиировать, хотя бы и вручную, и вставить в какой-нибудь Query Analyzer SQL Server'а и там исполнить.
А вот именно так, как вы написали, чтобы в одном запросе были и Excel, и SQL Server, можно сделать в Access. Для этого надо сначала присоединить таблицы Excel и SQL Server к файлу базы данных Access. После присоединения c этими таблицами можно работать как с таблицами "из одного хранилища". Разумеется, если нужны запросы действия (т.е. не только select), то должны быть обеспечены соответствующие права доступа.Gustav
Gustav, спасибо. Т.е. если я правильно понял - можно сделать импортированную связанную xls-таблицу в Аксессе, и уже исходя из этой связанной xls-таблицы сделать добавление (Insert) в таблицу на SQL сервере?
Gustav, спасибо. Т.е. если я правильно понял - можно сделать импортированную связанную xls-таблицу в Аксессе, и уже исходя из этой связанной xls-таблицы сделать добавление (Insert) в таблицу на SQL сервере?LightZ
можно сделать импортированную связанную xls-таблицу в Аксессе
Можно:
ЛИБО импортировать таблицу Excel в Access и она в Access заживет самостоятельной жизнью - как новый (второй) экземпляр исходных данных, а исходная таблица Excel при этом останется в своей независимой жизни;
ЛИБО привязать таблицу Excel к файлу Access, при этом Access фактически будет подглядывать в Excel через предоставленное "окошко"; при этом все последующие изменения, вносимые в файл Excel, будут видны и в Access; но изменять исходные данные файла Excel из Access нельзя (хотя в ранних версиях можно было делать и это - потом Микрософт ужесточил и отрезал эту возможность)
Цитата (LightZ)
можно сделать импортированную связанную xls-таблицу в Аксессе
Можно:
ЛИБО импортировать таблицу Excel в Access и она в Access заживет самостоятельной жизнью - как новый (второй) экземпляр исходных данных, а исходная таблица Excel при этом останется в своей независимой жизни;
ЛИБО привязать таблицу Excel к файлу Access, при этом Access фактически будет подглядывать в Excel через предоставленное "окошко"; при этом все последующие изменения, вносимые в файл Excel, будут видны и в Access; но изменять исходные данные файла Excel из Access нельзя (хотя в ранних версиях можно было делать и это - потом Микрософт ужесточил и отрезал эту возможность)Gustav
каким образом менять данные в SQL таблицах через Аксесс?
ну это Гуглу лучше задать вопрос, я сам этим давненько занимался - еще в связке Access 2000 и SQL Server 7, подзабыл подробности. Подозреваю, что что-то могло измениться; и, возможно, не в лучшую сторону... Т.е., конечно, в лучшую с точки зрения безопасности, и - наоборот с точки зрения разработчика.
Цитата (LightZ)
каким образом менять данные в SQL таблицах через Аксесс?
ну это Гуглу лучше задать вопрос, я сам этим давненько занимался - еще в связке Access 2000 и SQL Server 7, подзабыл подробности. Подозреваю, что что-то могло измениться; и, возможно, не в лучшую сторону... Т.е., конечно, в лучшую с точки зрения безопасности, и - наоборот с точки зрения разработчика.Gustav