2016-12-22 8 views
3

私の学校プロジェクトで働いていて、残りのコードがうまく動作しているにもかかわらず、ORDER BYのアスペクトをSQLに追加したときにこの欠けている演算子エラーが発生しています。Vb6欠けている演算子

Set rs_fav = db_kwickfix.OpenRecordset(" 
    SELECT Recipe.Rec_Name 
    FROM Recipe,Favourites 
    WHERE (Recipe.RecipeID = Favourites.RecipeID) 
     AND (Favourites.UserID = " & frm_login.user_id & ") 
    ORDER BY Recipe.Rec_Name DESCENDING 
    ") 
+0

おそらく、二重引用符を一重引用符(frm_login.user_idのもの)に変更してみてください。 – Rhurac

+0

別のDBMSを使用している場合は、 'SQL-Server'タグを追加して削除してください;) – Blag

+0

DAO 、おそらくSQL ServerではなくJetです。 – Bob77

答えて

5

あるORDER BY Clause (Transact-SQL)をチェックし、DESCなくDESCENDINGをお試しください:order_by_expression
BY

ORDER [COLLATION_NAMEを照合]
[ASC | DESC]
[、... n]は
[<offset_fetch>]

したがって:

Set rs_fav = db_kwickfix.OpenRecordset(" 
    SELECT Recipe.Rec_Name 
    FROM Recipe,Favourites 
    WHERE (Recipe.RecipeID = Favourites.RecipeID) 
     AND (Favourites.UserID = " & frm_login.user_id & ") 
    ORDER BY Recipe.Rec_Name DESC 
    ") 
2

は、明示的なJOINを使用して考えがありますか?

Set rs_fav = db_kwickfix.OpenRecordset(" 
     SELECT Recipe.Rec_Name 
     FROM Recipe 
     JOIN Favourites 
     ON Recipe.RecipeID = Favourites.RecipeID 
     AND Favourites.UserID = " & frm_login.user_id & " 
     ORDER BY Recipe.Rec_Name DESC 
    ") 

また、パラメータ化されたクエリを調べることをお勧めします。それについてもっと読むhere

+0

ここでは、読みやすくするために、結合は役に立たない。クエリエンジンは、 'WHERE'または' JOIN'を使って同じコードを生成します。 – Blag

+0

JOINを明示的にすることによって、望ましくないクロス結合の可能性を減らしていませんか?私はあなたが何を言っているか見ることができます - それは彼の特定の問題を解決しません。 –

+1

良い質問...あなたは明示的なものを作るために 'CROSS JOIN table'を使うべきです、暗黙的な方法は完全な' WHERE table1.field = table2.field'を忘れてしまいます。これは起こるかもしれませんが、私は思いません実際のリスクです(しかし、私は 'JOIN'構文に反しているとは思わない、私はいつもそれを使用しています、'どこにレガシーコードがあるのですか?) – Blag