投稿日 | : 2004/09/14(Tue) 15:22 |
投稿者 | : ももたろう |
Eメール | : |
URL | : |
タイトル | : Re^4: mdb検索方法 |
できました!!ありがとうございました。(修正後のコードを下記に貼り付けておきます)
> DAOは使ったこと無いので分かりませんが、このrsはDAOのRecordSetオブジェクトなんでしょうか?
> もし参照設定でADOとDAOの両方を指定していた場合、優先順位が上にある方が使われます。
> 宣言する時は
>
> Dim rs As DAO.Recordset
>
> のようにする癖を付けて下さい。
参照設定で、DAOも設定しており、ADOより上になっていたので、参照設定をはずしました。
> ちなみに私ならADOでこんな感じ↓にしますね。
> まァ、どういう風に使う関数なのか分からないので適当ですけど。
>
>
> Private Function search(file As String, Pin As String, Symbol As String) As String
> Dim cn As ADODB.Connection
> Dim rs As ADODB.Recordset
> Dim strSQL As String
> Dim sFlagmdb As String
>
> Set cn = New ADODB.Connection
> Set rs = New ADODB.Recordset
>
> With cn
> .ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\seishiki.mdb"
> .Open
> End With
>
> '選択クエリーを設定
> strSQL = "select count(*) as [num] " & _
> "from search " & _
> "where([ファイル名] = '" & Left$(file, 2) & "' and " & _
> "[ピン数] = " & Pin & " and " & _
> "[シンボル名1] = '" & Symbol & "')"
>
> With rs
> .Open strSQL, cn, adOpenStatic, adLockReadOnly
>
> sFlagmdb = !num
>
> .Close
> End With
>
> cn.Close
>
> Set rs = Nothing
> Set cn = Nothing
>
> search = sFlagmdb
> End Function
'***ここからが修正後のソースです***
Private Function search(file As String, Pin As String, Symbol As String, i As Long, row1 As Integer)
Dim cn As New ADODB.Connection 'データベースに接続するためのコネクションオブジェクト
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim sFlagmdb As String 'mdbに存在するかのフラグ
Set cn = New ADODB.Connection
'コネクションを開く
cn.Open ("provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\seishiki.mdb")
Set rs = cn.Execute("SELECT * FROM search WHERE ファイル名 = '" & Left(file, 2) & "' and ピン数 = '" & Pin & "' and シンボル名1= '" & Symbol & "';")
'mdb検索
sFlagmdb = 0
With rs
Do While Not .EOF
If .EOF = True Then
sFlagmdb = 0
Exit Do
Else
sFlagmdb = 1
Debug.Print rs![ファイル名] & " " & rs![ピン数] & " " & rs![シンボル名1]
.MoveNext
End If
Loop
End With
'Recordsetオブジェクトを閉じる
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Function