如何将指针指向查询的那条记录?
我在FORM1里拉了个Adodc控件和DataGrid控件,三个文本框。一个CommandButtonADODC连接的数据库里有表“计算机”
表字段有计算机名称、IP地址、MAC地址,字段类型全是字符型!
下面是Button的代码!
Private Sub ViemS_Click()
Dim Txtsel As String
Txtsel = ComputerName.Text
On Error GoTo errorhandler '如果出现主索引重复,则跳转到错误的地方!
If ComputerName.Text <> "" Then
Adodc1.RecordSource = "select * from 客户机 where 计算机名称 ='" & Txtsel & "'"
ComputerName.Text = Adodc1.Recordset.Fields("计算机名称")
ComputerIP.Text = Adodc1.Recordset.Fields("IP地址")
ComputerMAC.Text = Adodc1.Recordset.Fields("MAC地址")
Else
MsgBox "计算机名称不能为空!", , "查询错误"
End If
Exit Sub
errorhandler: MsgBox "主索引不能为空", , "出错"
End Sub
我查询到的是不我想要的信息,而是DataGrid指针指向的那条记录的信息!这是为什么呢,
--------------------编程问答-------------------- 没明白你的意思,但
Adodc1.RecordSource = "select * from 客户机 where 计算机名称 ='" & Txtsel & "'"
后面应加Adodc1.refresh吧 --------------------编程问答-------------------- 不用adodc控件,直接用ado.recoreset对象很容易做到。 --------------------编程问答--------------------
对,这个很容易做
下面的几个函数是我经常用的,使用的是ADO对象
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:连接指定的数据库
'参数说明:cnnP:数据库连接对象;
' :adoP:数据集存储对象;
' :strPath:数据库路径;
' :strPassword:数据库密码;
'返回说明:True:连接成功 False:连接失败
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funConnectDataBase(cnnP As ADODB.Connection, adoP As ADODB.Recordset, ByVal strPath As _
String, ByVal strPassword As String) As Boolean
On Error GoTo errFunction
Set cnnP = New ADODB.Connection
Set adoP = New ADODB.Recordset
cnnP.Provider = "Microsoft.Jet.OLEDB.4.0"
cnnP.Open "Data Source = " & strPath & ";jet oledb:database password=" & strPassword
funConnectDataBase = True
Exit Function
errFunction:
funConnectDataBase = False
End Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:关闭数据库连接对象和数据文件的关联
'参数说明:cnnP:数据库连接对象;
' :adoP:数据库存储对象;
'返回说明:True:关闭连接成功 False:关闭连接失败
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funCloseDataBase(cnnP As ADODB.Connection, adoP As ADODB.Recordset) As Boolean
On Error GoTo errFunction
Set adoP = Nothing
Set cnnP = Nothing
funCloseDataBase = True
Exit Function
errFunction:
funCloseDataBase = False
End Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'过程功能:对指定的对象执行指定的SQL语句
'参数说明:cnnP:ADO连接对象
' :adoP:ADO记录集对象
' :strSql:SQL语句
' :bolQueryRecord:是否是查询记录集
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Public Sub subExcuteSQL(cnnP As ADODB.Connection, adoP As ADODB.Recordset, strSql As String, bolQueryRecord _
As Boolean)
If bolQueryRecord Then '如果是查询记录集
adoP.Open strSql, cnnP, adOpenStatic, adLockBatchOptimistic
Else
cnnP.Execute strSql
End If
End Sub --------------------编程问答-------------------- 首先,把输入和输出用同一个textbox不太好吧
其次,这个ADODC感觉不需要
dim sql as string
sql = "select * from 客户机 where 计算机名称 ='" & Txtsel & "'"
With rs
.Source = sql
.ActiveConnection = cnn
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open , , , , adCmdText
End With
ComputerName.Text = rs!计算机名称
ComputerIP.Text = rs!IP地址
ComputerMAC.Text = rs!MAC地址
(rs和cnn需要自己定义连接一下)
补充:VB , 基础类