VB中对access模糊查找后,MSHFlexGrid里面显示不全

2025-03-18 02:26:23
推荐回答(1个)
回答1:

Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As String

Private Sub Command1_Click()
Dim s As Integer, i As Integer
If Combo1.Text = "编号" Then
    cmd = "select * from sharetable where ID=" & Val(Text1.Text)
ElseIf Combo1.Text = "文件名" Then
    cmd = "select * from sharetable where 文件名 like '%" & Text1.Text & "%'"
Else
    cmd = "select * from sharetable where IP地址 like '%" & Text1.Text & "%'"
End If
rs.Open cmd, conn, 3, 2
s = rs.RecordCount
With MSHFlexGrid1
    .Cols = 3   '这个可以设置,你需要显示的列数
    .Rows = s + 1
    .TextMatrix(0, 0) = "编号"   '设置列名称
    .TextMatrix(0, 1) = "文件名"
    .TextMatrix(0, 2) = "IP地址"
    For i = 1 To s
    .TextMatrix(i, 0) = rs!ID    '读取数据表字段的值
    .TextMatrix(i, 1) = rs!文件名
    .TextMatrix(i, 2) = rs!IP地址
    rs.MoveNext
    Next i
End With
rs.Close
End Sub

Private Sub Form_Load()
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\share.mdb;" & "Persist Security Info=False;"
conn.Open
Combo1.AddItem "编号"
Combo1.AddItem "文件名"
Combo1.AddItem "IP地址"
End Sub

Private Sub Form_Unload(Cancel As Integer)
conn.Close
End Sub

问题1:模糊查询关键字Like后面是一个百分号,不能是二个百分号。

2、显示全部记录必须浏览全部记录集,你原来的代码只能显示一条记录。

3、其实使用数据库连接对象conn,记录集对象rs已经足够了,不需要cmd对象,我已经将cmd修改为字符串变量了。