<% Response.Write("

Cleanup Duplicate Printer Machines

") ' First, show what will be deleted Response.Write("

Records that will be DELETED:

") Dim strSQL, rs strSQL = "SELECT m1.machineid, m1.machinenumber, m1.alias, c.address as ipaddress " &_ "FROM machines m1 " &_ "LEFT JOIN communications c ON m1.machineid = c.machineid AND c.comstypeid = 1 " &_ "WHERE m1.machinetypeid = 15 " &_ "AND m1.machineid NOT IN ( " &_ " SELECT MIN(m2.machineid) " &_ " FROM machines m2 " &_ " WHERE m2.machinetypeid = 15 " &_ " GROUP BY m2.machinenumber " &_ ") " &_ "ORDER BY m1.machinenumber, m1.machineid" set rs = objConn.Execute(strSQL) Response.Write("") Response.Write("") Dim deleteCount deleteCount = 0 While Not rs.EOF deleteCount = deleteCount + 1 Response.Write("") Response.Write("") Response.Write("") Response.Write("") Response.Write("") Response.Write("") rs.MoveNext Wend Response.Write("
Machine IDMachine NumberAliasIP
" & rs("machineid") & "" & Server.HTMLEncode(rs("machinenumber") & "") & "" & Server.HTMLEncode(rs("alias") & "") & "" & Server.HTMLEncode(rs("ipaddress") & "") & "
") rs.Close Response.Write("

Total records to delete: " & deleteCount & "

") ' Now execute the DELETE Response.Write("

Executing DELETE...

") On Error Resume Next strSQL = "DELETE m1 " &_ "FROM machines m1 " &_ "WHERE m1.machinetypeid = 15 " &_ "AND m1.machineid NOT IN ( " &_ " SELECT * FROM ( " &_ " SELECT MIN(m2.machineid) " &_ " FROM machines m2 " &_ " WHERE m2.machinetypeid = 15 " &_ " GROUP BY m2.machinenumber " &_ " ) AS keep_ids " &_ ")" objConn.Execute(strSQL) If Err.Number <> 0 Then Response.Write("

ERROR:

") Response.Write("

Error Number: " & Err.Number & "

") Response.Write("

Error Description: " & Server.HTMLEncode(Err.Description) & "

") Err.Clear Else Response.Write("

DELETE completed successfully!

") End If On Error Goto 0 ' Verify no duplicates remain Response.Write("

Verification - Remaining Duplicates:

") strSQL = "SELECT machinenumber, COUNT(*) as cnt " &_ "FROM machines " &_ "WHERE machinetypeid = 15 " &_ "GROUP BY machinenumber " &_ "HAVING COUNT(*) > 1" set rs = objConn.Execute(strSQL) If rs.EOF Then Response.Write("

No duplicates remaining! ✓

") Else Response.Write("

WARNING: Duplicates still exist!

") Response.Write("") Response.Write("") While Not rs.EOF Response.Write("") Response.Write("") Response.Write("") Response.Write("") rs.MoveNext Wend Response.Write("
Machine NumberCount
" & Server.HTMLEncode(rs("machinenumber") & "") & "" & rs("cnt") & "
") End If rs.Close ' Show final count strSQL = "SELECT COUNT(*) as cnt FROM machines WHERE machinetypeid = 15" set rs = objConn.Execute(strSQL) Response.Write("

Final printer machine count: " & rs("cnt") & "

") rs.Close objConn.Close %>