ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhaogang1960

[分享] 初学ADO献上小作《电话簿管理系统》

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-23 16:07 | 显示全部楼层
本帖已被收录到知识树中,索引项:模板和开源系统
原帖由 yxrlqy 于 2011-7-23 14:52 发表
借用楼主的代码,用来做文件登记,增加了列,里面有些空的字段,现在出现问题模糊查找找不到记录

是以本工作簿工作表为数据库吧,增加各参数:imex=1
Private Sub UserForm_Initialize()
    Dim SQL$, i&, j&, arr, a()
    With Sheet2
        arr = .Range("A2").CurrentRegion
        ReDim a(UBound(arr, 2) - 1)
        For i = 0 To UBound(a)
            a(i) = .Columns(i + 1).ColumnWidth * 6 'ListView1各列列宽
        Next
    End With
    Set cnn = New ADODB.Connection
    cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;imex=1';data source=" & ThisWorkbook.FullName
    SQL = "select * from [数据库$] "
    Set rs = New ADODB.Recordset
    rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    On Error Resume Next
    With ListView1
        '设置ListView1的标题、显示类型、整行选择和网格线属性
        .ColumnHeaders.Clear
        .View = lvwReport        '   listivew的显示格式为报表格式
        .FullRowSelect = True    '   允许整行选中
        .Gridlines = True        '   显示网格线
        '为ListView1设置标题
        For i = 0 To rs.Fields.Count - 1
            If i > 0 Then
                .ColumnHeaders.Add , , rs.Fields(i).Name, a(i), lvwColumnCenter '从第2列起居中
            Else
                .ColumnHeaders.Add , , rs.Fields(i).Name, a(i)
            End If
        Next i
    End With
    Call 显示数据(SQL) '为ListView1设置各行数据
    arr = cnn.Execute("select distinct " & rs.Fields(i - 1).Name & " from [数据库$] where " & rs.Fields(i - 1).Name & " is not null ").GetRows '不重复的工作部门,为了修改字段名后不受影响使用了rs.Fields(i - 1).Name来代替“工作部门”
    ComboBox1.List = WorksheetFunction.Transpose(arr) '不重复的工作部门赋值给组合框
    模糊查询.SetFocus
End Sub

TA的精华主题

TA的得分主题

发表于 2011-7-23 23:41 | 显示全部楼层
我真的没想到斑竹这么快给我回复,非常感谢,佩服老师的敬业精神,真心的向你说声谢谢。我已将老师上面的代码代替,但仍有问题,烦请老师有空的话帮我看看问题出在哪?另外我还有想法,当我在添加数据的时候,想跟ComboBox1一样,现在的窗体真的人工输入。

求助.rar

61.22 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-24 10:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 yxrlqy 于 2011-7-23 23:41 发表
我真的没想到斑竹这么快给我回复,非常感谢,佩服老师的敬业精神,真心的向你说声谢谢。我已将老师上面的代码代替,但仍有问题,烦请老师有空的话帮我看看问题出在哪?另外我还有想法,当我在添加数据的时候,想跟Co ...

数据库有29列,而窗体上只有19个文本框

TA的精华主题

TA的得分主题

发表于 2011-7-24 15:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我按照版主的方法添加了文本框,请老师帮忙看看问题出在哪里

求助.rar

63.03 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-24 16:39 | 显示全部楼层
原帖由 yxrlqy 于 2011-7-24 15:56 发表
我按照版主的方法添加了文本框,请老师帮忙看看问题出在哪里

以工作表为数据库不适合你这个方案,如果使用了参数imex=1,就不能用sql添加纪录,否则数据类型导致查询不全:
求助.rar (51.24 KB, 下载次数: 118)

TA的精华主题

TA的得分主题

发表于 2011-7-27 08:36 | 显示全部楼层

老师:有几个问题想请教一下,谢谢!!

老师:我模仿用你的《电话簿管理系统》的access作为数据库,做了一个台帐管理,因为数据量较大,所以想请老师指导下;
1、由于数据量大(1万多条),你是用姓名(第一列)和部门(第6列)不能为空,我想变为第二列(编号)不能为空。(第一列为序号)。
2、模糊查找方面:能否再加上"and" "or", 如: 性别为:男 and 部门为"厂部", 又如:部门为"厂部" or  部门为"行政处".
3、在access数据库中,数据表有几,是否可以在同一窗体显示。
4、能否用的mm=20 代表数据库字段数,哪就不能修改很多地方,只修显示的宽度就可能了。
谢谢了!!
注就用老师你的附件。

[ 本帖最后由 song22602 于 2011-7-27 08:42 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-28 02:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常感谢:zhaogang1960 版主的大作分享~~~~~
提几点小意见
1、进入查询界面时, 模糊查询 工作部门 对应的查询框中,显示灰色字体:请输入查找关键字 请点击选择部门
     用鼠标单击后,则清空默认显示的数值;
    下面的显示的数据区域中为空,因为还没有查询条件哟~~~且当清空所有的查询条件后,数据区域所显示的信息也为空
     这样的话,窗体上那个:全部显示 的按钮才会显得更有作用,您说是吗?
      1.jpg
2、若这个电话薄管理系统放在公司的局域网平台上,资料的维护与更新只有指定的人才有权限修改。
     当其他人查看时,发现有错误或遗漏,如何在这个窗体上面实现尽快将信息通知到责任管理人员。
     建议:在窗体上加个按钮:信息反馈
     点击时,启动当前用户的邮箱,以默认的邮箱地址自动写好以下邮件内容,由用户决定是否发出
    收信人:abc@123.com,def@126.com    主题:有关通讯录之信息反馈
     邮件正文:如题,详情如下表
001.jpg
    PS:贴不上这种表格的形式,只能抓成图片贴上来,以示说明。

3、在打开工作薄进入主界面,点击按钮 数据库 的时候,有以下几点建议:
      3.1 应显示当前工作表的:编辑栏水平滚动条垂直滚动条工作表标签
      3.2 除当前工作表外,其它工作表隐藏不显示;

4、在打开工作薄的时候,由程式判断,非指定当前系统登录用户【VBA.Environ("username")】,
      隐藏Excel界面,出现一个动态的对话框:通讯录查询系统,3秒钟后自动进入,请稍等......,然后直接调出查询窗体,退出窗体则退出查询系统.

5、以姓名与工作部门来决定判断不能为同一人,有点想法:
     
  1. If temp = c.Value & Chr(9) & c.Offset(, rs.Fields.Count - 1) Then '姓名和工作部门都相同的视为同一个人
复制代码

      因为在工厂的人员,来自五湖四海,姓名绝对有重复的,即使是同一个部门,可能机率不大。
      个人建议:用工号来判断是否重复才是王道,因为工号才是唯一性的,绝对不可能会有重复的

声明一下:由于我在工厂工作,以上只是个人想法与见解,却切合于实际之运作;说的比较多,望版主海涵哟~~~
当然,更加期待版主的进一步完善,相信很多坛友也有此想法哟~~~~~~
'


[ 本帖最后由 opel-wong 于 2011-7-28 02:52 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-28 08:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 167楼 opel-wong 的帖子

opel-wong老师好:
建议非常有创意,值得学习。
这个工作簿只是一个初级习作,起点很低,没有什么实用价值。

TA的精华主题

TA的得分主题

发表于 2011-7-28 10:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
很好的VBA学习示例。谢赵版主分享。

TA的精华主题

TA的得分主题

发表于 2011-7-28 10:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 09:29 , Processed in 0.038851 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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