ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

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

回复 93楼 zhaogang1960 的帖子

本帖已被收录到知识树中,索引项:模板和开源系统
报告楼主:如果我将数据库中工号列改为身份证号列,录入后的18位身份证号码显示为科学计数法,录入后再查询,显示的也是科学计数法,望楼主修正下!

品质部人事管理系统.rar

35.95 KB, 下载次数: 46

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-6 20:55 | 显示全部楼层
原帖由 wly1567 于 2011-4-6 18:59 发表
报告楼主:如果我将数据库中工号列改为身份证号列,录入后的18位身份证号码显示为科学计数法,录入后再查询,显示的也是科学计数法,望楼主修正下!

这个问题好像不用修改vba代吧,设置文本格式就可以了
品质部人事管理系统.rar (36.12 KB, 下载次数: 129)

TA的精华主题

TA的得分主题

发表于 2011-4-6 21:32 | 显示全部楼层

回复 112楼 zhaogang1960 的帖子

这样好像修改其中的项目时,虽提示已修改,但实际未修改。请楼主试下。

[ 本帖最后由 wly1567 于 2011-4-6 21:50 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-6 22:04 | 显示全部楼层
原帖由 wly1567 于 2011-4-6 21:32 发表
这样好像修改其中的项目时,虽提示已修改,但实际未修改。请楼主试下。

原来的写法太麻烦,换个方法:
Private Sub 修改记录_Click()
    Dim rst As New ADODB.Recordset
    Dim SQL$, temp$, i&, j&, s$
    For i = 2 To 3 '
        If Me.Controls("TextBox" & i).Text = "" Then
            MsgBox rs.Fields(i - 1).Name & "不能为空!", vbCritical
            Me.Controls("TextBox" & i).SetFocus
            Exit Sub
        End If
    Next
    If Me.Controls("TextBox2").Text <> ary(0) Or Me.Controls("TextBox3").Text <> ary(1) Then
        MsgBox "姓名和工号不得修改!", vbInformation
        Call 清空文本框
        Exit Sub
    End If
    Set rst = New ADODB.Recordset
    SQL = "select * from [数据库$] where 姓名='" & ary(0) & "' and 身份证号='" & ary(1) & "'"
    rst.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    With rst
        For i = 0 To rst.Fields.Count - 1
            .Fields(i) = Me.Controls("TextBox" & i + 1).Text
        Next i
        .Update
    End With
    Set rst = Nothing
    SQL = "select * from [数据库$] "
    If 模糊查询.Text = "" Then Call 显示数据(SQL) Else 模糊查询.Text = "" '刷新ListView1数据
    Call 清空文本框
    MsgBox "已在数据库中将该记录修改!", vbInformation, "修改记录"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-6 22:06 | 显示全部楼层
你的代码中把工号和身份证号混淆了,自己检查一下
附件

品质部人事管理系统.rar (37.67 KB, 下载次数: 212)

TA的精华主题

TA的得分主题

发表于 2011-4-6 22:51 | 显示全部楼层

回复 115楼 zhaogang1960 的帖子

我再搞下,谢谢楼主!

[ 本帖最后由 wly1567 于 2011-4-6 23:10 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-4-15 13:43 | 显示全部楼层
以access为数据库的程序中
在修改记录代码部分,姓名和工作部门相同就认为是同一条记录,那么我如何修改除非所有记录都相同才认为是同一条记录呢。谢谢,
我想看看代码部分具体怎么写,

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-15 15:57 | 显示全部楼层
原帖由 zhangshitou 于 2011-4-15 13:43 发表
以access为数据库的程序中
在修改记录代码部分,姓名和工作部门相同就认为是同一条记录,那么我如何修改除非所有记录都相同才认为是同一条记录呢。谢谢,
我想看看代码部分具体怎么写,

Dim n& '新加,单击ListView1行号
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) 'ListView1单击事件
    Dim i&
    n = Item.Index '新加
    TextBox1.Text = Item '首列数据赋给姓名文本框
    ary(0) = Item '姓名存放到数组作为删除记录的姓名查询条件
    With ListView1
        For i = 1 To 5 '逐列数据写入文本框
            Controls("TextBox" & i + 1) = .ListItems(Item.Index).SubItems(i)
        Next i
        ary(1) = .ListItems(Item.Index).SubItems(i - 1) '工作单位存放到数组作为删除记录的工作单位查询条件
    End With
End Sub
Private Sub 修改记录_Click()
    If n = 0 Then Exit Sub '没有单击事件发生则退出
    If TextBox1.Text = "" Or TextBox6.Text = "" Then
        MsgBox "姓名和工作部门不能为空!", vbInformation, "修改记录"
        Exit Sub '姓名或工作部门为空则退出
    End If
    Dim rst As New ADODB.Recordset
    Dim temp$, i&, j&, s$
    With ListView1
        If Len(.ListItems(n)) Then s = " and " & rs.Fields(0).Name & " = '" & .ListItems(n) & "'"
        For i = 0 To rs.Fields.Count - 1 '逐个字段
            temp = temp & rs.Fields(i).Name & " = '" & Me.Controls("TextBox" & i + 1).Text & "'," '更新记录字符串
            If i > 0 Then If Len(.ListItems(n).SubItems(i)) Then s = s & " and " & rs.Fields(i).Name & " = '" & .ListItems(n).SubItems(i) & "'"
        Next i
    End With
    On Error Resume Next
'    SQL = "update 数据库 set " & Left(temp, Len(temp) - 1) & " where " & rs.Fields(0).Name & "='" & ary(0) & "' and " & rs.Fields(i - 1).Name & "='" & ary(1) & "'"  '姓名和工作部门都相同的视为同一个人
    SQL = "update 数据库 set " & Left(temp, Len(temp) - 1) & " where " & Mid(s, 6) '所有记录都相同才认为是同一条记录
    Set rst = cnn.Execute(SQL) '执行更新
    Set rst = Nothing
    SQL = "select * from 数据库 "
    If 模糊查询.Text = "" Then Call 显示数据(SQL) Else 模糊查询.Text = "" '刷新ListView1数据
    Call 清空文本框
    MsgBox "已在数据库中将该记录修改!", vbInformation, "修改记录"
    n = 0 '本次单击结束
End Sub

TA的精华主题

TA的得分主题

发表于 2011-4-15 16:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-4-15 16:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼主的分享!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 07:46 , Processed in 0.042674 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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