2017-10-17 6 views
0

誰でも私のクエリを修正するのを助けることができます。 syscodeが存在しないが、更新しようとするとsysdescsyscodeに存在するため、データを更新したい。更新がvb.netに存在しない場合

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 

私は私がsysdescを更新することができ、同時にsyscodeの重複を避けたいです。 質問を修正したり、何をすべきかを教えてください。

+1

なぜ「sysdesc」の更新が 'syscode'の存在によって影響を受けるのですか? –

+0

'sysdesc'を更新すると' rowsAffected'は 'NOT EXIST'関数 –

+0

のため0を返すので、' syscode'がデータベースに存在していても 'sysdesc'を更新しますか? –

答えて

0

UPDATEの文を2つ使用する必要があります。一度に行う方法はありません。

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 
関連する問題