1

MSAccessでSQLサブクエリを作成しようとしています。「式の
条件にタイプが一致しません」というエラーメッセージが表示されます。

サブクエリは

SELECT *
  (SELECT Locs_Eq.Locs_Eq 
   FROM Locs_Eq 
   WHERE Query6.StDeExtrREF=CStr(Locs_Eq.Full_VendSN)
  ) AS Loc_1
FROM Query6

DeExtrREFfromの変数Query6は次のとおりです。

 IIF(PDetail.VeName="Siem" AND [DeExtr1]="Contr REF#",
     TRIM(MID (PDetail.Desc, (InStr([PDetail.Desc],":")+1), LEN(PDetail.Desc))),
     TRIM(MID (PDetail.Desc, (InStr([PDetail.Desc],":")+1), LEN(PDetail.Desc))) 
    ) AS DeExtrREF

変数にCStrを追加しようとしましたが、それでもエラーメッセージが表示されます。助けてください。

4

1 に答える 1

1

最初の行の SELECT * の後にコンマがあると仮定します。そうでない場合は、まずこれを変更して、これが役立つかどうかを確認してください。

確かではありませんが、おそらく null 関連のエラーです。これをアクセス アプリのモジュールに追加します。

public function is_null(val as variant, rplc as string) as string
    if isnull(val) then
        is_null = rplc
    else
        is_null = cstr(val)
    end if
end function

次のように、これを使用するようにクエリを変更します。

SELECT q.*,
  (SELECT l.Locs_Eq 
   FROM Locs_Eq l 
   WHERE is_null(q.StDeExtrREF, "") = CStr(is_null(l.Full_VendSN, ""))
  ) AS Loc_1
FROM Query6 q

お役に立てれば。私はテーブルとクエリに自動的にエイリアスを設定しますが、一般的なルールとして、クエリが理解するのがそれほど難しくない場合は、ここでヘルプが得られる可能性が高くなります。

于 2013-03-01T02:20:43.817 に答える