以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 导入EXCEL时怎样判断空值与重复值 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170179) |
-- 作者:lianghanyu -- 发布时间:2021/7/15 7:58:00 -- 导入EXCEL时怎样判断空值与重复值 导入EXCEL时怎样判断空值。 比如,在EXCEL里有一列“物料编号”, 在导入在狐表时,怎么写代码判断: 1,物料编号不能为空值,否则弹窗提示存在空值,导入动作取消。 2,物料编号不能有重复值(包括后台数据,数据库使用的是SQL数据库)。否则跳过该行EXCEL数据的导入。继续往下一行... |
-- 作者:有点蓝 -- 发布时间:2021/7/15 9:03:00 -- 参考:http://www.foxtable.com/webhelp/topics/2334.htm 判断是否空值加一个判断即可 Dim bh As String = sheet(n,0).Text if bh > "" then 原来的导入代码
|
-- 作者:lianghanyu -- 发布时间:2021/7/15 9:19:00 -- 我的代码是这样的,你帮我看下哪里出错了: Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim cmd As New SQLCommand Dim dt As Date cmd.C cmd.CommandText = "Select GetDate()" dt = cmd.ExecuteScalar() Dim c As Integer = 0 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("物料信息").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String = {"项目编号","模具编号","物料编号","物料名称","图档尺寸","材料","数量","精毛料","重量","采购规格","备注"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 \'======================================先判断是否存在空白的物料编号 For m As Integer = 1 To Sheet.Rows.Count -1 If sheet(m,3).Text > "" Then MessageBox.Show("存在物料编号为空白的行,请重新检查后再导入") Return End If Next \'=========================================先判断是否存在空白的物料编号 For n As Integer = 1 To Sheet.Rows.Count -1 Dim bh As String = sheet(n,2).Text If sheet(n,4).Text <> "" Then If DataTables("物料信息").Find("物料编号 = \'" & bh & "\'") Is Nothing Then \'如果不存在同编号的订单 c = c + 1 Dim r As Row = Tables("物料信息").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next r("制单人") = User.Name r("制单日期") = dt End If Else MessageBox.Show("存在物料编号为空白的行,请重新检查后再导入") Exit For End If Next Tables("物料信息").ResumeRedraw() DataTables("物料信息").Save MessageBox.Show("导入完成,共导入" & c & "条记录") End If |
-- 作者:有点蓝 -- 发布时间:2021/7/15 9:25:00 -- If sheet(m,3).Text > "" Then 改为 If sheet(m,3).Text = "" Then
|
-- 作者:lianghanyu -- 发布时间:2021/7/15 9:47:00 -- 此主题相关图片如下:1.gif 此主题相关图片如下:物.png 还是不行啊! |
-- 作者:有点蓝 -- 发布时间:2021/7/15 9:49:00 -- 说明确实有空值,比如20、21...行。还不如不要判断这个,直接空行的就跳过即可,继续下一行 |
-- 作者:lianghanyu -- 发布时间:2021/7/15 9:54:00 -- 我目的是想控制录入员, 导入时必须加上物料编号。 物料编号是唯值 ,因为后续 生产排期都会根据这个来,我担心他们录个空值入来,后续会出错。 有没有其它办法可以控制这一点?不一定要导入的时候来判断?
|
-- 作者:有点蓝 -- 发布时间:2021/7/15 9:58:00 -- 考虑使用vba获取真正的行数和列数,参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=92748 |