以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于信息输入的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105385)

--  作者:富春居士
--  发布时间:2017/8/18 10:14:00
--  关于信息输入的问题
在输入数据过程中会有这样一种情况:多条数据很多列内容都是一样的,只有一列或几列数据需要改变,故需要实现一个功能:1、在每行最后单元格按回车后自动增加行(已实现),并且部分列内容复制上一行的内容;2、同时另外增加一个按钮,点击以后增加新组,不继续前面的复制功能。
关于1、自动增加行,我在表格里已经调好;关于复制内容我在表格  DateRowadded  中输入代码:
     CurrentTable.Position = CurrentTable.Rows.Count -1      ‘将最后一行(新增行)变为当前行
     Dim nr As Row = CurrentTable.Current                \'定义nr为当前行
     Dim cr As Row = CurrentTable.Rows(CurrentTable.Current.Index -1)    \'定义cr为上一行
     nr("当事人") = cr("当事人")
     nr("发生情况") = cr("发生情况")
     nr("发生时间") = cr("发生时间")
     nr("工号") = cr("工号")
这样便能选择性复制部分单元格内容。
但是关于单独按钮新增组的代码不知道怎么写,请狐大大帮忙解决,谢谢!

--  作者:有点甜
--  发布时间:2017/8/18 10:29:00
--  

按钮代码

 

vars("不复制") = true

 

DataRowAdded事件

 

If vars("不复制") = False then

    \'本来代码

End If


--  作者:富春居士
--  发布时间:2017/8/18 11:12:00
--  
以下是引用有点甜在2017/8/18 10:29:00的发言:

按钮代码

 

vars("不复制") = true

 

If vars("不复制") = False then

    \'本来代码

End If



试了一下,还是不太清楚怎么弄,麻烦再仔细一点,谢谢。

DataRowAdded事件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信息入录新增与新组.table

[此贴子已经被作者于2017/8/18 11:12:56编辑过]

--  作者:有点甜
--  发布时间:2017/8/18 11:32:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信息入录新增与新组.table


--  作者:富春居士
--  发布时间:2017/8/18 14:13:00
--  
已试过,可用,不过要先把“增加”那个按钮点过才能正常执行。非常感谢老师指点
--  作者:富春居士
--  发布时间:2017/8/21 9:43:00
--  
又有一个问题,按照之前输入之后,我又想导出的时候根据人物内容把“事件”内容合并起来导出,例如:
   2017-08-11 办公室  赵云  事件1;事件2;事件3
这又该如何写代码?
[此贴子已经被作者于2017/8/21 9:46:33编辑过]

--  作者:有点甜
--  发布时间:2017/8/21 9:50:00
--  

生成一个临时表

 

Dim g As New GroupTableBuilder("统计表1", DataTables("信息入录"))
g.Groups.AddDef("时间", DateGroupEnum.None)
g.Groups.AddDef("地点")
g.Groups.AddDef("人物")
g.Totals.AddDef("事件", AggregateEnum.Count)
g.Build()
Dim t As Table = Tables("统计表1")
t.DataTable.DataCols.Delete("事件")
t.DataTable.DataCols.Add("事件", Gettype(String), 255)
For Each r As Row In t.Rows
    r("事件") = DataTables("信息入录").GetComboListString("事件").replace("|", ",").trim(",")
Next
MainTable = t


--  作者:富春居士
--  发布时间:2017/8/21 10:13:00
--  
谢谢“有点甜”老师,不过按照你的代码,我新添加一个人,发现每个人的事件内容都是把所有事件都合并在一起了,我希望的是同一个人的事件内容合并在一起,但是不同人不进行合并,也就是相当于分组统计,代码该怎么改一下,是不是该在GetComboListString后面加筛选条件?
                           谢谢!

[此贴子已经被作者于2017/8/21 10:24:07编辑过]

--  作者:有点甜
--  发布时间:2017/8/21 10:18:00
--  
Dim g As New GroupTableBuilder("统计表1", DataTables("信息入录"))
g.Groups.AddDef("时间", DateGroupEnum.None)
g.Groups.AddDef("地点")
g.Groups.AddDef("人物")
g.Totals.AddDef("事件", AggregateEnum.Count)
g.Build()
Dim t As Table = Tables("统计表1")
t.DataTable.DataCols.Delete("事件")
t.DataTable.DataCols.Add("事件", Gettype(String), 255)
For Each r As Row In t.Rows
    r("事件") = DataTables("信息入录").GetComboListString("事件", "时间 = #" & r("时间") & "# and 地点 = \'" & r("地点") & "\' and 人物 = \'" & r("人物") & "\'").replace("|", ",").trim(",")
Next
MainTable = t

--  作者:富春居士
--  发布时间:2017/8/21 10:25:00
--  
非常感谢老师指导