Я пытаюсь запросить определенное имя в области рабочего листа с SQL с помощью ODBC.Каково имя таблицы для определенного имени в области рабочего листа?
Я уже знаю, что это работает:
SELECT * FROM [worksheet1$] -- Query a whole worksheet
SELECT * FROM [worksheet1$A1:C10] -- Query A1:C10 of a worksheet
SELECT * FROM myname -- Query a workbook scoped defined name
Обратите внимание, что myname
это учебное пособие, а не область видимости WorkSheet область видимости.
я ожидал бы, что-то вроде в формулах Excel работает для имени таблицы ODBC, а также:
SELECT * FROM worksheet1!myname -- Query a worksheet scoped defined name
Однако это не работает, я попробовал некоторые варианты синтаксиса этого.
Возможно ли это, и если да, то какой синтаксис использовать?
Примечание для разработчиков Delphi: Синтаксис A1:C10
вызывает проблемы в TADOQuery
, вы должны установить ParamCheck
к False
для того, чтобы это работало.
Update:
Я использую Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
версии 12.00.6606.1000
, которая поставляется с Microsoft Office 2007
.
Я проверил, что компоненты базы данных Delphi Я использую ведут себя так же, как Microsoft Query и Microsoft Access 2007.
Предполагается, что '[workheet1 $ myname]' не работает? – eggyal
Вы пробовали это только от Delphi, или от одного из других продуктов MS Office? Например, MS Access? –
@eggyal Это работает, но только в версии 14 (и новее) драйвера ODBC, как я узнал из-за проб и ошибок. –