设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2235|回复: 4
打印 上一主题 下一主题

[ADO/DAO] 请教ADO连接SQLserver的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-6-26 12:51:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个问题:
首先说明一下,我是用用户名或拥护ID来登陆,由于同一用户的名字和ID都唯一,所以对应的密码是唯一的,就是方便使用者。

1、首先是判断当前用户或用户ID是否存在的问题。
我参考了一下“红尘如烟”的事例,修改了以下,代码如下:
  1. Private Sub UserName_AfterUpdate()
  2. Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
  3. Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
  4. Dim strCn As String, strSQL As String '字符串变量
  5. strCn = "Provider=sqloledb;Server=10.52.111.8;Database=CRM;Uid=sa;Pwd=;" '定义数据库链接字符串
  6. cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn

  7. strSQL = "select * from CRM.dbo.userA where psnam='" & UserName & "'" '定义SQL查询命令字符串
  8. cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
  9. rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中

  10. If rs.RecordCount = 0 Then
  11. setFormPos Me, False
  12. MsgBox "此用户不存在!", vbCritical, " "
  13. UserName = ""
  14. rs.Close
  15. Set rs = Nothing

  16. End If
  17. End Sub

复制代码

我的意思是如果数据库表USERA不存在当前用户,则RS肯定是空的,来做判断条件,但好象有问题,一时搞不明白问题出在什么地方了~~
大家帮我看看。

2、是在登陆的使用,怎么感觉我的判断条件不起作用,密码对不对,用户对不对都可以直接进去了,汗~~,代码如下:
  1. Private Sub cmdYY_Click()
  2. On Error Resume Next
  3. Static n As Integer

  4. If Nz(Me.UserName) = "" Then

  5. setFormPos Me, False
  6. MsgBox "请输入用户名!", vbInformation, " "
  7. Me.UserName.SetFocus
  8. Exit Sub
  9. End If

  10. If Nz(Me.Password) = "" Then
  11. setFormPos Me, False
  12. MsgBox "请输入密码!", vbInformation, " "
  13. Me.Password.SetFocus
  14. Exit Sub
  15. End If

  16. Dim cn As New ADODB.Connection
  17. Dim rs As New ADODB.Recordset
  18. Dim strCn As String, strSQL As String
  19. strCn = "Provider=sqloledb;Server=10.52.111.8;Database=CRM;Uid=sa;Pwd=;"
  20. cn.Open strCn

  21. strSQL = "select * from CRM.dbo.userA where sno='" & UserName & "' or psnam='" & UserName & "'"
  22. cn.Open strCn
  23. rs.Open strSQL, cn
  24. If Me.Password = rs!psword And (Me.UserName = rs!psnam Or Me.UserName = rs!sno) Then

  25. DoCmd.Close
  26. DoCmd.Close acForm, "登陆背景", acSaveYes

  27. DoCmd.OpenForm "窗体1"
  28. DoCmd.RunCommand acCmdAppMaximize
  29. rs.Close
  30. Set rs = Nothing
  31. Exit Sub
  32. End If
  33. If n = 2 Then
  34. setFormPos Me, False
  35. MsgBox "您3次密码输入错误!系统即将退出!", vbCritical, "密码错误"
  36. DoCmd.Quit
  37. Else
  38. setFormPos Me, False
  39. MsgBox "3次密码输入错误将退出系统。您还可以输入" & 2 - n & "次!", vbCritical, "密码错误"
  40. End If
  41. Password.SetFocus
  42. n = n + 1
  43. End Sub
复制代码


因为第一次使用ACCESS连接SQL,所以不是很懂,
基础较糟糕,主要在参考各位的事例,呵呵,有点拿来主义,大家别介意啊,请帮帮忙吧~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2009-6-26 16:39:08 | 只看该作者
各位高手,腾出一点时间帮我看一下吧~~

点击这里给我发消息

3#
发表于 2009-6-26 23:58:55 | 只看该作者
看不出什么问题
4#
 楼主| 发表于 2009-6-28 09:17:57 | 只看该作者
我看了半天,我自己感觉问题出在
  1. cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn

  2. rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
复制代码
两段中,cn.Open strCn 感觉多余,第二段cn后面难道一定要加属性的要求吗?
5#
发表于 2009-6-29 21:20:04 | 只看该作者
aaaaaaa
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-12 22:47 , Processed in 0.096488 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表