2011-01-19 9 views

答えて

20

Jet 4.0のデータソースとしてExcelを使用する場合は、私が知っている最良の参照は次のとおりです。

How To Use ADO with Excel Data from Visual Basic or VBA

特に重要なのは、既存の列の全体のデータ型が、mixed data typesを含む場合にどのように決定されるかです。 Jet 4.0のためのMicrosoft OLE DBプロバイダーについては

、最も関連性の高い記事はこれです:

言っ

ADO Provider Properties and Settings: Microsoft Jet 4.0 Provider Properties

、エクセル固有の詳細は、より良い、以前の記事で覆われています。

ExcelとSQLを使用する際に知っておくべき一つの重要な落とし穴 :

BUG: Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects (ADO)

が用意されていますどのようなキーワード/機能/句?

Jet 4.0のSQLを使用してについては、この記事では、私が今までに見つけた最高です:理論的には

Intermediate Microsoft Jet 4.0 SQL

SQL section of the Access Helpは、関連する必要がありますが、それはparticularly low qualityとの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がJet 4.0でサポートされているVBA関数の明確なリストを明示的に公開したことはないという点で正しいと思います。

How to configure Jet 4.0 to prevent unsafe functions from running in Access 2003

(リストは小見出しの下の表にある「使用サンドボックスモードの操作:しかし、私は次の記事でリストはJet 4.0の中で使用可能なVBA関数のリストと完全に一致して起こると考えていますJet 4.0 Service Pack 3以降」を参照してください。

一部の関数は、Jet 4.0ではVBAとは異なる動作をすることに注意してください。私の頭の上から、私は2つのことを考えることができます。IIF()は、Jet 4.0(ドキュメント化されていない、AFAIK)でショートカットできます.VBAでは、TRUEFALSEの両方の条件が評価され、Jet 4.0では一致する条件のみが評価されます。 CDEC()(キャストto DECIMAL)機能はbroken in Jet 4.0です。

どのように日付型の定数を記述しますか? つまり、 2011.01.20(この定数値)をSQLで表現する方法は、 '2011-01-20'、または#2011-01-20#、または 何か他のものを使用しますか?

私はこれを「リテラル値」と認識しています。

これはVBAと同じです(#m/d/yyyy#)。したがって、今日の日付は#1/20/2011#となります。しかし、ISO 8601の日付形式と単一引用符(移植性)を使用することをお勧めします。また、(Jet 4.0には1つの一時的なデータ型があり、DATETIMEであるため)タイムフィールドを常に含めるようにしてください。 DATETIME関数今日の日付はCDATE('2011-01-20 00:00:00')となります。


[もともと "どのように私はタイプDATEの列を作成するのですか?"、OPは意味思考]

あなたが使用することができますCREATE TABLE DDL例えばジェット4.0 DATETIMEのデータ・タイプを尊重する一方、ブックがExcelで編集されないような制約がないこと

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

注:表Rangeが拡張され、非一時的なデータは、データタイプを追加した場合 'その結果、Jet 4.0による 'seen'が変更される可能性があります。


+0

date型の定数を書くと言うと、SQLで2011.01.20(この定数値)を表現する方法は、たとえば「2011-01-20」または#2011-01-20を使用します#、 または、他の何か? – deerchao

+0

#2011-01-20# – Juancentro

+0

ありがとう、それは非常に包括的なリンクリストです。私が追加するすべてのことは、.xlsbファイルはxlsmまたはxlsよりも悪いようです。間接的にデータを読み取ることは、ローカルの一時フォルダ内のcsvファイルにデータをダンプし、Jet Text ISAMを使用してデータを読み取ることです(厄介な場合)。 –

6

何キーワード/機能/句がありますか?機能のリストについては

、私は、ファイルMSMDCB80.DLLに次の名前のリストを見つけました:その引数と記述はすべての機能が私のSQLで働いているhere

を見つけることができ

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

これは125の関数の包括的なリストです。

+2

StackOverflow:2008年以降のベンダーの怠惰を補う – Filip

+0

SQLクエリで 'Array'を動作させることができませんでした。 'IIF'はVBAの' IIf'(短絡可能)とは異なる動作をします。あなたのリストに 'CDEC'の言及はありませんが、それでもSQLでは何も役に立たないのです! – onedaywhen

+0

あなたのリストは私の回答にリンクしているものと同じだと思う:https://support.microsoft.com/en-gb/kb/294698 – onedaywhen

関連する問題