ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

access 结构管理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-6-28 14:39 | 显示全部楼层 |阅读模式
生产管理系统.rar (107.68 KB, 下载次数: 30)                                             我出现的问题是当我删除子节点时没有删除数据表的数据,添加子节点时好像会多一个,不知道怎么回事,请高手帮我修改一下





代码如下 :
Private Sub 添加为子级_Click()
On Error GoTo Err_添加为子级_Click
   Set Rs = New ADODB.Recordset
   Me.twvMStruct.LineStyle = tvwTreeLines
  If IsNull(Me![物料ID]) = True Then
         MsgBox "请输入 物料ID,它不可以为空!", vbOKOnly, "输入物料ID"
         Me![物料ID].SetFocus
        ElseIf IsNull(Me![名称]) = True Then
         MsgBox "请输入 名称,它不可以为空!", vbOKOnly, "输入名称"
         Me![名称].SetFocus
        ElseIf IsNull(Me![需要数量]) = True Then
         MsgBox "请输入 需要数量,它不可以为空!", vbOKOnly, "输入需要数量"
         Me![需要数量].SetFocus
        Else
         '判断待添加的节点名称是否已经存在
         For i = 1 To twvMStruct.Nodes.Count
        If twvMStruct.Nodes(i).Selected Then
         Set MSNode = Me.twvMStruct.Nodes.Add(Me.twvMStruct.Nodes(i).Key, tvwChild, Me![名称], Me![名称])
         Me.twvMStruct.Nodes(i).Expanded = True
     STemp = "select * from 物料结构"
    Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Rs.MoveFirst
    For j = 1 To Rs.RecordCount
    '判断被选中物料节点的节点值与数据集中名称 是否相等
    If Rs("名称") = Me.twvMStruct.Nodes(i).Key Then
    '如果相等,则把当前数据集指针所指向的记录字段值赋予strMSG变量组
    strMSG(0) = Rs("物料ID")
    strMSG(1) = Rs("名称")
    strMSG(2) = Rs("级别")
    '退出for next 循环语句
    Exit For
    Else
    '如果不相等,则把记录指针移到下一条记录
    Rs.MoveNext
    End If
    Next j
    Rs.AddNew
    '把strMSG变量组中的值赋予新添加记录对应的字段中
    Rs("上级ID") = strMSG(0)
    Rs("上级名称") = strMSG(1)
    Rs("物料ID") = Me![物料ID]
    Rs("名称") = Me![名称]
    Rs("级别") = strMSG(2) + 1
    Rs("需要数量") = Me![需要数量]
    Rs("领料车间") = Me![领料车间]
    Rs("领料库房") = Me![领料库房]
    Rs("审核日期") = Me![审核日期]
    Rs("备注") = Me![备注]
    Rs.Update
    End If
   Next i
   Me.twvMStruct.Refresh
   End If
Set Rs = Nothing
Exit_添加为子级_Click:
    Exit Sub

Err_添加为子级_Click:
    MsgBox Err.Description
    Resume Exit_添加为子级_Click
End Sub

Private Sub 删除节点_Click()
    On Error GoTo Err_删除节点_Click
    Set Rs = New ADODB.Recordset
    STemp = "select * from 物料结构"
    Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For i = 1 To twvMStruct.Nodes.Count
        If twvMStruct.Nodes(i).Selected Then
        twvMStruct.Nodes.Remove twvMStruct.SelectedItem.Index
        Rs.MoveFirst
        For j = 1 To Rs.RecordCount

        MsgBox j
        If Rs("名称") = Me.twvMStruct.Nodes(i).Key Then
        Rs.Delete 1
        j = Rs.RecordCount + 1
        Else
        Rs.MoveNext
        End If
    Next j
End If
Next i
        Set Rs = Nothing
Exit_删除节点_Click:
    Exit Sub

Err_删除节点_Click:
    MsgBox Err.Description
    Resume Exit_删除节点_Click
End Sub

QQ截图20140628143635.png

TA的精华主题

TA的得分主题

发表于 2014-6-29 18:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1、删除子节点时,楼主采用     For j = 1 To Rs.RecordCount 循环判断和删除数据,这样会导致前面的行删除后,Rs.RecordCount的记录数会减少
为避免出错,可以改为从后向前遍历删除,即   For j =Rs.RecordCount  to 1 step -1
2、”添加子节点时好像会多一个“,这个问题未测试到
楼主文件中缺少 物料管理、生产计划等表格,无法进一步进行测试
供参考。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-30 20:51 | 显示全部楼层
苍海拾贝 发表于 2014-6-29 18:22
1、删除子节点时,楼主采用     For j = 1 To Rs.RecordCount 循环判断和删除数据,这样会导致前面的行删除 ...

你好,我试了一下,还是有点问题,我可以把原件发给你,你可以帮我修改一下吗?你的联系地址是什么呀?

TA的精华主题

TA的得分主题

发表于 2014-7-8 00:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-19 15:11 | 显示全部楼层
Renco 发表于 2014-7-8 00:21
文件放上来不就行了。。

已经 在上面了呀

TA的精华主题

TA的得分主题

发表于 2014-7-20 23:56 | 显示全部楼层
从代码上看呢,你的问题不只在一个地方
因为不知道你使用目的,所以不太好去给你改,如有兴趣可以来交流一下。
QQ:602434941
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 09:28 , Processed in 0.036322 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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