Foxtable(狐表)用户栏目专家坐堂 → 窗口


  共有7528人关注过本帖树形打印复制链接

主题:窗口

帅哥哟,离线,有人找我吗?
xjpxjp1972
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:50 积分:414 威望:0 精华:0 注册:2012/2/25 17:41:00
窗口  发帖心情 Post By:2012/4/18 15:50:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120418153333.jpg
图片点击可在新窗口打开查看

归纳起来我的目标就是:

第一:当我点击年度时,当年度值不一样,就复制增加新的一行数据,这样主表中就有除年度不一样的两行数据,当我再次点击年度值时,遍历主表数据,当年度和编号值一样时,就不允许复制增加新的数据,并删除多余的重复(年度和编号值一样)数据

第二:当我点击窗口中的talbe时,可以在窗口中即时显示数据,当我点击主表中的单元格时,也可以即时显示数据


 


 回到顶部
帅哥哟,离线,有人找我吗?
xjpxjp1972
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:50 积分:414 威望:0 精华:0 注册:2012/2/25 17:41:00
  发帖心情 Post By:2012/4/18 16:02:00 [只看该作者]

为了达到以上两种功能,我分别在datachaning中添加了下面的代码

Select Case e.DataCol.Name
    Case "年度"
        If e.NewValue<> e.OldValue AndAlso e.NewValue > "" AndAlso e.OldValue > ""  Then
            Dim nb As DataRow = e.DataTable.AddNew
            For Each dc As DataCol In e.DataTable.DataCols
                If dc.name = "年度"  Then
                    nb("年度") = e.NewValue
                Else
                    nb(dc.Name) = e.DataRow(dc.Name)
                End If
            Next
            e.cancel = True
        End If
End Select

在datachanged中添加了下面的代码:

Select Case e.DataCol.name
    Case "年度","编号"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("年度") = False AndAlso dr.IsNull("编号") = False Then
            If e.DataTable.Compute("Count([_Identify])","年度 = '" & dr("年度") & "' And 编号 = '" & dr("编号") & "'") > 1 Then
                MessageBox.Show("已经存在相同数据的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.DataRow.delete()
            End If
        End If
End Select

在窗口afterload中添加下面代码:

If CurrentTable.Name = "录入窗口_Table1" Then
    For Each c As Winform.Control In e.Form.Controls
         If c.Bindingfield > "" AndAlso c.Bindingfield.StartsWith("shzz.") Then
            c.BindingField = c.BindingField.Replace("shzz.", "录入窗口_Table1.")
         End If
   Next
End If

现在的问题是通过以操作,出现了以下问题:

1、当我在窗口talbe中点击数据时,数据不能即时显示在窗口中

2、当我输入重复的年度值时,如果存在编号0211的两个不同年度值时(比如2010、2011),它会删除到只剩下一个年度的值


 回到顶部
帅哥哟,离线,有人找我吗?
xjpxjp1972
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:50 积分:414 威望:0 精华:0 注册:2012/2/25 17:41:00
  发帖心情 Post By:2012/4/18 16:04:00 [只看该作者]

各位哥哥帮我分析分析是怎么回事

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/18 16:14:00 [只看该作者]

删除DataColChanging和DataColChanged事件代码,将DAtaColChanging事件代码设置为:

 

Select Case e.DataCol.name
    Case "年度","编号"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("年度") = False AndAlso dr.IsNull("编号") = False Then
            If e.DataTable.Compute("Count([_Identify])","年度 = '" & dr("年度") & "' And 编号 = '" & dr("编号") & "'") > 1 Then
                MessageBox.Show("已经存在相同数据的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.DataRow(e.DataCol.name)   = e.OldValue
            End If
        End If
End Select

 

根本就用不着删除行,因为这样设置之后,重复值是无法输入的,建议看看这里的示例:

http://www.foxtable.com/help/topics/2481.htm

 

 

另一个问题,我不明白你的意思,搞不定的话,你自己分别为不同的表设计一个窗口吧。


 回到顶部
帅哥哟,离线,有人找我吗?
xjpxjp1972
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:50 积分:414 威望:0 精华:0 注册:2012/2/25 17:41:00
  发帖心情 Post By:2012/4/18 16:38:00 [只看该作者]

第一个问题,因为不同年度的数据中有很多列的值是一样的,我想把不同年度的同一编号的数据保存在同一个数据表中,这样一来,当我添加新一年度的数据时,还要重复输入,因此,我想把上一年度的数据复制到新增加的一行中,然后再修改保存新的不同的数据列值


 回到顶部