Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

员工内部调动资料更新问题`

yaxun  发表于:2008-06-04 09:12:13  
复制

请各位帮帮忙:

问题:比如有 员工基本资表和员工内部弃动两个表 当在员工内部弃动窗体中输入相关新的员工后,在员工基本资表中以与之相对应的员工ID更新相关的记录  如:

员工基本资料表:

员工ID     姓名     性别    部门    工资     职务  

PMC01      XUN      MAN      PMC     2000    PMC

 

工员内部调动表:(因为员工ID 是据所在部门编号的)

员工ID     新员工ID   姓名     性别`    新部门   工资    新职务

PMC01      AMD01      LIAO      W        AMD     2500     AMD

 

员工内部调动窗体:

想达到的目的:

 

当单击“更新资料”事件后,将员工基本资料表中的“员工ID”更新为“新员工ID”,“部门”更新为“新部门”,“工资”更新为调动后“”,“职务”更新为“新职务”,

 

条件:子窗体中的原员工ID=员工基本资料表的“员工ID”。

 

未完成的代码:

 

Private Sub 更新资料_Click()
On Error GoTo Err_更新资料_Click
'定义字符型变量
Dim STemp As String
Dim STEMP1 As String
'定义数据集变量
Dim rs As ADODB.Recordset
'为定义的数据集变量分配空间
Set rs = New ADODB.Recordset
'为打开数据表“查询语句”字符变量赋值
STemp = "Select * From 员工基本资料"
'打开“员工基本资”数据表
rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    '判断子窗中的原工ID是否与员工基本资料的员工ID相等
    If Forms![员工内部调动]![原员工ID] = rs("员工ID") Then
      
        '使用记录集的AddNew方法添加记录
        rs.AddNew
        '把窗体中文本框和组合框内的值赋予记录集中对应的字段
rs("员工ID") = Forms![员工内部调动]![新员工ID]
rs("部门ID") = Forms![员工内部调动]![新部门ID]
rs("职务") = Forms![员工内部调动]![新职务]

rs("基本工资") = Forms![员工内部调动]![新基本工资]


        '使用记录集的Update方法来刷新记录集
           rs.Update
      
        '弹出信息记录“添加完成”的提示信息
    
        MsgBox "员工基本资料更新完成!", vbYesNo, "更新资料完成"
       
   
       
    End If
   
   
    Set rs = Nothing
Exit_更新资料_Click:
    Exit Sub
Err_更新资料_Click:
    MsgBox Err.Description
    Resume Exit_更新资料_Click
End Sub

 

 

 

Top
竹笛 发表于:2008-06-05 07:31:05
工员内部调动表 感觉应该不存在。如果你需要记录哪些员工调动过,则只需要有调动清单即可。

yaxun 发表于:2008-06-05 09:01:51

难点是:员工基本资料的更新问题。



suve 发表于:2008-06-05 09:08:47

我的做法是,两个表,员工表,员工history异动表,员工表里有任何改动,都会将旧值存入异动表,员工表里永远是新值,如果员工新增或离职,整条记录存入异动表,异动表自动记录异动时间



yaxun 发表于:2008-06-05 10:20:54
还没有好的方法和代码提供呀,以上二位都不能达到我的目的

樟树 发表于:2008-06-06 07:23:35
'判断子窗中的原工ID是否与员工基本资料的员工ID相等
    If Forms![员工内部调动]![原员工ID] = rs("员工ID") Then
      
应该改成在rs中查找是否有这样的ID,如果有,则改之,如果没有,则加之

yaxun 发表于:2008-06-06 09:02:52

我是初学者,能否给出实例代码呢,

 

谢谢了



yefalai 发表于:2008-06-06 13:53:41

!兄弟,别总以初学者自居.那不能给你带来什么.

 

呵 我怎么看不到图呢.

估计楼上各位回答的都不是你需要的,他们提出的是自己的设计思想,而你需要的却是实现你目前功能的代码.着急吧! 我看不到你的图.也不知道怎么回答你.当竟然写了,我想就要对你有所帮助.所以我就针对你的代码 写点自己的建议.好你就采用,不好也别笑话,大家一起提高.

 

 

糟糕,现在才发现你写的代码就是你上贴的内容. 8说了. 你看你自己的上一贴吧



yefalai 发表于:2008-06-06 14:00:02

补充:

 

问题:比如有 员工基本资表和员工内部弃动两个表 当在员工内部弃动窗体中输入相关新的员工后,在员工基本资表中以与之相对应的员工ID更新相关的记录 

 

 

   我的理解:

   当在员工内部弃动窗体中输入相关新的员工后,在员工基本资表中 增加 "对应的员工ID" 记录 .

 

   呵呵,因为你的代码显示的就只是新增信息.

 

  对吗

    



yaxun 发表于:2008-06-06 15:28:43

图被腾讯封了,不是新增记录,而是在原的员工ID上更新几个字段。

谢谢各位的支持。



yaxun 发表于:2008-06-06 15:31:43


yaxun 发表于:2008-06-06 21:21:47

自力更生,才是真的出路。。。。呵呵

终于搞定了

代码如下:

Private Sub 更新资料_Click()
On Error GoTo Err_更新资料_Click
'定义字符型变量
Dim STEMP As String
Dim STEMP1 As String
'定义数据集变量
Dim RS As ADODB.Recordset
'为定义的数据集变量分配空间
Set RS = New ADODB.Recordset
'为打开数据表“查询语句”字符变量赋值
STEMP = "Select * From 员工基本资料"
'打开“员工基本资”数据表
RS.Open STEMP, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'把记录集指针移到第一条记录
RS.MoveFirst
'使用FOR....NEXT循环
For I = 1 To RS.RecordCount

    '判断窗体中必填或文本框组合框是否为空
If RS("员工ID") = Me![员工内部调动 子窗体]![原员工ID] Then
      
        '把窗体中文本框和组合框内的值赋予记录集中对应的字段
RS("员工ID") = Forms![员工内部调动]![新员工ID]
RS("部门ID") = Forms![员工内部调动]![新部门ID]
RS("职务") = Forms![员工内部调动]![新职务]
RS("基本工资") = Forms![员工内部调动]![新基本工资]
'如果不相同'把记录移到下一条
Else
        RS.MoveNext
        End If
        Next I
        '使用记录集的Update方法来刷新记录集
           RS.Update
      
        '弹出信息记录“添加完成”的提示信息
    
        MsgBox "员工基本资料更新完成!", vbYesNo, "更新资料完成"
       
       
    Set RS = Nothing
Exit_更新资料_Click:
    Exit Sub
Err_更新资料_Click:
    MsgBox Err.Description
    Resume Exit_更新资料_Click
End Sub



yefalai 发表于:2008-06-08 22:43:28

呵呵,这个方法可以实现你的功能,但效率应该有更好的办法.你没看我给你的代码吗? 或许比你的好点!



总记录:12篇  页次:1/1 9 1 :