式を用いたフィールドをリレーションシップさせた場合に更新クエリが使えないのか
hiroton さんが指摘されているように、演算フィールド[発注番号]がエラー値を
返しているレコードが[Q_手配内訳2]に 1 件以上含まれている可能性が最も高いでしょう。
更新クエリに限らず、いずれかのレコードにおいてエラー値が返されている
演算フィールドを内部結合/外部結合のキーとして使用することは出来ません。
エラー値はあらゆるデータ型と一致しないからです。
Mid([注文番号],2,InStr(12,[注文番号],"-",0)-2)
上記の式において InStr 関数の戻り値が 0 または 1 だった場合、その値から 2 を減じた結果( -2 または -1 )が Mid 関数の第 3 引数 Length に渡されることになる。
Mid 関数の第 3 引数 Length に負の整数を渡すことは出来ない(よって件のエラーが発生する)。
[注文番号]の値の 12 文字目以降に "-" が含まれていた場合、上記の InStr 関数の戻り値はその位置を示す 12 以上の整数となる( 1 ~ 11 になることはない)。
したがって、上記の InStr 関数の戻り値が 1 以下になるのは、[注文番号]の値の 12 文字目以降に "-" が含まれていない(戻り値が 0 である)場合である。
Left([注文番号],InStr(11,[注文番号],"-",0)-1)
上記の式において InStr 関数の戻り値が 0 であった場合、その値から 1 を減じた結果( -1 )が Left 関数の第 2 引数 Length に渡されることになる。
Left 関数の第 2 引数 Length に負の整数を渡すことは出来ない(よって件のエラーが発生する)。
[注文番号]の値の 11 文字目以降に "-" が含まれていた場合、上記の InStr 関数の戻り値はその位置を示す 11 以上の整数となる( 1 ~ 10 になることはない)。
したがって、上記の InStr 関数の戻り値が 0 になるのは、[注文番号]の値の 11 文字目以降に "-" が含まれていない場合である。
また、いずれの式についても InStr 関数の第 4 引数 Compare に 0 を渡している(=バイナリ比較方式となる)ため、半角文字の "-" と全角文字の "-" は明確に区別され、検索対象となるのは前者の文字のみとなります。
なお、選択クエリは正しく表示されています。
よって、今のところは「[Q_手配内訳2]が返した全てのレコードの[注文番号]および[発注番号]の値を再度確認して下さい」としか申し上げられません。
InStr 関数によって "-" が見つからなかった場合の扱いが不明ですし。