求助 VB+SQL
我用一个ListView来批量修改的楼盘的房号,但是遇上了一个问题
我们需要把原来的房号全部改掉,于是我把调整后的房号写进了.Item(I).SubItems(15)里,上传时,需要把修前的房号写进“测前房号”里,然后再把改后的房号覆盖原来的房号,但是数据库里有限制,不允许房号列出现重要值,我就想先把一组数字写进原“房号”列中,然后再用修改后的房号覆盖这些数字,但是现在出现了一个问题。当我全部选定ListView1里的所有行时,没有任何错误,但是如果我只选择其中一行时,就会在第二段代码里报错,提示限定了重复值。不允许写入,,,,请教各位老师,这个该如何办啊?
With Me.ListView1.ListItems
For I = 1 To .Count
If .Item(I).Checked Then
If .Item(I).SubItems(15) <> "" Then
SQL = "UPDATE housingresources SET " & _
" [测前房号] = '" & .Item(I).SubItems(5) & "'" & _
" WHERE [房号] = '" & .Item(I).SubItems(5) & "'"
cn.Execute SQL
End If
End If
Next
End With
Call CloseConn
Call OpenConn
With Me.ListView1.ListItems
For I = 1 To .Count
If .Item(I).Checked Then
If .Item(I).SubItems(15) <> "" Then
SQL = "UPDATE housingresources SET " & _
" [房号] = '" & KKK & "'" & _
" WHERE [测前房号] = '" & .Item(I).SubItems(5) & "'"
cn.Execute SQL
End If
End If
KKK = KKK + 1
Next
End With
Call CloseConn
[解决办法]
那就在保存之前,先用select测试一下,更改的目标数据是否存在,如果存在则将那个数据改为一个唯一的临时值,然后再执行更改
这个数据结构也够蛋疼的,事实上,要用做主键的数据最好不要赋给物理意义,不管你记录怎么改,主键总是不改