3

特定の基準に基づいて例外と呼ばれるテーブルに単純に追加するマクロに追加するクエリを渡されました。ただし、上記のエラーが発生します。

このエラーに関する Microsoft サポートのエントリを読みましたが、フィールドの 1 つでMemoデータ型が使用されていることが言及されています。使用されているテーブルにはそのようなフィールドはなく、テキストまたは数値のいずれかです。クエリは次のとおりです。

INSERT INTO Exceptions ( [Unique Number])
    SELECT qryOutgoings.[Unique Number], 
    FROM qryOutgoings LEFT JOIN tblExlcusions ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
    WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

(注:はい、念のため、セキュリティのためにフィールドとクエリ名を変更しました:))

例外テーブルの一意の番号のデータ型は次のとおりです。

  • 文章
  • フィールドサイズ: 50

他のテーブルからのデータ型 (qryOutgoings の結合によって取得) はまったく同じです。では、何が問題を引き起こしているのでしょうか?

最大数を含む、そのフィールドのデータの一部のサンプルを次に示します。

  • 515145
  • 132132
  • 824
  • 772794

ここで何が問題になる可能性がありますか?また、これはMS アクセスのみであることに注意してください。SQL Server のバックグラウンドは関係ありません。

4

1 に答える 1

3

このSELECT句には、単一のフィールドとそれに続くコンマが含まれます。

SELECT qryOutgoings.[Unique Number],

そのコンマが実際のクエリにも存在する場合は、破棄します。ただし、コンマが質問に含まれているが、実際のクエリには含まれていないと思われます。そうしないと、別のエラー メッセージが表示されるためです。

文字列として明示的にキャストしてみてくださいqryOutgoings.[Unique Number]

INSERT INTO Exceptions ([Unique Number])
    SELECT CStr(qryOutgoings.[Unique Number]) 
    FROM qryOutgoings LEFT JOIN tblExlcusions ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
    WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

それでもエラーが解消されない場合は、そのフィールドのデータ型として Access が認識するものと、それに含まれるテキストの長さを調べます。

SELECT
    qryOutgoings.[Unique Number], 
    TypeName(qryOutgoings.[Unique Number]) AS type_of_unique_number, 
    Len(qryOutgoings.[Unique Number]) AS length_of_unique_number
FROM
    qryOutgoings
    LEFT JOIN tblExlcusions
    ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

他に何も解決しない場合は、左端の 50 文字を尋ねてみてください。

SELECT Left(qryOutgoings.[Unique Number], 50) 
于 2013-08-09T15:00:19.487 に答える