Любые ссылки / руководства по SQL в EXCEL с Microsoft OLE DB Provider для Jet 4.0? - PullRequest
8 голосов
/ 19 января 2011

есть ли какие-либо ссылки / руководства по синтаксису SQL в EXCEL , связанные с поставщиком OLE DB Microsoft для Jet 4.0?

Например, как записать константы типа date?

Какие ключевые слова / функции / предложения доступны?

Ответы [ 2 ]

20 голосов
/ 19 января 2011

При использовании Excel в качестве источника данных Jet 4.0 лучший справочник, о котором я знаю, это:

Как использовать ADO с данными Excel из Visual Basic или VBA .

Особое значение имеет то, как определяется общий тип данных существующего столбца, когда он содержит смешанные типы данных .

Что касается поставщика Microsoft OLE DB для Jet 4.0,Наиболее релевантная статья такова:

Свойства и настройки поставщика ADO: Свойства поставщика Microsoft Jet 4.0

Тем не менее, детали, относящиеся к Excel, лучше рассмотрены в предыдущей статье.

Одна важная ошибка, о которой вы должны знать при использовании Excel и SQL:

BUG: утечка памяти происходит при запросе открытого листа Excel с использованием объектов данных ActiveX (ADO).

Какие ключевые слова / функции / предложения доступны?

Что касается использования Jet 4.0 SQL, эта статья лучшая из всех, что я когда-либо находил:

Средний Microsoft Jet 4.0 SQL

Теоретически, раздел SQL справки Access должен быть актуальным, но он имеет особенно низкий уровень.качество nd Jet 4.0 особенно страдает от плохого покрытия.

Опять же, не все будет работать напрямую в Excel.Например, хотя вы можете использовать CREATE TABLE SQL DDL для создания новой рабочей таблицы и рабочей книги, вы не можете создать столбец NOT NULL, так как это физически невозможно.Кроме того, типы данных Excel менее детализированы, например, большинство числовых типов отображаются на DOUBLE FLOAT.

Что касается выражений, которые можно использовать в SQL, служба выражений Jet 4.0 каким-то образом использует службы выражений VBA.Вообще говоря, Jet может использовать любую функцию VBA 5.0 (не последнюю версию, являющуюся VBA 6.0), которая не является методом, который вызывает значения и возвращает возвращаемое единственное значение только для простых внутренних типов данных (без массивов, объектов и т. Д.).).Я думаю, что я прав, говоря, что Microsoft никогда не публиковала четкий список функций VBA, которые поддерживаются Jet 4.0.Тем не менее, я считаю, что список в следующей статье идеально совпадает со списком функций VBA, которые можно использовать в Jet 4.0:

Как настроить Jet 4.0 для предотвращения запуска небезопасных функций в Access 2003

(Список находится в таблице под подзаголовком «Использование операций режима песочницы с Jet 4.0 с пакетом обновления 3 (SP3) и более поздней версии».)

Обратите внимание, что некоторые функции в Jet 4.0 ведут себя иначе, чемв VBA.С головы до головы, я могу думать о двух.IIF() может ярлык в Jet 4.0 (недокументированный, AFAIK): в VBA оцениваются как условия TRUE, так и FALSE, в Jet 4.0 оценивается только соответствующее условие.Функция CDEC() (приведена к DECIMAL) в Jet 4.0 не работает .

как записать константы типа date?Я имею в виду способ выражения 2011.01.20 (это постоянное значение) в SQL, например, использовать ли я «2011-01-20», или # 2011-01-20 #, или что-то еще?

Я знаю это как «буквальное значение».

Это то же самое, что VBA, то есть #m/d/yyyy#, поэтому сегодняшняя дата будет #1/20/2011#.Тем не менее, я предпочитаю использовать ISO 8601 формат даты и одинарные кавычки (для переносимости) и всегда включать поле времени (потому что Jet 4.0 имеет только один временный тип данных, являющийся DATETIME) и, чтобы обеспечить региональныйнастройки соблюдаются, используйте функцию CDATE() приведение к DATETIME, например, сегодняшняя дата будет CDATE('2011-01-20 00:00:00').


[Первоначально мысль о ОП означала: «Как создать столбец типа DATE? "]

вы можете использовать CREATE TABLE DDL, например:

CREATE TABLE [Excel 8.0;DATABASE=C:\MyNewWorkbook.xls].MyTable 
(
 my_date_col DATETIME
);

Обратите внимание, что хотя Jet 4.0 будет учитывать тип данных DATETIME, такого ограничения нет, когдаРабочая книга редактируется в Excel: если таблица Range расширена и добавлены невременные данные, то тип данных, видимый Jet 4.0, может измениться.


7 голосов
/ 13 мая 2014

Какие ключевые слова / функции / предложения доступны?

Что касается списка функций, я нашел следующий список имен в файле MSMDCB80.DLL:

YEAR, WEEKDAY, VarType, Val, UCase$, UCase, TypeName, TRIM$, TRIM, TIMEVALUE, TimeSerial, Timer, TIME$, TIME, TAN, SYD, Switch, String$, String, StrConv, StrComp, Str$, Str, Sqr, Space$, Space, SLN, SIN, Sgn, SECOND, RTrim$, RTrim,Round, Rnd, RIGHTB$, RIGHTB, RIGHT$, RIGHT, RGB, RATE, QBColor, PV, PPMT, PMT, Partition, Oct$, Oct, NPV, NPER, NOW, MONTH, MIRR, MINUTE, MIDB$, MIDB, MID$, MID, LTrim$, LTrim, LOG, LENB, LEN, LEFTB$, LEFTB, LEFT$, LEFT, LCase$, LCase, IsObject, IsNumeric, IsNull, ISERROR, IsEmpty, IsDate, IRR, IPMT, INT, InStr, IMEStatus, IIF, HOUR, Hex$, Hex, Fv, Format$, Format, Fix, EXP, Error$, Error, DDB, Day, DATEVALUE, DATESERIAL, DatePart, DateDiff, DATEADD, DATE$, Date, CVErr, CvDate, CVAR, CSTR, CSNG, COS, CLNG, CINT, CHRW$, CHRW, CHRB$, CHRB, CHR$, CHR, Choose, CDBL, CDATE, CCUR, CBYTE, CBOOL, ATN, ASCW, ASCB, ASC, Array, ABS

Их аргументы и описание можно найти здесь

Каждая функция работает в моих SQL-запросах, поэтому, я думаю, это полный список из 125 функций.

...