以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何删除重复的行?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185332)

--  作者:moseser
--  发布时间:2023/2/16 19:55:00
--  [求助]如何删除重复的行?
如图,我想删除 类别 名称 型号 单位 不含税单价 所属项目 ,内容相同的行?请问如何操作?
图片点击可在新窗口打开查看此主题相关图片如下:1113.png
图片点击可在新窗口打开查看

--  作者:moseser
--  发布时间:2023/2/16 20:10:00
--  回复:(moseser)[求助]如何删除重复的行?
Dim i As Integer
Dim dr1 As DataRow = DataTables("历史价格").DataRows(DataTables("历史价格").DataRows.Count - 1)
Dim dr As DataRow
For i = DataTables("历史价格").DataRows.Count - 2 To 0 Step - 1
    dr = DataTables("历史价格").DataRows(i)
    If dr("类别") = dr1("类别") AndAlso dr("名称") = dr1("名称") AndAlso dr("型号") = dr1("型号") AndAlso dr("单位") = dr1("单位") AndAlso dr("不含税单价") = dr1("不含税单价")AndAlso dr("所属项目") = dr1("所属项目") Then
        dr.delete
    Else 
        DataTables("历史价格").save
        
        
        DataTables("历史价格").SQLDeleteFor( " 类别 = \'" & dr1("类别") & "\' and 名称 = \'" & dr1("名称") & "\'  and 型号 = \'" & dr1("型号") & "\' 单位 = \'" & dr1("单位") & "\'  不含税单价 = \'" & dr1("不含税单价") & "\' and 所属项目 = \'" & dr1("所属项目") & "\'   and   _Identify <> \'" & dr1("_Identify") & "\'  ")
        
        
        dr1 = dr
    End If 
Next



DataTables("历史价格").save
 DataTables("历史价格").SQLDeleteFor( " 类别 = \'" & dr1("类别") & "\' and 名称 = \'" & dr1("名称") & "\'  and 型号 = \'" & dr1("型号") & "\' 单位 = \'" & dr1("单位") & "\'  不含税单价 = \'" & dr1("不含税单价") & "\' and 所属项目 = \'" & dr1("所属项目") & "\'   and   _Identify <> \'" & dr1("_Identify") & "\'  ")

--  作者:moseser
--  发布时间:2023/2/16 20:10:00
--  回复:(moseser)回复:(moseser)[求助]如何删除重...
如上,提示 符号缺失
--  作者:moseser
--  发布时间:2023/2/16 20:13:00
--  回复:(moseser)回复:(moseser)回复:(moseser)...
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
语法错误 (操作符丢失) 在查询表达式 \'[类别] = \'材料\' and 名称 = \'预制阳台板\'  and 型号 = \'含钢量160KG\' 单位 = \'m3\'  不含税单价 = \'2831.86\' and 所属项目 = \'【演示】北京万科项目\'   and   [_Identify] <> \'1252\'\' 中。

--  作者:有点蓝
--  发布时间:2023/2/16 20:24:00
--  
SQLDeleteFor是多余的,去掉这句代码即可
--  作者:moseser
--  发布时间:2023/2/16 20:46:00
--  回复:(有点蓝)SQLDeleteFor是多余的,去掉这句代码...
还是不行,有没有更高效的方法?必须这样遍历吗?
--  作者:有点蓝
--  发布时间:2023/2/16 20:48:00
--  
什么地方不行?如果不会使用sql,就只能这样遍历了
--  作者:chnfo
--  发布时间:2023/2/17 22:43:00
--  
可以使用sqlcommand,把数据找出来,然后直接删除,从后台删除效率高多了。
删除完了以后,再把数据加载到界面上即可

而且最好是预设一个材料编码库, \'[类别] = \'材料\' and 名称 = \'预制阳台板\'  and 型号 = \'含钢量160KG\' 单位 = \'m3\'这就表示某一种规格型号的材料

这就可以直接用材料ID=XX,在数据库执行中,用过多的and,执行效率实在是太低了
[此贴子已经被作者于2023/2/17 22:45:08编辑过]