2017-10-17 2 views
0

Kann jemand mir helfen, meine Abfrage zu beheben. Ich möchte meine Daten aktualisieren, wenn die syscode nicht existiert, aber wenn ich versuche, sysdesc zu aktualisieren fehlgeschlagen, weil die syscode bereits vorhanden sind.Update, wenn nicht in vb.net existiert

Dim query As String 
    Dim rowsAffected As Integer 
    query = "UPDATE tbl_sysname SET syscode = @code, sysdesc = @desc " & _ 
     "WHERE id = @id AND NOT EXISTS (SELECT syscode FROM tbl_sysname WHERE " & _ 
     "syscode = @code) " 

    cmd = New SqlCommand(query, cn) 
    cmd.Parameters.Add("@code", SqlDbType.VarChar).Value = txtCode.Text 
    cmd.Parameters.Add("@desc", SqlDbType.VarChar).Value = txtDesc.Text 
    cmd.Parameters.Add("@id", SqlDbType.VarChar).Value = lblId.Text 

    rowsAffected = cmd.ExecuteNonQuery 
    'MsgBox(rowsAffected) 

    If rowsAffected >= 1 Then 
     'reader = cmd.ExecuteReader 
     MsgBox("Update Successfully") 
     LVSysName.Items.Clear() 
     'reader.Close() 
     GetLvData() 'This will display the data of LvSysName 
    Else 
     MsgBox("Failed to Update") 
    End If 

Ich mag die Vervielfältigung von syscode zur gleichen Zeit vermeiden i sysdesc aktualisieren kann. Helfen Sie mir, meine Frage zu beheben, oder geben Sie mir einen Vorschlag, was ich tun sollte

+1

Warum wird ein Update von 'sysdesc' durch die Existenz von' syscode' beeinflusst? –

+0

Wenn ich die 'sysdesc 'aktualisiere, gibt' rowsAffected' 0 wegen der' NOT EXIST 'Funktion zurück –

+0

ok, also soll' sysdesc 'aktualisiert werden, obwohl der' syscode 'in der Datenbank existiert? –

Antwort

0

Sie müssen zwei UPDATE Anweisungen dafür verwenden. Es gibt keine Möglichkeit, es auf einmal zu machen.

UPDATE tbl_sysname 
SET syscode = @code 
WHERE id = @id AND 
    NOT EXISTS (SELECT syscode FROM tbl_sysname WHERE syscode = @code) 

UPDATE tbl_sysname 
SET sysdesc = @desc 
WHERE id = @id 
Verwandte Themen