帮我看下这段vb代码有什么问题,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:27:24
Private Sub Command2_Click()
Dim Cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String

If MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1) <> "" Then

sql = "select * from TMS_Employee where Employee_id='MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1)'"
rs.Open sql, Cnn, 3, 1
MsgBox (MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1))
MsgBox (rs.RecordCount)
我用的是vb连sql数据库,当中我省略了连接的代码。这段代码我是想从一个msflexgrid表中取出所选纪录的第一列的内容和数据库中一个表的employee_id做比较,列出所有字段。第一个msgbox能显示出我所想要得字段,但是第二个msgbox一直是现实0,就是说明没有字段符合,可是我检查国有符合的字段,比如我在msflexgrid中选择了111111的纪录,第一个msgbox能显示出111111,但是第二个msgbox显示却是0,这是为什么呀?(数据库里有employee_id=111111的纪录)

你的代码有几处问题:
1 Dim rs As ADODB.Recordset rs没有实例化
2 sql = "select * from TMS_Employee where Employee_id='MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1)'" 如果字段Employee_id为数字类型,你加单引号就错了.
3 MsgBox (rs.RecordCount) 这种写法是不安全的,有可能值为-1

sql = "select * from TMS_Employee where Employee_id='MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1)'"
改成
sql = "select * from TMS_Employee where Employee_id='"&MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel, 1)&"'"
试试吧.