Wenn Sie Excel als Jet 4.0-Datenquelle verwenden, ist die beste Referenz, die ich kenne:
Verwenden von ADO mit Excel-Daten aus Visual Basic oder VBA .
Besonders wichtig ist, wie der gesamte Datentyp einer vorhandenen Spalte bestimmt wird, wenn sie gemischte Datentypen .
Was den Microsoft OLE DB-Provider für Jet 4.0 betrifft, ist der relevanteste Artikel dieser:
ADO-Provider-Eigenschaften und -Einstellungen: Microsoft Jet 4.0-Provider-Eigenschaften
Das heißt, das Excel-spezifische Detail wird in dem früheren Artikel besser behandelt.
Eine wichtige Frage, die Sie bei der Verwendung von Excel und SQL beachten sollten:
Welche Schlüsselwörter / Funktionen / Klauseln sind? verfügbar?
Was die Verwendung von Jet 4.0 SQL angeht, ist dieser Artikel der beste, den ich jemals gefunden habe:
SQL-Intermediate Microsoft Jet 4.0
Theoretisch sollte der SQL-Abschnitt der Access-Hilfe relevant sein ist von einer besonders niedrigen Qualität und Jet 4.0 leidet speziell unter schlechter Abdeckung.
Auch hier wird nicht alles direkt in Excel funktionieren. Obwohl Sie zum Beispiel CREATE TABLE
SQL DDL verwenden können, um ein neues Arbeitsblatt und eine neue Arbeitsmappe zu erstellen, können Sie keine NOT NULL
fähige Spalte erstellen, da dies physikalisch nicht möglich ist. Außerdem sind die Datentypen von Excel weniger granular, z. Die meisten numerischen Typen werden auf DOUBLE FLOAT
abgebildet.
Was Ausdrücke betrifft, die in SQL verwendet werden können, verwendet der Jet 4.0-Ausdrucksdienst irgendwie die VBA-Ausdrucksdienste. Grob gesagt kann Jet jede Funktion von VBA 5.0 (nicht die neueste Version, die VBA 6.0 ist) verwenden, die keine Methode ist, die Werte invalidiert, und return gibt nur einen einzelnen Wert von einfachen, intrinsischen Datentypen zurück (keine Arrays, keine Objekte, etc ). Ich denke, ich habe Recht, wenn ich sage, dass Microsoft niemals explizit eine endgültige Liste der VBA-Funktionen veröffentlicht hat, die von Jet 4.0 unterstützt werden. Ich glaube jedoch, dass eine Liste in dem folgenden Artikel genau mit der Liste der VBA-Funktionen übereinstimmt, die in Jet 4.0 verwendbar sind:
Konfigurieren von Jet 4.0, um die Ausführung unsicherer Funktionen in Access 2003 zu verhindern
(Die Liste befindet sich in einer Tabelle unter dem Unterpunkt "Verwenden von Sandbox-Modus-Operationen mit Jet 4.0 Service Pack 3 und höher".)
Beachten Sie, dass sich einige Funktionen in Jet 4.0 anders als in VBA verhalten. Von meinem Kopf her kann ich an zwei denken. IIF()
kann in Jet 4.0 abgekürzt werden (undokumentiert, AFAIK): In VBA werden sowohl TRUE
als auch FALSE
Bedingungen ausgewertet, in Jet 4.0 wird nur die übereinstimmende Bedingung ausgewertet. Die Funktion CDEC()
(in DECIMAL
umgewandelt) ist in Jet 4.0 gebrochen .
Wie schreibe ich Konstanten vom Typ date? Ich meine, der Ausdruck 2011.01.20 (dieser konstante Wert) in SQL, zum Beispiel, verwende ich '2011-01-20', oder # 2011-01-20 #, oder etwas anderes?
Ich weiß das als 'literaler Wert'.
Dies ist das gleiche wie VBA, also #m/d/yyyy#
, also wäre das heutige Datum #1/20/2011#
. Allerdings bevorzuge ich ISO 8601 Datumsformat und einfache Anführungszeichen (für Portabilität) und immer das Zeitfeld (weil Jet 4.0 hat nur einen temporären Datentyp, nämlich DATETIME
. Um sicherzustellen, dass regionale Einstellungen berücksichtigt werden, verwenden Sie die Funktion CDATE()
für die Funktion DATETIME
Das heutige Datum wäre CDATE('2011-01-20 00:00:00')
.
[Ursprünglich dachte das OP gemeint: "Wie erstelle ich eine Spalte vom Typ DATE
?"]
Sie können CREATE TABLE
DDL z.
Beachten Sie, dass, während Jet 4.0 den Datentyp DATETIME
berücksichtigt, keine solche Einschränkung vorhanden ist, wenn die Arbeitsmappe in Excel bearbeitet wird: Wenn die Tabelle Range
erweitert und nicht-temporale Daten hinzugefügt werden, dann wird der Datentyp ' gesehen 'von Jet 4.0 könnte sich als Ergebnis ändern.
Welche Schlüsselwörter / Funktionen / Klauseln sind verfügbar?
In Bezug auf die Liste der Funktionen habe ich die folgende Namensliste in der Datei MSMDCB80.DLL
gefunden:
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
Ihre Argumente und Beschreibung finden Sie hier
Jede Funktion arbeitet in meinen SQL-Abfragen, also denke ich, das ist eine umfassende Liste von 125 Funktionen.