次の方法で共有

Windows7+Access2003Runtime; クエリー内で Right, Rtrim等の関数を使うと 「クエリ式 ****のこの関数は式では使用できません」とのエラーがでる。

Anonymous
2011-11-30T08:55:47+00:00

下記のようなクエリーを[mde]で実行すると、Windows7+Access2003Runtimeでエラーとなります。

同じ[mde]をXp+Access2003Runtime, Win7+Access2003(Runtimeではありません)で実行するとエラーとなりません。

DAOの参照設定をやり直して作成し直した[mde]でも同じエラーが出ます。

[mde]を作成しているのは、 Window7pro(32ビット)+Access2003 です。

検索しても出てくるのは「参照設定のやり直し」ばかりで 行き詰まっています、よろしくお願いいたします。

エラーの出たクエリ(1)

            UPD_SQL = "UPDATE " & JetTB_NAME

            UPD_SQL = UPD_SQL & " SET "

            UPD_SQL = UPD_SQL & "   作成先出荷日= RIGHT(FORMAT(作成先出荷日," & Chr(34) & "0000" & Chr(34) & "),4)"    <---これがエラーになる

            UPD_SQL = UPD_SQL & "  ,作成先納品日= RIGHT(FORMAT(作成先納品日," & Chr(34) & "0000" & Chr(34) & "),4)"

            On Error GoTo JET_ERR

                CurrentDb.Execute (UPD_SQL)

            On Error GoTo 0

エラーの出たクエリ(2)

    INS_SQL = "INSERT INTO " & LnkTB_Name

    INS_SQL = INS_SQL & " ("

    INS_SQL = INS_SQL & "   受注伝票番号"

    INS_SQL = INS_SQL & "  ,受注行番号"

    INS_SQL = INS_SQL & "  ,作成先売上日"

    INS_SQL = INS_SQL & "  ,作成先出荷日"

    INS_SQL = INS_SQL & "  ,作成先納品日"

    INS_SQL = INS_SQL & "  ,作成先ケース数"

    INS_SQL = INS_SQL & "  ,作成先ボール数"

    INS_SQL = INS_SQL & "  ,作成先バラ数"

    INS_SQL = INS_SQL & "  ,作成先受注数"

    INS_SQL = INS_SQL & "  ,作成先単位重量"

    INS_SQL = INS_SQL & "  ,作成先総重量"

    INS_SQL = INS_SQL & "  ,作成先受注単価"

    INS_SQL = INS_SQL & "  ,作成先受注額"

    INS_SQL = INS_SQL & "  ,作成先原価単価"

    INS_SQL = INS_SQL & "  ,作成先原価額"

    INS_SQL = INS_SQL & "  ,作成先単価区分"

    INS_SQL = INS_SQL & "  ,作成先単位"

    INS_SQL = INS_SQL & "  ,受注数"

    INS_SQL = INS_SQL & "  ,受注残数"

    INS_SQL = INS_SQL & "  ,受注用変換売上区分"

    INS_SQL = INS_SQL & "  ,送り状GP"

    INS_SQL = INS_SQL & "  ,運送便"

    INS_SQL = INS_SQL & "  ,倉庫番号"

    INS_SQL = INS_SQL & " )"

    INS_SQL = INS_SQL & " SELECT"

    INS_SQL = INS_SQL & "   J.受注伝票番号"

    INS_SQL = INS_SQL & "  ,J.受注行番号"

    INS_SQL = INS_SQL & "  ,Date_From6To8(VAL(Nz(J.作成先売上日,0)))"

    INS_SQL = INS_SQL & "  ,Date_From6To8(VAL(Nz(J.作成先出荷日,0)))"

    INS_SQL = INS_SQL & "  ,Date_From6To8(VAL(Nz(J.作成先納品日,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先ケース数,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先ボール数,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先バラ数,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先受注数,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先単位重量,0)))"

    INS_SQL = INS_SQL & "  ,IIF(J.変換区分=8,0"

    INS_SQL = INS_SQL & "                      ,VAL(Nz(J.作成先総重量,0)))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先受注単価,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先受注額,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先原価単価,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先原価額,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先単価区分,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.作成先単位,0))"

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.受注数,0))"          

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.受注残数,0))"      

    INS_SQL = INS_SQL & "  ,VAL(Nz(J.変換区分,0))"      

    INS_SQL = INS_SQL & "  ," & SEL_送り状GP & " AS 送り状GP"

    INS_SQL = INS_SQL & "  ,VAL(ItemValueGetSQL(NZ(J.運送便コンボ,0))) AS 運送便"

    INS_SQL = INS_SQL & "  ,RTRIM(ItemValueGetSQL(NZ(J.倉庫番号コンボ,'000'))) AS 倉庫番号"  <---これがエラーになる

    INS_SQL = INS_SQL & " FROM "

    INS_SQL = INS_SQL & "  " & JetTB_NAME & " J"

    INS_SQL = INS_SQL & " WHERE "

    INS_SQL = INS_SQL & "   J.選択='●'"

    On Error GoTo JET_ERR

        CurrentDb.Execute (INS_SQL)

    On Error GoTo 0

    ※itemValueGetSQLは functionで定義しています。

    ※RTRIMを itemValueGetSQL内で行うとエラーになりませんでした。

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

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

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

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

Anonymous
2011-12-17T01:39:47+00:00

ありがとうございます。

試しにaccess2003をインストールし動作を確認したところ、まいとーくfaxで使用するocxの参照ができていませんでした。(fax自動送信をしています)

これは、mdeを作成したPCでは、Dドライブにまいとーくfaxをインストールしていた為でした。

エラーの出るPCにはCドライブしかなかったのでまいとーくもCドライブにインストールしていました。

Dドライブを作成しCドライブのまいとーくのインストールフォルダをDドライブにコピーしMDEを起動したところ、エラーせず正常に動作しました。

本日(12/17)実際にPCを使用している担当者に一通りの処理を行ってもらっています。

これでエラーがでなければこれが原因だったと思われます。

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

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

5 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-12-13T07:41:15+00:00

    Runtime 環境にもちゃんと Access の SP3 は適用されていたということですね?

    試しに一度、壊れた参照がないかどうかを次の関数を使って調べられてはいかがでしょうか。

    このコードは、BrokenReference プロパティのヘルプにある使用例のものです。

    MDE に下記関数を追加して、起動時などで呼び出してみてください。

    Public Sub CheckRefrences()

        ' ループ変数

        Dim refLoop As Reference

        ' 出力変数

        Dim strReport As String

        ' 無効な参照があるかどうかをチェックします。

        If Application.BrokenReference = True Then

            strReport = "次の参照は無効です: " & vbCrLf

            ' 参照が有効かどうかをテストします。

            For Each refLoop In Application.References

                If refLoop.isBroken = True Then

                    strReport = strReport & "    " & refLoop.Name & vbCrLf

                End If

            Next refLoop

        Else

            strReport = "カレント データベースのすべての参照は有効です。"

        End If

        ' 結果を表示します。

        MsgBox strReport

    End Sub

    もし壊れた参照がある場合は、下記サイトに書かれている FixUpRefs 関数を起動時に実行するようにすると解決するかもしれません。

    (資料が対象とするバージョンは異なりますが、Access 2003 でも同じはずです。)

    [Acc97]: エラー メッセージ: クエリ式内の式で使用できる関数でないです。

    http://support.microsoft.com/kb/194374

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

    0 件のコメント コメントはありません
  2. Anonymous
    2011-12-09T09:43:44+00:00

    おそくなりましたが、本日サービスパックを確認したところsp3が適用されていました。

    こんどaccess2003をインストールして動かしてみます

    結果はまた報告します。

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

    0 件のコメント コメントはありません
  3. Anonymous
    2011-12-02T23:17:28+00:00

    THO1様

    ご回答ありがとうございます。

    サービスパックの確認していませんでした。

    未適用であればSP3を適用し再度確認してみます。

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

    0 件のコメント コメントはありません
  4. Anonymous
    2011-12-01T04:20:22+00:00

    試しに、「作成先出荷日」等を持つテーブルを作成し、(1) の方の SQL を同じように実行してみましたが、私のところではエラーにはなりませんでした。

    Win7(SP1 x64)+Access2003(SP3 x86) の環境で新規作成した mde を

    Win7(SP1 x86)+Access2003Runtime(SP3) の環境で実行しました。

    ・久米さんのところでも、検証用に mde を新規作成された場合でもエラーになるのでしょうか?

    ・Runtime 環境も含め、SP3 は適用されていますでしょうか?

    (以下は関係なさそうな情報です)

    なお、最初はサンドボックスが関係しているのかなと思って次のサイトを確認したのですが、たとえサンドボックス状態だとしても right 等は使用可能なようですので、今回は関係なさそうですね。

    [ACC2003] サンドボック ス モード (SandboxMode) の既定値について

    http://support.microsoft.com/default.aspx?scid=kb;ja;834600

    Access 2003 で安全でない関数が実行されないように Jet 4.0 を構成する方法

    http://support.microsoft.com/kb/294698

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

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