以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 合并数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73224) |
-- 作者:ccbbdlzj -- 发布时间: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 \'Tables("产品销售记录表").ResumeRedraw() DataTables("产品销售记录表").DataCols("三级产品_编号").RaiseDataColChanged() DataTables("产品销售记录表").Save() Forms("数据导入进度").close MessageBox.Show("导入成功!")
|
-- 作者:大红袍 -- 发布时间:2015/8/14 15:59:00 -- 导入数据的时候,如果有重复数据,肯定会提示,这很正常。
如果有其它问题做例子上来说明 |
-- 作者:ccbbdlzj -- 发布时间:2015/8/14 16:10:00 -- 可是提示窗口一直存在,不能关闭掉?咋整? |
-- 作者:大红袍 -- 发布时间: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 -- 发布时间:2015/8/14 16:38:00 -- 还是不成啊?提示窗口不能关闭! |
-- 作者:大红袍 -- 发布时间:2015/8/14 17:10:00 -- 上传实例。 |