用vba如何使用sql

用vba如何使用sql,第1张

一、界面设计

各控件名称属性分别为:label1  、text1 、label2、text2、commandok、cmdcancel

登录成功后显示的窗体

代码设计如下:

'首先添加一个模块,写上以下通用声明和Sub main():

Public conn As ADODB.Connection    '通用(声明)

Sub main()

  Set conn = New ADODB.Connection   '通用(main)

   conn.ConnectionString = "Provider=SQLOLEDB.1Persist Security Info=False" _

   + "User ID=sapassword=123Initial Catalog=dengluData Source=127.0.0.1"      '连接数据库代码

  conn.Open

frmLogin.Show     '首先显示登录界面。也可以在工程属性中设置启动对象为Sub main()或者frmlogin窗体

End Sub

'在Frmlogin 代码窗口,为cmdok控件写以下代码:

Private Sub cmdok_Click()

If text1.Text = "" Then

      MsgBox "用户名不能为空!", vbOKOnly + vbInformation, "友情提示"

      text1.SetFocus

      Exit Sub       '若用户名文本框内为空,则出现提示框

  End If

  If text2.Text = "" Then

      MsgBox "密码不能为空!", vbOKOnly + vbInformation, "友情提示"

      text2.SetFocus

      Exit Sub     '若输入密码文本框为空,也出现提示框

  End If

  Dim strSQl As String  

  strSQl = "select * from User1 where username='" &Trim$(text1.Text) &"' and pwd='" &Trim$(text2.Text) &"' "  

  '书写SQL代码,查询User1表中是否存在窗体中用户输入的信息。

  Dim str As New ADODB.Recordset

  Set str = New ADODB.Recordset

  str.CursorLocation = adUseClient

  str.Open strSQl, conn, adOpenStatic, adLockReadOnly

  With str

      If .State = adStateOpen Then .Close

      .Open strSQl

      If .EOF Then

          Try_times = Try_times + 1

          If Try_times >= 3 Then

              MsgBox "您已连续三次输入错误,系统将自动关闭", vbOKOnly + vbCritical, "警告"

              Unload Me            '若用户连续输入3次错误密码,则系统关闭

          Else

              MsgBox "对不起,用户名不存在或密码错误 !", vbOKOnly + vbQuestion, "警告"

              text1.SetFocus

              text1.Text = ""

              text2.Text = ""

          End If

      Else

       

          Unload Me    '若登录成功,则隐藏当前窗体

       

        Form2.Show    '然后显示Form窗体          

      End If

  End With

End Sub

Private Sub cmdCancel_Click()  

End         '若单击Cmdcel按钮,则结束应用程序

End Sub

运行中存在的问题:

代码中有Dim conn As adodb.connection,运行时显示"用户定义类型未定义"

解决方法:点击“工程”--“引用”找到“Microsoft ActiveX Data Object 2.6”

然后就就可以正常运行了。

大约后面再添上以下语句,注意WHERE开始是条件可以不要,7列字段名按我格式一个个填上去

cn.Open strCn

strSQL = "Select 表名.姓名,表名.性别 from 表名 where 表名.条件列名=条件"

rs.Open strSQL, cn, 1, 3

Sheet1.Range("A1", "Z65000").Clear

Sheet1.Range("A1").CopyFromRecordset rs

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing

'sql完整例子

Sub testSql()

'定义连接对象

Dim cnn As New ADODB.Connection

Dim rs As New ADODB.Recordset

'定义连接字符串

Dim conStr As String

Dim sqlstr As String

'连接字符串-以下是连接MSSQL数据库

conStr = "Provider=sqloledb" _

&"Server=192.168.1.121" _

&"Database=DATABASENAMEUid=adminPwd=admin"

cnn.Open conStr

sqlstr = "SELECT * from tablename"

rs.Open sqlstr, cnn

Range("a2").CopyFromRecordset rs

rs.Close

cnn.Close

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11196325.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存