没有完全验证,试试吧
Dim cmd As New SQLCommand
For Each s As String In DataTables("配方").GetValues("色号","色号 is not null")
Dim drs As List(Of DataRow) = DataTables("配方").Select("色号='" & s & "'")
Dim str As String = "1=2 "
For Each dr As DataRow In drs
str = str & " or (物料编码='" & dr("物料编码") & "' And 物料名称='" & dr("物料名称") & "') "
Next
str = "Select a.染料组合编码 from (Select 染料组合编码 from {染料组合清单} group by 染料组合编码 having count(染料组合编码) = " & drs.Count & ") As a Inner join (Select 染料组合编码 from {染料组合清单} where " & str & " group by 染料组合编码 having count(染料组合编码) = " & drs.Count & ") As b on a.染料组合编码=b.染料组合编码"
cmd.CommandText = str
Dim v1 = cmd.ExecuteScalar()
If v1 > ""
DataTables("配方").ReplaceFor("染料组合编码",v1,"色号='" & s & "'")
End If
Next