标题:参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突
只看楼主
j976362986
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-16
结帖率:0
已结贴  问题点数:20 回复次数:11 
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突
Dim ASK As Integer, DLSF As String
Dim db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Private Sub Command1_Click()
If Text1.Text = "" Then
    MsgBox "你没有填写登录用户名,请填写!", 16, "提示!"
    Exit Sub
End If
If Text2.Text = "" Then
    MsgBox "你没有填写登录用户密码,请填写!", 16, "提示!"
    Exit Sub
End If
If DLSF = "" Then
    MsgBox "你没有选择用户身份,请选择!", 16, "提示!"
    Exit Sub
End If
End Sub
Private Sub Form_Load()
Dim SQLM As String
db.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\three1.mdb"
db.Open
SQLM = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD='" & DLSF & "'"
RS.Open strSQL, db, 2, 2
RS.Open
If Not RS.EOF Then
 If RS!密码 = Text2.Text Then
 MsgBox "祝贺你!你已经成功登录!", 64, "登录成功!"
 If DLSF = "管理员" Then
 Form2.Show
 ElseIf DLSF = "用户" Then
 Form5.Show
 End If
 Unload Me
Else
  MsgBox "对不起!你输入的用户密码不正确,请重新输入!", 16, "密码错误!"
  ASK = ASK + 1
  Text2.Text = ""
  Text2.SetFocus
  End If
Else
  MsgBox "对不起!你输入的用户名不正确,请重新输入!", 16, "用户名错误!"
  ASK = ASK + 1
  Text1.Text = ""
  Text2.Text = ""
  Text1.SetFocus
End If
RS.Close
db.Close
If ASK >= 3 Then
 MsgBox "对不起,你已经连续三次输入错误,不能继续登录,程序就退出!", 16, "登录超次!"
 End
End If
End Sub
Private Sub Option1_Click(Index As Integer)
If Option1(0).Value = True Then
DLSF = "管理员"
ElseIf Option1(1).Value = True Then
DLSF = "用户"
End If
End Sub
搜索更多相关主题的帖子: Sub If Text Then End 
2017-12-16 23:37
j976362986
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-16
得分:0 
求大佬解答
2017-12-16 23:37
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:10 
咨询问题,最好上传全部代码【包含附带的数据库等】,否则别人还需要码数据库、窗体等,一般不好分析。

你的程序是因为打开的sql查询不匹配。
你定义的查询为SQLM
SQLM = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD='" & DLSF & "'"
打开时用的strSql
RS.Open strSQL, db, 2, 2

以上名称改为一致,就不会报参数不对了。


[此贴子已经被作者于2017-12-17 12:08编辑过]

2017-12-17 08:46
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:10 
回复楼主 j976362986:
SQLM = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD='" & DLSF & "'"
你的SQL字符串是SQLM
RS.Open strSQL, db, 2, 2
而打开数据表的记录集是strSQL,因为没有这个SQL字符串,不好说。
不过一般“参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突是SQL字符串不正确引起的,例如你上面的SQLM字符串中,ID的字段数据类型如果是自动编号字段就不正确。
自动编号字段数据类型是长整型数字数据,因此应该修改为: ID=" & Val(Text1.Text) & "  ,注意没有单引号!并且必须转换为数字数据。凡是数字数据在SQL字符串中均应该这样处理。
PASSWORD字段如果是字符数据,那么 PASSWORD='" & DLSF & "' 应该没有错误。

请不要选我!!!
2017-12-17 11:37
j976362986
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-16
得分:0 
回复 3楼 wds1
Dim SQL As String
db.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\three1.mdb"
db.Open
SQL = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD='" & DLSF & "'"
RS.Open strSQL, db, 2, 2
RS.Open
还是参数不对。。
2017-12-17 13:37
j976362986
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-16
得分:0 
回复 3楼 wds1
数据库vb.rar (47.06 KB)
2017-12-17 13:39
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
回复楼主 j976362986
看了一下,不知道你这个是从那里下载的,问题比较多,
Private Sub Option1_Click(Index As Integer)
If Option1(0).Value = True Then
DLSF = "管理员"
ElseIf Option1(1).Value = True Then
DLSF = "用户"
End If
End Sub
但界面上没有Option1,因此,DLSF 变量始终是空值。
另外根据你的数据库连接代码,你的引用好像也不正确,没有ADO的引用,只有DAO的引用,因此不支持ADO的数据库连接。
再者,登录代码不是在Command1_Click事件中,而是在Form_Load启动事件,这样程序启动没有输入文本框数据就已经登录了,能不出错吗?
今天晚上给你修改一下,明天给你修改的程序。

请不要选我!!!
2017-12-17 20:40
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:0 
回复 5楼 j976362986
回复:参数对了,才出鬼了。

Dim SQL As String
db.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\three1.mdb"
db.Open
SQL = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD='" & DLSF & "'"
RS.Open strSQL, db, 2, 2
RS.Open
还是参数不对。。

你的参数是SQL,打开语句如下
RS.Open SQL, db, 2, 2
2017-12-17 21:53
j976362986
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-16
得分:0 
回复 7楼 ZHRXJR
自己写的
2017-12-17 22:10
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:0 
数据库vb.rar (57.31 KB)

代码简单修改了一下。
主要问题:
1、要引用DAO控件,支持adodc数据连接
2、没有option1的选择按钮,我把你的command1按钮改为选择管理员还是用户
3、数据库查询,不该放在主程序load,否则没有输入调用会报错
4、原来的sql声明和打开文件的还是不一致。另外字符型调用加【'】,数值型的不加【'】,我看了你的mdb,修改sql

Private Sub Form_Load()
  Me.Show
  Text1.SetFocus
End Sub

Private Sub Command1_Click(Index As Integer)
  If Index = 0 Then DLSF = "用户"
  If Index = 1 Then DLSF = "管理员"
  If Text1.Text = "" Then
    MsgBox "你没有填写登录用户名,请填写!", 16, "提示!"
    Exit Sub
  End If
  If Text2.Text = "" Then
    MsgBox "你没有填写登录用户密码,请填写!", 16, "提示!"
    Exit Sub
  End If
  If DLSF = "" Then
    MsgBox "你没有选择用户身份,请选择!", 16, "提示!"
    Exit Sub
  End If
  Call login
End Sub

Sub login()
  Dim ASK As Integer, DLSF As String
  Dim db As New Connection
  Dim RS As New Recordset
  Dim SQL As String
  db.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\three1.mdb"
  db.Open
  SQL = "Select * From Password Where ID='" & Text1.Text & "' And PASSWORD=" & Val(Text2.Text)
  RS.Open SQL, db, 2, 2
  If Not RS.EOF Then
    If RS.Fields(1) = Text2.Text Then
      MsgBox "祝贺你!你已经成功登录!", 64, "登录成功!"
      If DLSF = "管理员" Then
        Form2.Show
      ElseIf DLSF = "用户" Then
        Form5.Show
      End If
      Unload Me
    Else
      MsgBox "对不起!你输入的用户密码不正确,请重新输入!", 16, "密码错误!"
      ASK = ASK + 1
      Text2.Text = ""
      Text2.SetFocus
    End If
  Else
    MsgBox "对不起!你输入的用户名不正确,请重新输入!", 16, "用户名错误!"
    ASK = ASK + 1
    Text1.Text = ""
    Text2.Text = ""
    Text1.SetFocus
  End If
  RS.Close
  db.Close
  If ASK >= 3 Then
    MsgBox "对不起,你已经连续三次输入错误,不能继续登录,程序就退出!", 16, "登录超次!"
  End
  End If
End Sub


[此贴子已经被作者于2017-12-17 22:35编辑过]

2017-12-17 22:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483453-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.166211 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved