|
楼主 |
发表于 2011-4-15 15:57
|
显示全部楼层
原帖由 zhangshitou 于 2011-4-15 13:43 发表
以access为数据库的程序中
在修改记录代码部分,姓名和工作部门相同就认为是同一条记录,那么我如何修改除非所有记录都相同才认为是同一条记录呢。谢谢,
我想看看代码部分具体怎么写,
Dim n& '新加,单击ListView1行号
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) 'ListView1单击事件
Dim i&
n = Item.Index '新加
TextBox1.Text = Item '首列数据赋给姓名文本框
ary(0) = Item '姓名存放到数组作为删除记录的姓名查询条件
With ListView1
For i = 1 To 5 '逐列数据写入文本框
Controls("TextBox" & i + 1) = .ListItems(Item.Index).SubItems(i)
Next i
ary(1) = .ListItems(Item.Index).SubItems(i - 1) '工作单位存放到数组作为删除记录的工作单位查询条件
End With
End Sub
Private Sub 修改记录_Click()
If n = 0 Then Exit Sub '没有单击事件发生则退出
If TextBox1.Text = "" Or TextBox6.Text = "" Then
MsgBox "姓名和工作部门不能为空!", vbInformation, "修改记录"
Exit Sub '姓名或工作部门为空则退出
End If
Dim rst As New ADODB.Recordset
Dim temp$, i&, j&, s$
With ListView1
If Len(.ListItems(n)) Then s = " and " & rs.Fields(0).Name & " = '" & .ListItems(n) & "'"
For i = 0 To rs.Fields.Count - 1 '逐个字段
temp = temp & rs.Fields(i).Name & " = '" & Me.Controls("TextBox" & i + 1).Text & "'," '更新记录字符串
If i > 0 Then If Len(.ListItems(n).SubItems(i)) Then s = s & " and " & rs.Fields(i).Name & " = '" & .ListItems(n).SubItems(i) & "'"
Next i
End With
On Error Resume Next
' SQL = "update 数据库 set " & Left(temp, Len(temp) - 1) & " where " & rs.Fields(0).Name & "='" & ary(0) & "' and " & rs.Fields(i - 1).Name & "='" & ary(1) & "'" '姓名和工作部门都相同的视为同一个人
SQL = "update 数据库 set " & Left(temp, Len(temp) - 1) & " where " & Mid(s, 6) '所有记录都相同才认为是同一条记录
Set rst = cnn.Execute(SQL) '执行更新
Set rst = Nothing
SQL = "select * from 数据库 "
If 模糊查询.Text = "" Then Call 显示数据(SQL) Else 模糊查询.Text = "" '刷新ListView1数据
Call 清空文本框
MsgBox "已在数据库中将该记录修改!", vbInformation, "修改记录"
n = 0 '本次单击结束
End Sub |
|