2017-07-21 13 views
1

私はAccess 2013を学習していて、特定の番号が見つかった場合は更新クエリを作成しようとしています。私は1つの番号で動作するようにしましたが、同じクエリと私はそれを管理する方法を知らない。アクセス2013 UPDATEクエリ

私が今作った

UPDATE tblMsgs SET tblMsgs.MsgType = IIf(Mid("MsgString",6,2)="22","RESPONSE","REQUEST") 
    WHERE (((Mid([MsgString],6,2))="22" Or (Mid([MsgString],6,2))="14")); 

    if 19 = REQUEST 
    if 59 = RESPONSE 
    if 22 = REQUEST 
    if 62 = RESPONSE 
    if 14 = REQUEST 
    if 54 = RESPONSE 
    if 2F = REQUEST 
    if 6F = RESPONSE 
    if 7E = REQUEST 

これが私のSQLで、数字が下に、私は特定しREQUESTまたはRESPONSEのいずれかに有効にする数値である、識別番号は、char 6で常にあると2長い("MsgString",6,2)

それぞれの数字とそれがうまくいかない(効果がない!)ための1つのクエリは、同じクエリでこれをすべて行う方法がありますか?おかげ

答えて

1

あなたのIIfORを使用することができます。

UPDATE tblMsgs SET tblMsgs.MsgType = 
    IIf(Mid("MsgString",6,2)="22" OR Mid("MsgString",6,2)="59" OR ..., "RESPONSE", "REQUEST") 
WHERE ... 

しかし、それはより簡単かつ2つのクエリ、「応答」用と「REQUEST」のいずれかでこれを行うには良い読めるだろう。

the IN operatorを使用して値のリストを指定することもできます。

UPDATE tblMsgs SET tblMsgs.MsgType = "RESPONSE" 
WHERE Mid([MsgString],6,2) IN ("22", "59", "62", ...) 

UPDATE tblMsgs SET tblMsgs.MsgType = "REQUEST" 
WHERE Mid([MsgString],6,2) IN ("14", "19", "22", ...) 

(あなたのリストがエラーを持っているようだ、 "22" は、両方のために定義される)

+0

ありがとうございます!私はそれを見て、今2つのクエリが良かった! "IN"機能について知らなかったので今は完璧に動作します! – sesar

+0

ちょっとおっしゃるように、これはPython 3.6の構文にどのように翻訳されるのか分かりません。コンパイル時に文法エラーが発生するだけです... – sesar

+0

いいえ、考えられません。しかし、PythonでSQLを実行すると、同じSQLコマンドになります。たぶん二重引用符を "一重引用符"で置き換えて問題が発生した場合は、@sesar – Andre