0

これは構文エラーを生成しませんが、間違った引数エラーが発生します:

SELECT left(
  [aname],
 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
   Len(FinalForgotten.aname),
  IIF(instr([aname], ",") = 0,
    InStr(1,[aname]," ")-1,
    InStr(1,[aname],",")-1)))
&  ","  &

right(
   [aname],
 IIF(instr([aname], " " = 0 AND instr([aname], ",") = 0,
   Len(FinalForgotten.aname),
    IIF(instr([aname], ",") = 0,
      Len(aname)-InStr(1,[aname]," "),
      Len(aname)-InStr(1,[aname],",")))))
 &  " " &

defense_final.middle_initial AS fullname INTO FinalForgottenWithMiddle
FROM FinalForgotten INNER JOIN defense_final ON (right(FinalForgotten.aname,
 IIF(instr([aname], ",") = 0,
 Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname]," "),
 Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],",")
  )
 )=defense_final.first_name) AND (left(FinalForgotten.aname,
IIF(instr([aname], ",") = 0,
  InStr(1,FinalForgotten.[aname]," ")-1,
  InStr(1,FinalForgotten.[aname],",")-1
    )
)=defense_final.last_name);

したがって、追加の引数を追加すると、構文エラー「Missing )、]、または Item in query expression が表示されます。

   SELECT left(
  [aname],
 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
   Len(FinalForgotten.aname),
  IIF(instr([aname], ",") = 0,
    InStr(1,[aname]," ")-1,
    InStr(1,[aname],",")-1)))
&  ","  &

right(
   [aname],
 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
   Len(FinalForgotten.aname),
    IIF(instr([aname], ",") = 0,
      Len(aname)-InStr(1,[aname]," "),
      Len(aname)-InStr(1,[aname],","))))
 &  " " &

defense_final.middle_initial AS fullname INTO FinalForgottenWithMiddle
FROM FinalForgotten INNER JOIN defense_final ON 

left(FinalForgotten.aname,
   IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
      Len(FinalForgotten.aname),
      IIF(instr([aname], ",") = 0,
        InStr(1,FinalForgotten.[aname]," ")-1,
        InStr(1,FinalForgotten.[aname],",")-1)))

 =defense_final.last_name AND 

 right(FinalForgotten.aname,
      IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
      Len(FinalForgotten.aname),
       IIF(instr([aname], ",") = 0,
        Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname]," "),
        Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],","))))

=defense_final.first_name;

回避策はありますか?

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

4

4 に答える 4

0

そのロジックを VBA 関数に入れる方が簡単なので、クエリは次のようになります

SELECT GetFullNameWithMiddle([aname]) AS fullname
INTO FinalForgottenWithMiddle
FROM FinalForgotten INNER JOIN defense_final
    ON GetLastName([aname])=defense_final.last_name
    AND GetFirstName([aname])=defense_final.first_name

VBA を使いたくないというので、代わりにこれを試してください。ごとに同封しました

InStr(x, y) = 0

括弧内にあるので、

IIf(InStr(x, y) = 0 AND InStr(p, q) = 0, g, h)

になる

IIf((InStr(x, y) = 0) AND (InStr(p, q) = 0), g, h)

この変更により、クエリ デザイン グリッドに切り替えることができました。これは、SQL パーサーがそれを気に入ったことを意味します。

SELECT left(
    [aname],
    IIF((instr([aname], " ") = 0) AND (instr([aname], ",") = 0),
    Len(FinalForgotten.aname),
    IIF((instr([aname], ",") = 0),
    InStr(1,[aname]," ")-1,
    InStr(1,[aname],",")-1)))

    &  ","  &

right(
    [aname],
    IIF((instr([aname], " ") = 0) AND (instr([aname], ",") = 0),
    Len(FinalForgotten.aname),
    IIF((instr([aname], ",") = 0),
      Len(aname)-InStr(1,[aname]," "),
      Len(aname)-InStr(1,[aname],","))))

    &  " " &

defense_final.middle_initial AS fullname INTO FinalForgottenWithMiddle
FROM FinalForgotten INNER JOIN defense_final ON 

left(FinalForgotten.aname,
    IIF((instr([aname], " ") = 0) AND (instr([aname], ",") = 0),
    Len(FinalForgotten.aname),
    IIF((instr([aname], ",") = 0),
    InStr(1,FinalForgotten.[aname]," ")-1,
    InStr(1,FinalForgotten.[aname],",")-1)))

=defense_final.last_name AND 

right(FinalForgotten.aname,
    IIF((instr([aname], " ") = 0) AND (instr([aname], ",") = 0),
    Len(FinalForgotten.aname),
    IIF((instr([aname], ",") = 0),
    Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname]," "),
    Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],","))))

=defense_final.first_name;
于 2010-12-20T18:59:58.087 に答える
0
 IIF(instr([aname], " " = 0 AND instr([aname], ",") = 0,

12行目は

 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
于 2010-12-20T16:01:19.367 に答える
0

10行目

right(

対応する右括弧がありません

于 2010-12-20T00:41:22.417 に答える
0

SELECT left( [aname], [aname] はテキスト フィールドです。

 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,

この条件が真の場合、Left String の長さは次のようになります。

 FinalForgotten.aname,

これは整数ではありません。あなたがしたい:

SELECT left(
  [aname],
 IIF(instr([aname], " ") = 0 AND instr([aname], ",") = 0,
   Len(FinalForgotten.aname),
于 2010-12-20T02:42:46.250 に答える