Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルユーザ定義型は定義されていません
記事No10900
投稿日: 2018/08/01(Wed) 16:44
投稿者nk
解決済: ON
OS:windows7
Access Version:2013

初学者です。
お試しでログイン機能を実装してみようかと思ったのですが、ググッてもよく分からないエラーが出た為、
投稿させていただきました。
下記サイトを参考に実装を進めてみましたが、
ユーザ定義型は定義されていませんと表示されてしまいます。
解決策を知っている方がいましたら力を貸してください。
宜しくお願いします。

参考にしたサイト
http://accessvba.pc-users.net/ado/


Private Sub コマンド4_Click()
Dim yn As String
Dim userac As String
Dim serch As String
Dim adb As New ADODB.Recordest ←ココでエラー

If ID = "" Then

MsgBox "IDが未入力です。"

ElseIf pass = "" Then

MsgBox "Passwordが未入力です。"

Else
'テキストボックスの値がテーブル上にあるか確認
serch = "SELECT user FROM user_list WHERE user_id = id AND user_pass = pass"

adb.Open serch, CurrentProject.Connection

Do Until adb.EOF
userac = adb!User

adb.MoveNext

Loop
adb.Close

If yn = userac Then

MsgBox "IDかPasswordが違います。"
Else
' DoCmd.OpenForm "名簿一覧表示", acNormal, , , acFormEdit, acWindowNormal
End If

End If

End Sub

タイトルRe: ユーザ定義型は定義されていません
記事No10901
投稿日: 2018/08/02(Thu) 01:15
投稿者mayu
解決済: ON
ご希望の認証機能は、DCount関数で実装できるでしょう。

Private Sub コマンド4_Click()
  If IsNull(Me.ID.Value) Or IsNull(Me.pass.Value) Then
    MsgBox "IDとパスワードは必須入力です"
    Exit Sub
  End If
  If DCount("*", "user_list", "user_id = '" & Me.ID.Value & "' AND user_pass = '" & Me.pass.Value & "'") = 0 Then
    MsgBox "IDかPasswordが違います。"
    Exit Sub
  End If
  Rem DoCmd.OpenForm "名簿一覧表示", acNormal, , , acFormEdit, acWindowNormal
End Sub


以下、掲載いただいたコードについて。

> Dim adb As New ADODB.Recordest ←ココでエラー

オブジェクト変数の宣言に New は不要で
インスタンスの生成は Setステートメントを用います。

Dim adb As ADODB.Recordset
Set adb = New ADODB.Recordset

> If ID = "" Then
> ElseIf pass = "" Then

ID や pass って何でしょうか。
コントロール名なら Me.ID や Forms("フォーム名").Controls("pass")
というように
所属するオブジェクト名をきちんと明記しましょう。

> 'テキストボックスの値がテーブル上にあるか確認
> serch = "SELECT user FROM user_list WHERE user_id = id AND user_pass = pass"

変数は リテラル値の外に出して、アンパサンドで繋ぐようにしないと
インターフェース上の入力値を SQL文に反映させられず、
意図しないパラメータクエリになってしまいます。

また、テキスト型のフィールドへ抽出条件を記述する場合は
値の前後に 単一引用符 か 二重引用符 のいずれかが必要になります。

serch = "SELECT user FROM user_list " _
   & "WHERE user_id = '" & Me.ID & "'" _
   & "  AND user_pass = '" & Me.pass & "'"

> Do Until adb.EOF

ループ不要です。EOFの判定のみでよろしいでしょう。

タイトルRe^2: ユーザ定義型は定義されていません
記事No10902
投稿日: 2018/08/02(Thu) 09:33
投稿者nk
解決済: ON
mayuさん

ありがとうございました。


投稿後に気がついたですが、
> Dim adb As New ADODB.Recordest ←ココでエラー
についてはスペルミスのようでした。
スペルミスに3時間ほど悩んでしまってかなり残念な感じです。

認証方法についてはそのような関数があることを知らなかったため非常に勉強になりました。
ありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る