2016-05-05 10 views
0

MySQLバックエンドでAccess 2007からの更新クエリを実行しているときに、この異常が発生しました。MS AccessワイルドカードがMySQLバックエンドで動作しない

このSELECTクエリは、正しいレコードを表示します。

SELECT Courses.Print_Quota, Courses.CourseCode 
FROM Courses 
WHERE (((Courses.Print_Quota)=0) AND ((Courses.CourseCode) Like "%cc*")); 

Courses.CourseCodeは

UPDATE Courses 
SET Courses.Print_Quota = 100 
WHERE (((Courses.Print_Quota)=0) 
AND ((Courses.CourseCode) Like "%cc*")); 

アクセスがデータシートビューで正しいレコードを示しているが、私は実行すると...それは0を言う、今私は、この更新クエリを試す

私の主キーであります行が更新されます(これはまさに起こります)

これはなぜ機能しないのでしょうか?

+0

これがAccessクエリ(パススルークエリではない)の場合、正しいワイルドカードは '*'です。 SELECT文が動作しても、同じWHERE句を使用したUPDATEはそれほど奇妙です。私が推測しなければならないのは、MySQL ODBCドライバのバグかもしれないということです。あなたは '%'、つまり 'CourseCode Like" cc * "'なしで両方のクエリを試すことができますか?おそらく二重引用符ではなく単一の 'CourseCode ''%cc * ''のようなものでしょうか? – Andre

+0

select文から返されたデータのスニペットを投稿して再現可能な例に使用できますか?データには実際に '%'記号が含まれていますか? – Parfait

+0

は 'Courses.Print_Quota'であり、' single float'ですか?それが私の原因だ。 – BitAccesser

答えて

0

MySQLは試合

を終了forn別 %

UPDATE Courses 
SET Courses.Print_Quota = 100 
WHERE (((Courses.Print_Quota)=0) 
AND ((Courses.CourseCode) Like "%cc%")); 

または何も*変更を使用していない(私はちょうどここに何が起こっているのか疑問に、欲しい結果を達成するための他の方法をたくさん持っています)

UPDATE Courses 
SET Courses.Print_Quota = 100 
WHERE (((Courses.Print_Quota)=0) 
AND ((Courses.CourseCode) Like "%cc")); 
+0

"%cc%"と全く同じ動作をします - ありがとうとか – jcansell

+0

Accessデータベースエンジンがクエリを実行して(ODBCドライバに渡す)、 '*'が正しいとします。 – Andre

+0

私は同意します。サーバー上でMySQL構文を実行していると、何の効果もありません。まだ私はデータシートビューの値を編集することができます: -/ – jcansell

関連する問題