dポイントプレゼントキャンペーン実施中!

下記のソースは、
UserIDとPasswordをDBと照らし合わせて、
そのUserが存在すればTrue、存在しなければFalse
を返すというプログラムです。

しかし初めてDBに接続し、まったく右も左も分からない
状況なので処理的におかしな点を教えていただけないでしょうか。
またDB接続からSQL実行までの簡単な流れを教えていただけると助かります。

adoRs = ADODB.Recordset
adoCn = ADODB.Connection
adoCd = ADODB.Command

Login.txtName.Text = 比較するユーザー名
Login.txtPass.Text = 比較するパスワード

です。その他わかりにくい点があったら質問を
お願いします。

Private Function Func_UserSerch() As Boolean

Func_UserSerch = False

On Error GoTo UserSerchError

'レコードセットの取得
With adoRs
.ActiveConnection = adoCn
.Source = "user"
.CursorType = adOpenStatic
.LockType = adOpenForwardOnly
.Properties("IRowsetIdentity") = True
.Open
End With

MySQL = "SELECT * FROM user " & _
"WHERE UserID = " & Login.txtName.Text & _
"AND Password = " & Login.txtPass.Text & ";"

'SQLの実行
With adoCd
.ActiveConnection = adoCn
.CommandType = adCmdStoreProc
.CommandText = MySQL
.Execute
End With

If adoRs.EOF = True And adoRs.BOF = True Then

Func_UserSerch = False

Else

Func_UserSerch = True

End If

UserSerchError:
MsgBox "SQL実行中にエラーが発生しました"

End Function

A 回答 (2件)

動くサンプルを作ってみました。



DBファイルはC:\VB\DB\USER.mdb

ポイントはパラメータが文字列の場合、" ' " で囲ってやる必要があるところです。
TrueかFalseはレコード数でチェックしてはどうでしょうか? 0でなければ True・・・


Private Function Func_UsemyRSerch()

Dim myCN As ADODB.Connection
Dim myRS As ADODB.Recordset
Dim mySQL As String
Dim Para(1) As String


' データベースに接続
Set myCN = New ADODB.Connection
myCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\VB\DB\USER.mdb"
myCN.Open

Para(0) = "UserName" 'ID
Para(1) = "PassWord" 'PASS

' 選択クエリーを作成 (文字列は " ' " で囲む必要あり)
mySQL = "SELECT * FROM ユーザー管理 " _
& "WHERE ユーザー名 = '" & Para(0) & "' AND パスワード = '" & Para(1) & "'"


' レコードセットを取得
Set myRS = New ADODB.Recordset
myRS.Open mySQL, myCN, adOpenStatic

'認証されるかどうかはレコード数でチェック
If myRS.RecordCount >= 1 Then
Func_UserSerch = True
Else
Func_UserSerch = False
End If

End Function
    • good
    • 0

とりあえずはどのMDBに接続するかが抜けている気がします。



Set adoCn = New ADODB.Connection

adoCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\VB6\DB\abc.mdb"

adoCn.Open

って感じでしょうか?

この回答への補足

ありがとうございます。
この処理は記載していないのですが、
別のFuncutionで行っていると思います。
説明不足でした。

補足日時:2003/09/03 14:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!