0

MS Access で ADODB.Recordset を開くために使用される SQL 文字列があります。レコードセットを開こうとすると、次のエラーが発生します。

エラー -2147217900 (無効な SQL ステートメント。'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または 'UPDATE' が必要です。) モジュール AutomaticEmails のプロシージャ SendAutomaticEmails で

すぐに表示されるウィンドウで、使用されている SQL をコピーして、SQL Server Management Studio に貼り付けます。SQL Serverもクエリが好きではありません.赤い下線のスペース... SQLの各スペースを手動で削除して再度追加すると、クエリが機能します。Access VBA プロシージャ (SQL 文字列に対して) で同じことを行うと、機能します。

スペースとの契約は何ですか!? ファイルのエンコーディングの問題だと思いますか? この Access ファイルは TFS でソース管理されているため、ソース ファイルは TFS から取り出されたことに注意してください (それが重要な場合)。

これは文字列です:

SELECT TOP 1 Person.PersonID, Person.TypeID, ToStatusID, FromStatusID 
FROM 
StatusTracking, 
Person 
WHERE Person.PersonID = 85432 
AND Person.PersonID = StatusTracking.PersonID 
ORDER BY ID DESC
4

1 に答える 1

0

上記の私のコメントが示すように、それは「Â」文字のエンコードの問題でした。

さらに調査を行い、Notepad++ を使用していくつかのエンコーディングの変更を行った後、いくつかの幻の文字がそこにあるように見えます。SQL を VBA エディタから Notepad++ にコピーし、エンコーディングを ANSI に変更すると、ほとんどの場合、スペースがある場所に Â 文字が表示されます。

SELECTÂ TOPÂ 1Â 
     Person.PersonID
  , Person.TypeID
  , ToStatusID
  , FromStatusID 
FROM StatusTracking, Person 
WHEREÂ 1 = 1
   ANDÂ Person.PersonIDÂ =Â 85432 Â 
   ANDÂ Person.PersonIDÂ =Â StatusTracking.PersonIDÂ 
ORDERÂ BYÂ IDÂ DESC
于 2014-11-09T06:11:09.330 に答える