次の方法で共有

Access 2010 Runtimeの環境でSQLのWHERE句にFormat関数を使用して時間まで比較したい

Anonymous
2012-12-26T03:57:39+00:00

こんにちは。お世話になります。

【環境】

[1] Windows7 32ビット

  ・Access2010インストール済

[2] [1]の環境上に立てたVirtualPC(WindowsXP(SP3))

  ・Microsoft Access 2010 Runtimeインストール済(http://www.microsoft.com/ja-jp/download/details.aspx?id=10910)

  ・Access 2010 Runtime SP1インストール済(http://support.microsoft.com/kb/2460015/ja)

  ・レジストリ変更済み(参考URL:http://www.mkkobo.com/runtime/runtime04.htm)

[3] 参照するDB:SQL Server 2008 R2

[4] 使用するPG:[1]で作成したMDEファイル

【やりたいこと】

ランタイム環境下([2]の環境)で[4]の動作確認を行っています。

その中で、以下のSQLを実行したい。

※WHERE条件の[テーブルA.登録日時]はDateTime型である。

Dim DB As ADODB.Connection

Set DB = CurrentProject.Connection

strSQL = "SELECT"

strSQL = strSQL & " テーブルA.*"

strSQL = strSQL & " INTO テーブルB"

strSQL = strSQL & " FROM テーブルA"

strSQL = strSQL & " IN ''[ODBC;driver={SQL Server Native Client 10.0};server=サーバー名;uid=ログインID;pwd=パスワード;database=データベース名]"

strSQL = strSQL & " WHERE Format(テーブルA.登録日時,'yyyy/mm/dd') >= '2012/12/21';" ←★

DB.Execute strSQL

DB.Close: Set DB = Nothing

【現状】

[1]の環境では実行できるが、

[2]の環境では下記のメッセージが表示され、実行できない。

『イベント プロパティに指定した式 クリック時でエラーが発生しました

 :OLEオブジェクトのプロパティまたはメソッドにアクセスするときにエラーがはっせいしました。

 *マクロ名、ユーザ定義関数名、[イベントプロシージャ]以外の式が指定されています。

 *関数、イベント、マクロの評価でエラーが発生しました。

 (このエラーは、イベントのロジックの場所を評価できないためにイベントを実行できなかった場合に発生します。

 たとえば、フォームの"OnOpen/開く時"プロパティが=[フィールド]に設定されている場合、

 イベントが開始されたときに、マクロまたはイベントの名前が実行対象として予期されるため、このエラーが発生します。』

【対策】

★の部分を下記のように書き換えれば、比較対象のデータ型を変換すると[2]の環境でも実行できた。

≪成功≫

strSQL = strSQL & " WHERE テーブルA.登録日時 >= Cdate('2012/12/21 00:00:00');"

strSQL = strSQL & " AND テーブルA.登録日時 <= Cdate('2012/12/22 00:00:00');"

≪失敗≫

・strSQL = strSQL & " WHERE Format(テーブルA.登録日時," & """" & "yyyy/mm/dd" & """" & ") >= '2012/12/21';"

・strSQL = strSQL & " WHERE Format(テーブルA.登録日時," & """" & "yyyy/mm/dd" & """" & ") >= " & """" & "2012/12/21" & """" & ";"

・strSQL = strSQL & " WHERE Format(テーブルA.登録日時,'yyyy/mm/dd') >= '2012/12/21';"

・strSQL = strSQL & " WHERE Format(テーブルA.登録日時,'yyyy/mm/dd') >= Cdate('2012/12/21');"

・strSQL = strSQL & " WHERE DateValue(Format(テーブルA.登録日時,'yyyy/mm/dd')) >= '2012/12/21';"

・strSQL = strSQL & " WHERE DateValue(Format(テーブルA.登録日時,'yyyy/mm/dd')) >= #2012/12/21#;"

・strSQL = strSQL & " WHERE DateValue(Format(テーブルA.登録日時,'yyyy/mm/dd')) >= Cdate('2012/12/21');"

Access 2010 Runtimeの環境でSQLのWHERE句にFormat関数を使用して時間まで比較したい場合には

どのようにしたら良いでしょうか?教えてください。

よろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-01-12T13:35:15+00:00

MukkuMukuです。

ドライバを変えましたね。

当初、XP付属のドライバが古いからなのではないか?と思っていたのですが、いずれであっても実際に

動作したので、ドライバについては触れませんでした。

Runtimeのサポートについては、明確な記述が以前から見つけられません。

しかし、主題ではなかったけれどもサポートから過去に聞いた話や私見など織り交じったコメントとして

残しておきます。

Access2007についての記述になりますが、Access2010と読み替えています。

http://office.microsoft.com/ja-jp/access-help/HA010218864.aspx?CTT=5&origin=HA010342110#BM3

Accessアプリケーションの展開に使用できるファイル形式には2003以前のファイル形式はありません。

後方互換の実現の一部として以前のファイル形式を開くことができるということだけなのだと考えています。

Runtimeの件以前にサポートされていない方法と認識しています。

"強いて言うと"と、ぶっきらぼうに表現してしまったのでこの点補足しておきます。

動作することはするのですが、なにか問題があってもMSのサポート対象外だと思いますよというのが

主旨でした。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-01-08T12:54:46+00:00

こんばんは、MukkuMukuです。

VBAといえばVBAの話題なのでしょうけど、ちょっと違うかもと思ったのでこっちに書いています。

    strSQL = strSQL & " WHERE テーブルA.登録日時 >= #12/14/2012 12:30:00#;"

こんな感じで時間を含めた比較ができませんか?

あとRuntime環境でのエラー件ですが、再現しませんでした。環境的な要因があるのかもしれないと

感じるいう結果を見ました。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

7 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-01-10T06:24:27+00:00

    MukkuMukuさん、こんばんは。

    返信ありがとうございます。

    >んと、Runtimeのみの環境で試してみましたよ。

    そうだったのですか!ご迷惑をおかけして申し訳ありませんでした。

    >あと、強いて言うと、ADP/ADE/MDE/MDBはサポートされていないということぐらいです。

    とのことですが、これはRuntime環境で上記のファイルのサポートはしていないということでしょうか?

    お手数ですが、もしよろしければ教えてください。お願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2013-01-09T13:58:51+00:00

    MukkuMukuです。

    んと、Runtimeのみの環境で試してみましたよ。他に原因がないか探ったほうが良いとは思っています。

    あと、強いて言うと、ADP/ADE/MDE/MDBはサポートされていないということぐらいです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-01-09T09:38:23+00:00

    MukkuMukuさん、こんばんは。

    回答をしていただき、ありがとうございました。

    教えていただいた内容を試してみましたが、

    同様のエラーが表示され、実行できませんでした。

    >あとRuntime環境でのエラー件ですが、再現しませんでした。環境的な要因があるのかもしれないと

    感じるいう結果を見ました。

    環境[2]が、Access 2010 Runtimeしかインストールしていない環境だからかもしれません。

    ちなみにWindows環境の日付書式は西暦2桁表示ではありませんでした。

    引き続き、調べて見ようと思います。

    ありがとうございます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません