求老师帮助!
产品销售记录表,在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("导入成功!")