2016-05-17 22 views
1

ich diese Abfrage in der Datenbank-Tool keine Probleme laufen kann:eine Auswahl in einer Update-Anweisung über ADO

UPDATE table1 
SET NAME = 'John' 
WHERE userid IN (SELECT Max(userid) 
        FROM table1 
        WHERE userid = NULL) 

, die erfolgreich läuft. Wenn ich versuche, genau diese Anweisung von einem VBScript auszuführen, erhalte ich keine Fehler und die Aktualisierung findet nicht statt. Kann mir jemand sagen, was ich falsch mache?

Public Function GetAvailableRow() 
    Dim conn, command 

    On Error Resume Next 

    Set conn = CreateObject("adodb.connection") 
    Set command = CreateObject("adodb.command") 

    conn.IsolationLevel = 1048576 

    conn.Open "Driver={Adaptive Server Enterprise}; Server=myserver;port=myport; db=mydatabase;uid=userid;pwd=password;" 

    command.ActiveConnection = conn 
    command.CommandText = "UPDATE table1 SET name = 'John' WHERE userid in (SELECT MAX(userid) from table1 where userid = NULL)" 

    conn.BeginTrans 
    command.Execute 
    conn.CommitTrans 

    conn.Close 

    Set command = Nothing 
    Set conn = Nothing 
End Function 

Antwort

5

userid = NULL in der where Klausel wird immer unbekannt zurück. Daher wird die Aktualisierung nicht auftreten.

Verwenden Sie stattdessen userid is null.

+0

Ich frage mich nur, wie OP sagen, die Abfrage auf db funktioniert ok an erster Stelle. –

+0

Toller Fang! Ich habe nicht einmal darüber nachgedacht. Das hat es behoben. Vielen Dank! –

+0

@JuanCarlosOropeza - Ich verspreche Ihnen, das funktioniert. Ich habe es dreimal in DBArtisan ausgeführt und es hat jedes Mal funktioniert. –