Foxtable(狐表)用户栏目专家坐堂 → 合并数据问题


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

主题:合并数据问题

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


加好友 发短信
等级:幼狐 帖子:123 积分:1140 威望:0 精华:0 注册:2013/9/22 15:59:00
合并数据问题  发帖心情 Post By:2015/8/14 15:22:00 [只看该作者]

求老师帮助!

 

产品销售记录表,在datacolchenged事件中写入了如下代码:

Select Case e.DataCol.name

    Case "销售日期","三级产品_编号","客户名称","客户编号","推荐人","销售执行人","交易人"

        Dim dr As DataRow = e.DataRow

        If dr.IsNull("客户编号") = False Then

            If dr.IsNull("销售日期") = False AndAlso dr.IsNull("三级产品_编号") = False AndAlso dr.IsNull("客户名称")= False AndAlso dr.IsNull("客户编号")=False AndAlso dr.IsNull("推荐人")= False AndAlso dr.IsNull("销售执行人")=False AndAlso dr.IsNull("交易人")=False Then

                If e.DataTable.Compute("Count([_Identify])","销售日期 = '" & dr("销售日期") & "' And 三级产品_编号 = '" & dr("三级产品_编号") & "'And 客户名称 = '" & dr("客户名称") & "' And 客户编号 = '"& dr("客户编号") & "' And 推荐人 = '" & dr("推荐人") & "'And 销售执行人 = '" & dr("销售执行人") & "'And 交易人 = '" & dr("交易人") & "'") > 1 Then

                    MessageBox.Show("已经存在相同的产品销售记录,请核实后录入!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)

                    e.DataRow(e.DataCol.Name) = e.OldValue '取消输入

                    e.Cancel = True

                    'Tables("产品销售记录表").Current.Delete

                End If

            End If

        Else

            If dr.IsNull("销售日期") = False AndAlso dr.IsNull("三级产品_编号") = False AndAlso dr.IsNull("客户名称") = False AndAlso dr.IsNull("推荐人")= False AndAlso dr.IsNull("销售执行人")=False AndAlso dr.IsNull("交易人")=False Then

                If e.DataTable.Compute("Count([_Identify])","销售日期 = '" & dr("销售日期") & "' And 三级产品_编号 = '" & dr("三级产品_编号") & "'And 客户名称 = '" & dr("客户名称") & "' And 推荐人 = '" & dr("推荐人") & "'And 销售执行人 = '" & dr("销售执行人") & "'And 交易人 = '" & dr("交易人") & "'") > 1 Then

                    MessageBox.Show("已经存在相同的产品销售记录,请核实后录入!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)

                    e.DataRow(e.DataCol.Name) = e.OldValue '取消输入

                    e.Cancel = True

                    'Tables("产品销售记录表").Current.Delete

                End If

            End If

        End If

End Select

 

 

用于控制不准输入:“销售日期","三级产品_编号","客户名称","客户编号","推荐人","销售执行人","交易人"  相同的记录。

用如下代码编码合并数据时,总是提示“已经存在相同记录”,求问题在哪?如何解决?谢谢!

 

 

Dim dlg As New OpenFileDialog

'dlg.Filter= "Excel文件|*.xlsx"

If dlg.ShowDialog = DialogResult.OK Then

    Dim strs As String = dlg.FileName

    Forms("数据导入进度").Open

    Dim khq As Integer

    khq = e.Form.Controls("khq").Value

    Dim dt1 As New Date(khq, 1, 1)

    Dim dt2 As New Date(khq, 12, 31)

    e.Form.close

Dim Book As New XLS.Book(strs) 

Dim  Sheet As XLS.Sheet = Book.Sheets(0)

    'Tables("产品销售记录表").StopRedraw()

    '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致

    Dim nms() As  String = { "销售日期","客户名称","客户编号","销售数量","推荐人","销售执行人","交易人","激活人" ,"激活日期" }

    '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题

    For  n  As  Integer =  1  To  Sheet.Rows.Count -1

        Dim cpbh  As  String =  "107"  'sheet(n,1).Text

        Dim khbh As  String = sheet(n,2).Text

        Dim jhr As String = sheet(n,7).Text

        Dim dr As DataRow = DataTables("产品销售记录表").Find("一级产品_编号 = '" & cpbh & "' and 客户编号 = '" & khbh & "' And 销售日期 >= #" &  dt1 & "# And 销售日期 <= #" &  dt2 & "# ")

        If dr Is Nothing Then '如果存在同编号的订单

            dr =  DataTables("产品销售记录表").AddNew()

        End If

        If jhr =""  Then

            dr("三级产品_编号") = "107202001"

        Else

            dr("三级产品_编号") = "107201001"

        End If

        For m As Integer = 0 To nms.Length - 1

            dr(nms(m)) = Sheet(n,m).Value

        Next

       

    Next

End If

'Tables("产品销售记录表").ResumeRedraw()

DataTables("产品销售记录表").DataCols("三级产品_编号").RaiseDataColChanged()

DataTables("产品销售记录表").Save()

Forms("数据导入进度").close

MessageBox.Show("导入成功!")

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/14 15:59:00 [只看该作者]

导入数据的时候,如果有重复数据,肯定会提示,这很正常。

 

如果有其它问题做例子上来说明


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


加好友 发短信
等级:幼狐 帖子:123 积分:1140 威望:0 精华:0 注册:2013/9/22 15:59:00
  发帖心情 Post By:2015/8/14 16:10:00 [只看该作者]

可是提示窗口一直存在,不能关闭掉?咋整?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/14 16:16:00 [只看该作者]

 e.DataRow(e.DataCol.Name) = e.OldValue '取消输入

 

你把这句代码改成这样

 

SystemReady = False

 e.DataRow(e.DataCol.Name) = e.OldValue '取消输入

SystemReady = True


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


加好友 发短信
等级:幼狐 帖子:123 积分:1140 威望:0 精华:0 注册:2013/9/22 15:59:00
  发帖心情 Post By:2015/8/14 16:38:00 [只看该作者]

还是不成啊?提示窗口不能关闭!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/14 17:10:00 [只看该作者]

上传实例。

 回到顶部