用ADO连SQL时的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 13:24:27
我需要用rs去查询表,然后对查询到的这一行的某一个数值进行修改,但是ADODC1的RECORDSET的指针不随着rs的查询走一直停在第一行,怎么办?
各位说的我都知道,但是问题是我这个要修改的fields是由应用者来决定是哪个的,所以我把这个FIELDS用一个变量代替,但是这个变量肯定不能写进SQL语句里,我只能先找到要改的那行,然后用一个TEXT去绑定这个变量决定的FIELDS。我查询的SQL语句已经保证了只查到唯一的一条我需要的记录,但是我用rs.update修改没用,有ADODC1.RECORDSET.MOVENEXT的话永远都只修改表的第一行。。。
一楼的办法试了,但是我只要修改表里面不确定的某一行的某一个fields,所以只能用指针去指向它,不能把所有的都改了

使用Recordset的MoveFirst和MoveNext就可以实现。
Dim RS As ADODB.Recordset
Dim I As Integer
Dim tSQL As String
Dim Val1
RS.ActiveConnection = "连接套接字"
tSQL = "查询语句"
RS.Open tSQL, , adOpenStatic, adLockOptimistic
If RS.RecordCount > 0 Then
RS.MoveFirst
For I = 1 To RS.RecordCount
Val1 = RS.Fields(0)
RS.MoveNext
Next I
End If

一般修改数据库的值,直接用update 表名 set 字段=值 where 条件 就行了,如果你条件是返回多条记录的,那么将同时修改多条记录,一般情况下是不会用到指针的。

如果你是用rs.update的话

rs.open sql ,conn,3,3
rs("字段名")=新值
rs.update
用rs.move 记录数来移动指针

要修改?
建议在查询窗体上加一个DATAGRID,查询出来的记录在里边显示。修改DATAGRID的属性,勾上修改。
之后你就可以直接在datagrid中做修改了。之后再来一个rst.update.

这个方法就是不用知道FIELDS,用户修改的时候,只要rst.update就会把整条记录更新。
而定位这个记录位置的工作交给datagrid就可以了。将查询出来的记录在datagrid中显示,直接在datagrid中修改,加个按钮,更新一下。就直接改掉记录了