返回列表 发帖
么装vb  你去csdn的vb/delphi版块问啊.. 那里高手如云- -


其实时间总是那么快

TOP

...

SQL是不区别大小写的..

语法是成立的,但逻辑上有错误- -

找Uid为某某的Uid??



ps.一般有编译器环境做软件,报错,或结果有出入就跟踪一下啊.. 每步每步对照问题出在哪....




[ 本帖最后由 .lemon. 于 2007-6-28 14:44 编辑 ]
其实时间总是那么快

TOP

原帖由 蜡烛鞭三郎 于 2007-6-28 14:47 发表



表字段不区分大小写?


8区别的..自己开查询分析器试下不就知道了..
其实时间总是那么快

TOP

我觉得还是逻辑错误,纪录集最常见的报错,要么是空,要么索引器超出范围..


其实时间总是那么快

TOP

楼主改下select语句,你这个逻辑有问题.纪录集为空,  你EOF不报错才怪..

select count(*) from userinfo where uid=txtUserName的内容

具体代码我就不细说了(其实n久不做vb忘了语法.. - -)

思路是sql返回的是你当前符合txtUserName输入内容的数量..

结果赋给一个变量..

如果是0 则证明没有这条数据


[ 本帖最后由 .lemon. 于 2007-6-28 15:10 编辑 ]
其实时间总是那么快

TOP

Private Sub cmdOK_Click()
    Dim mrc As ADODB.Recordset
    Dim strmsg As String
    txtSQL = "select count(*) from userinfo where UID='" & Trim(txtUserName.Text) & "' and PWD="'" & Trim(txtPassword.Text) & '"
    Set mrc = ExecuteSQL(txtSQL, strmsg)
    Dim return_count
    return_count=mrc.Fields(0)
   if return_count=0 then
      MsgBox " 用户名不存在或密码错误!", vbExclamation + vbOKOnly, "警告"
  end if
    OK = True
    frmMain.Show
    Unload Me
End Sub


试下吧..

根据你写的改的..


[ 本帖最后由 .lemon. 于 2007-6-28 15:43 编辑 ]
其实时间总是那么快

TOP

不对..

VB声明变量是Dim吧?

= =

常时间不用都忘光了..改了下


[ 本帖最后由 .lemon. 于 2007-6-28 15:25 编辑 ]
其实时间总是那么快

TOP

头晕了..

VB的语法什么我真不大记得路 反正就是


txtSQL = "select count(*) from userinfo where UID='" & Trim(txtUserName.Text) & "' and PWD='" & Trim(txtPassword.Text) & "'"


这段SQL执行的结果,算出同时符合你文本框输入的UserName和Password 的值的数量..

它返回在纪录集里的,就一条纪录:符合结果的数量,如果这个数量=0说明没有这条数据..登陆失败..


你原来PW条件后面还有点问题.. 第一个等号后面不应该用两个双引号. 改了下.


[ 本帖最后由 .lemon. 于 2007-6-28 15:36 编辑 ]
其实时间总是那么快

TOP




你真的去试了么?
其实时间总是那么快

TOP

        Dim mrc As ADODB.Recordset
        Dim strmsg As String
        txtSQL = "select count(*) from userinfo where UID='" & Trim(txtUserName.Text) & "' and PWD='" & Trim(txtPassword.Text) & "'"
        mrc = ExecuteSQL(txtSQL, strmsg)
        Dim return_count
        return_count = mrc.Fields(0)
        If return_count = 0 Or return_count = "0" Then
            MsgBox(" 用户名不存在或密码错误!", vbExclamation + vbOKOnly, "警告")
        End If
        OK = True
        frmMain.Show()
        Unload(Me)



再试下.. 应该没问题的啊..
其实时间总是那么快

TOP


我22楼是对20楼讲的- -||||

楼上再试下我23楼的代码


[ 本帖最后由 .lemon. 于 2007-6-28 15:58 编辑 ]
其实时间总是那么快

TOP

报在这句上?

If return_count = 0 Or return_count = "0" Then
其实时间总是那么快

TOP

原帖由 马小玲的眼泪 于 2007-6-28 15:44 发表
虽然各位尚未解决,但依然感谢各位的热心,暂奉上微薄积分。。

如果哪位朋友机器上恰好装了VB+SQL,能够帮忙调试,那就大好了。。


问题是你好多方法都是封装好的..

比如那ExecuteSQL..
其实时间总是那么快

TOP

回28楼..

你在国内市场上买的无论哪一款SQL2000 or 2005. 在默认设置下,是绝对不区别大小写的.

你有这种情况,只能说是特例.. 要么你的环境特别设置过,要么日文版的问题.
其实时间总是那么快

TOP

原帖由 蜡烛鞭三郎 于 2007-6-28 16:08 发表
ExecuteSQL没有封装

在MOD模块里

Public Function ExecuteSQL(ByVal SQL _
   As String, MsgString As String) _
   As ADODB.Recordset
'executes SQL and returns Recordset
   Dim cnn As ADODB. ...


那就是我记不大得了..

你有vb环境把她改下就好了..

很简单的一个登陆 扯这么多出来..
其实时间总是那么快

TOP

返回列表