こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB6でmdbファイルのレコードを検索かけた場合に時折エラーがでます。

VB6.0を使って資料のデーターベースを作っているのですが、質問させてください。
アクセスのmdbファイルからデータを読みとり、Command1ボタンを押した際にテキストボックスに入力した任意の文字列が含む資料名のレコードを抽出する機能を持たせています。
また、OPTIONボタンでA~Jまでの資料区分ごとに絞り込みを行う機能(option7を押した場合は全資料区分から検索)も持たせているのですが、テキストボックスに文字列を入力後、OPTIONボタンで資料区分Aを検索⇒Command1ボタン⇒OPTIONボタンで資料区分B⇒Command1ボタン等のように繰り返しての検索をすると時折フリーズして動かなくなります。特に該当レコードが0の後に発生する場合が多いようです
原因が分からず困っています。よろしくお願いします。


Private Sub Command1_Click()
Dim kubun As String '文字列型 資料の区分
Dim mojiretsu_k As String '文字列型 検索用文字列
Dim a 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

' 接続文字列を設定
Adodc1.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=資料.mdb;" & _
"Mode=Read"
' レコードソースにSQL文を指定
mojiretsu_k = Text1.Text

If Option18.Value = True Then '現行文書のみ検索
If Option7.Value = True Then'全文書区分から検索
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = False order by ID"
Else'指定された資料区分で検索
Adodc1.RecordSource = "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
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = true order by ID"
Else
Adodc1.RecordSource = "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
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' order by ID"
Else
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ order by ID"
End If
End If

' データを再取得
Adodc1.Refresh


With MSHFlexGrid1
.FocusRect = flexFocusNone
.HighLight = flexHighlightAlways
End With
End Sub

投稿日時 - 2008-07-08 06:04:14

QNo.4159820

困ってます

質問者が選んだベストアンサー

ADODC1が何なのかよくわからないのでサンプルを書いておきます。

■ADOの接続

Dim oConn As ADODB.Connection
Dim oRec As ADODB.Recordset

Set oConn = New ADODB.Connection
'________mdb________にmdbまでのフルパスを書く
oConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=________mdb________")
'________SQL________に作成したSQL文
Set oRec = oConn.Execute("________SQL________")
While Not oRec.EOF
'________COL________にmdbのカラム名を書く
Debug.Print oRec.Fields("________COL________").Value
oRec.MoveNext
Wend

oRec.Close
Set oRec = Nothing
oConn.Close
Set oConn = Nothing


エラーになる原因は0件の場合に
With MSHFlexGrid1
.FocusRect = flexFocusNone
.HighLight = flexHighlightAlways
End With
で何をどこに入れるか判断が付かないのかなって思われます。

0件の時に回避できるようにしてはどうでしょうか?

投稿日時 - 2008-07-08 11:15:35

お礼

お礼が遅くなり申し訳ありませんでした。
ご回答ありがとうございました。

投稿日時 - 2008-07-26 01:40:06

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問