2016-06-28 3 views
0

私はこの質問が何度か尋ねられていることを知っているが、私はこれは少しユニークだと思うMS Accessの日付を比較します。 私は、日付と比較する必要があるDateTimeフィールドがあるMS Accessデータベースを持っています。= '' 1/1/2016 '、または他の日付です。日付と比較するために日付> = '' 1/1/2016 '

SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs 

を次のように

私の基本的なクエリである、私は、私がDTIME> =#1/1/2016年の#

は問題がどこにあるかしなければならない知っています日付/時刻の比較は、実行中の別のソフトウェアに自動的に入力されるため、構文を変更することはできません。

SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016' 

WHERE句はすべて、DateTimeフィールドとして指定するフィールドに基づいて自動的に入力されます。

私は何をしようとしたことは、次の

SELECT TOP 100 CDate(Format([DTime], 'mm/dd/yyyy hh:nn:ss AM/PM')) AS LogTime, PEvent, FName, LName FROM EventLogs WHERE 'DTime' >= '1/1/2016' 

でこれが結果に戻しますが、残念ながらそれは正しく日付に比較されません。どのように私はこれを達成することができるアイデアを誰も持っていますか?どんな助けでも大歓迎です! ANSI 92を有効にして

は、事前

ODBC接続でのソフトウェアとデータベース間の接続にありがとう。

+0

このビット:DTime> = '1/1/2016'は自動的に生成され、編集できません。正しい? –

+0

「DTime」は引用符で囲まれているのはなぜですか? 「問題は、実行中の別のソフトウェアに日付と時刻の比較が自動的に入力されるため、構文を変更できない」ということです。手段?それは、 'WHERE DTime> = '1/1/2016'全体が他のソフトウェアに追加されていることを意味しますか?他のソフトウェアとは何ですか?どのようにしてクエリを作成していますか? – Brad

+0

正しいですが、 'WHERE DTime> =' '1/1/2016' 'ステートメントは他のソフトウェアによって生成され、編集することはできません。 WHERE句の前の文だけを編集できます。私は、外部ソフトウェアを扱うのではなく、Accessで正しい出力を生成することに集中する方が簡単だと思います。ですから、 'WHERE DTime> = '1/1/2016'を常に使用して正しい出力を作成する必要があります。 – TyrantUT

答えて

0

「WHERE DTime> = '1/1/2016'」の文全体が他のソフトウェアによって生成され、編集することはできません。

Bradが既にコメントしたように、これはAccess SQLではないため、決して動作しません。構文を理解SQL Serverに

SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016' 

あなたの唯一のオプションは、これを送信しますパススルークエリにクエリを変更することです。

1

SQLステートメントは永遠に文字列、一連の文字です。これは、VBAコードの文字列変数または定数、またはクエリオブジェクトのSQLプロパティです。 VBAで

MyQuery.SQL=Replace(MyQuery.SQL, "'", "#") 
MyQuery.Execute 

::Queryオブジェクトで :

Dim Dbs As DAO.Database 
Set Dbs = CurrentDB 'Could also be: Set Dbs = OpenDatabase(DatabaseFileLocation) 
Dbs.Execute Replace("SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016'", "'", "#") 

するか、次のようになります。いずれの場合も、それは実行前に操作することができ

Dbs.Execute "SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs " & Replace("WHERE DTime >= '1/1/2016'", "'", "#") 

アイデアは次のとおりです。アクセスした場合それを実行することができます、アクセスは事前にそれを変更することができます。
ステートメントが変更されていない場合、句はStringの値で行われ、DateTimeの値では行われません。

+0

これらのオプションは示唆に過ぎず、あなたのシステムに合った方法で実装できます。最終的なアイデアに従ってください:** Accessがそれを実行できる場合、Accessはあらかじめそれを変更することができます** – marlan

関連する問題