首页 > 其他分享 >vba-窗体之listbox

vba-窗体之listbox

时间:2022-11-29 20:25:11浏览次数:36  
标签:Dim vba End Sub cnn 窗体 sql rst listbox

Option Explicit

'声名模块级变量
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

'是否变量空间、关闭数据库连接、关闭窗体
Private Sub btnClose_Click()
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    Unload Me
End Sub

'列表框ListDept单击事件,查询部门员工
'提取员工的编号和姓名
Private Sub ListDept_Click()
    Dim sql As String
    sql = "select distinct 编号,姓名 from 员工 where 部门='" & ListDept.Value & "' order by 编号 asc"
    rst.Open sql, cnn, adOpenKeyset, adLockOptimistic
    Dim i As Integer
    
    With ListEmp
        .Clear
        For i = 1 To rst.RecordCount
            .AddItem rst("编号") & Space(2) & rst("姓名")
            rst.MoveNext
        Next
    End With
    rst.Close

End Sub

'将员工信息填入 textbox
Private Sub ListEmp_Click()
    Dim i As Integer, IDStringCut As String
    Dim arr, brr
    Dim sql As String
    
    IDStringCut = Mid(ListEmp.Value, 1, InStr(ListEmp.Value, Space(2)) - 1)
    
    sql = "select * from 员工 where 编号='" & IDStringCut & "'"
    
    rst.Open sql, cnn, adOpenKeyset, adLockOptimistic
    
    '将每个字段的值存入空间
    
    arr = Array("txtID", "txtName", "txtAge", "txtIDcard", "txtDate", "txtAddress", _
        "txtDept", "txtJob", "txtEMail", "txtCV")
    brr = Array("编号", "姓名", "年龄", "身份证号", "聘用时间", "工作地", _
        "部门", "职务", "电子邮件", "简历")
    
    For i = 0 To UBound(arr)
        Me.Controls(arr(i)).Value = rst(brr(i))
        
    Next
    rst.Close
End Sub

'当窗体加载时,填写listDept
Private Sub UserForm_Initialize()
    
    '建立数据库连接
    Set cnn = New ADODB.Connection
    cnn_open cnn
    
    '提取不重复部门名称
    Dim sql As String
    sql = "select distinct 部门 from 员工"
    
    '执行sql语句
    Set rst = New ADODB.Recordset
    rst.Open sql, cnn, adOpenKeyset, adLockOptimistic
    
    '将记录集中的部门显示到 listDept 列表框中
    Dim i As Integer
    With ListDept
        .Clear  '先清空再添加
        For i = 1 To rst.RecordCount
            .AddItem rst("部门")
            rst.MoveNext    '将记录集中的指针指向下一条记录
        Next
    End With
    rst.Close
   
End Sub

Sub cnn_open(cnn)
    With cnn
        .Provider = "microsoft.ace.oledb.12.0"
        .ConnectionString = "data source=" & ThisWorkbook.Path & "\学生管理.accdb"
        .Open
    End With
End Sub

 

 

转载:https://www.cnblogs.com/Stefan-Gao/p/13663641.html

 

标签:Dim,vba,End,Sub,cnn,窗体,sql,rst,listbox
From: https://www.cnblogs.com/Insist-Y/p/16936556.html

相关文章

  • vba ad域服务器信息怎么获取,获取AD域用户登入信息
    PrivateSubCommandButton1_Click()OnErrorResumeNextConstADS_SCOPE_SUBTREE=2SetobjConnection=CreateObject('ADODB.Connection')......
  • VBA驱动SAP GUI自动化:查找页面元素FindAllByName
    我们在VBA中嵌入SAP原生的【脚本录制与回放】功能生成的VBS脚本,可以实现很多自动化操作。但只有我们对SAP做了一系列动作,才会得到这些动作的脚本。然而,一旦我们需要用......
  • WORD VBA 办公助手
    Sub设置页面()''设置页面和页码宏''WithSelection.PageSetup.LineNumbering.Active=False.Orientation=wdOrientPortrait.T......
  • WORD VBA 插入页码
    Sub插入页码()ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter=False'关闭奇偶页相同(防止上回启用奇偶页不同后没有关闭此项设置)WithActiveWindow.Active......
  • WORD VBA 设置页面
    Sub设置页面()''设置页面和页码宏''WithSelection.PageSetup.LineNumbering.Active=False.Orientation=wdOrientPortrait.T......
  • VBA工作薄引用 方法
    工作簿的引用方法引用不同的工作簿有如下的方法:1、使用工作簿名称工作簿名称是指Excel文件的文件名,可以使用Workbooks集合引用方式来引用工作簿。Subtest()Msg......
  • VBA 技巧二
    PublicSub技巧()'保存并关闭工作薄DimwbAsWorkbookSetwb=ThisWorkbook'可指定任意工作簿wb.Closesavechanges:=FalseSetwb=Nothing......
  • VBA 技巧一
    PublicSub技巧()#判断单元格是否有公式DimmyRangeAsRangeSetmyRange=Range("A1")'指定任意单元格IfmyRange.HasFormula=TrueThen......
  • winform在窗体初始化时绘制控件一直绘制不上问题
    最近在做一个功能,大概是:点击单元格,然后打开一个窗体,在窗体打开时,要把单元格中的内容绘制在窗体的picturebox控件上。我在构造函数,load、actived、shown等事件中都......
  • 截图工具(窗体永远前置)
    这是截完图之后可以显示并且永远前置的截图小工具(即不会被其他程序覆盖):##-*-coding:utf-8-*-importtkinterastkimportpyautoguiimporttkinterfromPILimp......