VBで文書検索を行うシステムを作っているのですが、文字列を変えて検索するたびにMSHFlexGrid上に表示されるレコードが増えていきます。原因がわかりません。よろしくお願いします。
Private Sub Command1_Click()
Dim kubun As String '文字列型
Dim mojiretsu_k As String '文字列型
Dim A As Integer '
Dim cn As New ADODB.Connection 'データベースに接続するためのコネクションオブジェクト
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim strSQL As String
Dim i As Integer
If Option7 = True Then
ElseIf Option8 = True Then
kubun = "a"
ElseIf Option9 = True Then
kubun = "b"
ElseIf Option10 = True Then
kubun = "c"
ElseIf Option11 = True Then
kubun = "d"
ElseIf Option12 = True Then
kubun = "e"
ElseIf Option13 = True Then
kubun = "f"
ElseIf Option14 = True Then
kubun = "g"
ElseIf Option15 = True Then
kubun = "h"
ElseIf Option16 = True Then
kubun = "i"
ElseIf Option17 = True Then
kubun = "j"
End If
Set cn = New ADODB.Connection
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=aaa.mdb;" & _
"Mode=Read"
cn.Open
Set rst = New ADODB.Recordset
' レコードソースにSQL文を指定
mojiretsu_k = Text1.Text
If Option18.Value = True Then '現行文書のみ検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = False order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = False order by ID"
End If
ElseIf Option19.Value = True Then '廃止文書のみ検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = true order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = true order by ID"
End If
ElseIf Option20.Value = True Then '現行+廃止文書を検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ order by ID"
End If
End If
rst.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText
i = 0
Do While Not rst.EOF
With Form1.MSHFlexGrid1
.AddItem ""
.TextMatrix(i, 0) = rst.Fields("資料区分")
.TextMatrix(i, 1) = rst.Fields("資料名称")
.TextMatrix(i, 2) = rst.Fields("ファイルパス")
End With
i = i + 1
rst.MoveNext
Loop
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
End Sub
お礼
ご回答ありがとうございました。 おかげさまで問題解決致しました。