以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助窗体按钮事件代码(已上传测试实例)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132726)

--  作者:hanzhang98
--  发布时间:2019/3/28 14:35:00
--  [求助窗体按钮事件代码(已上传测试实例)
老师们好!窗体按钮代码请老师帮助修正。

        想整体实现的功能是:对所选择的“职工基础信息”表当前行(即姓名为xxx的员工)的删除。但在删除前,要先选定“离职原因”和“离职时间”并存储在变量Ly1、Ls1中,然后点击“确定”按钮后,将选定行(即姓名为xxx的员工)由当前表“职工基础信息”复制到“历史信息”表,同时并将变量Ly1、Ls1的值在不打开“历史信息”表的情况下写入“历史信息”表的“离职原因”、“离职时间”列中。上述工作完成后,再将其删除。
      但实在是代码小白,所有代码都是通过论坛东拼西凑和看实例所得的单项功能代码,后经老师修改指导而来的。本小白弄不到一起来实现想要的完整功能,还得麻烦老师帮忙。先谢谢老师了!

实例已上传。 3楼。

[此贴子已经被作者于2019/3/28 18:37:44编辑过]

--  作者:有点甜
--  发布时间:2019/3/28 15:04:00
--  
上传具体实例测试。
--  作者:hanzhang98
--  发布时间:2019/3/28 17:03:00
--  
谢谢老师。

      现在,“离职原因” 各单选框和“离职时间”的选择已实现,已能分别将值赋给变量“Ly1”、“Ls1”(通过“msgbox()”查看返回值正确);    剩下的按指定条件(当前行“姓名”)复制数据的代码,以及将变量“Ly1”、“Ls1”的值写入“历史信息”表的代码不对,请老师帮助。谢谢!

实例如下。


[此贴子已经被作者于2019/3/28 20:44:06编辑过]

--  作者:hanzhang98
--  发布时间:2019/3/28 18:43:00
--  
请老师给看看,帮助指导一下。谢谢!
--  作者:有点甜
--  发布时间:2019/3/28 18:56:00
--  

\'以下"RadioButton1"(单选框)选择"离职原因"
Dim Ly1 As String    
If e.Form.Controls("RadioButton1").Checked = True   \'如果选择了"到龄退休"
    Ly1 = "到龄退休"   
End If
If e.Form.Controls("RadioButton2").Checked = True   \'如果选择了"个人辞职"
    Ly1 = "个人辞职"
End If
If e.Form.Controls("RadioButton3").Checked = True   \'如果选择了"公司辞退"
    Ly1 = "公司辞退"
End If

\'以下选择"离职时间"
Dim Ls1 As String         
With e.Form.Controls("DateTimePicker1")
    Ls1 = .Value
End With

\'以下将当前选定行从"员工信息"表复制到"历史信息"表,同时并将变量Ly1和Ls1的值在不打开"历史信息"表的情况下写入"历史信息"表的"离职原因"?"离职时间"列中
Dim cr As Row = Tables("员工信息").current
Dim ndr As DataRow = DataTables("历史信息").addnew                                            \'指定数据接收表
ndr("姓名") = cr("姓名")
ndr("性别") = cr("性别")
ndr("民族") = cr("民族")
ndr("籍贯") = cr("籍贯")
ndr("离职原因") = ly1
ndr("离职时间") = ls1

cr.Delete      \'删除选定行

Forms("确认离职").close    \'关闭窗口


--  作者:hanzhang98
--  发布时间:2019/3/28 20:24:00
--  
谢谢老师帮助。再麻烦请教老师,如果是复制“员工信息”表的所有列到“历史信息”表,再将变量“Ly1”、“Ls1”的值写入“历史信息”表的“离职原因”、“离职时间”列,这样的话,红色部分代码要如何改。因为实际使用的表有四十多列,一列一列的指定是不是代码太长了(但前提是如果能简化代码的话)。谢谢!
--  作者:有点甜
--  发布时间:2019/3/28 22:09:00
--  

参考代码

 

\'以下"RadioButton1"(单选框)选择"离职原因"
Dim Ly1 As String
If e.Form.Controls("RadioButton1").Checked = True   \'如果选择了"到龄退休"
    Ly1 = "到龄退休"
End If
If e.Form.Controls("RadioButton2").Checked = True   \'如果选择了"个人辞职"
    Ly1 = "个人辞职"
End If
If e.Form.Controls("RadioButton3").Checked = True   \'如果选择了"公司辞退"
    Ly1 = "公司辞退"
End If

\'以下选择"离职时间"
Dim Ls1 As String
With e.Form.Controls("DateTimePicker1")
    Ls1 = .Value
End With

\'以下将当前选定行从"员工信息"表复制到"历史信息"表,同时并将变量Ly1和Ls1的值在不打开"历史信息"表的情况下写入"历史信息"表的"离职原因"?"离职时间"列中
Dim cr As Row = Tables("员工信息").current
Dim ndr As DataRow = DataTables("历史信息").addnew                                            \'指定数据接收表
For Each c As Col In cr.Table.Cols
    If ndr.DataTable.DataCols.Contains(c.name) Then
        ndr(c.name) = cr(c.name)
    End If
Next
ndr("离职原因") = ly1
ndr("离职时间") = ls1

cr.Delete      \'删除选定行

Forms("确认离职").close    \'关闭窗口


--  作者:hanzhang98
--  发布时间:2019/3/28 23:24:00
--  
老师辛苦了,这么晚了还在帮助和指导,真心感谢。谢谢!