<%
Dim currentPCType, currentPCStatus, recentFilter, deviceTypeFilter, sel
currentPCType = Request.QueryString("pctype")
currentPCStatus = Request.QueryString("pcstatus")
recentFilter = Request.QueryString("recent")
deviceTypeFilter = Request.QueryString("devicetype")
%>
<% If currentPCType <> "" Or currentPCStatus <> "" Or recentFilter <> "" Or deviceTypeFilter <> "" Then %>
Clear
<% End If %>
Hostname
Serial
IP
Model
OS
Machine
<%
' Build query based on filters
Dim pcTypeFilter, pcStatusFilter, recentDaysFilter, deviceTypeFilterSQL, whereClause
pcTypeFilter = Request.QueryString("pctype")
pcStatusFilter = Request.QueryString("pcstatus")
recentDaysFilter = Request.QueryString("recent")
deviceTypeFilterSQL = Request.QueryString("devicetype")
' Base query with LEFT JOINs to show all PCs
strSQL = "SELECT pc.*, vendors.vendor, models.modelnumber, operatingsystems.operatingsystem, " & _
"pc_network_interfaces.ipaddress, pc_network_interfaces.macaddress, " & _
"machines.machineid, machines.machinetypeid, pctype.typename, pcstatus.pcstatus " & _
"FROM pc " & _
"LEFT JOIN models ON pc.modelnumberid = models.modelnumberid " & _
"LEFT JOIN vendors ON models.vendorid = vendors.vendorid " & _
"LEFT JOIN operatingsystems ON pc.osid = operatingsystems.osid " & _
"LEFT JOIN pc_network_interfaces ON pc_network_interfaces.pcid = pc.pcid " & _
"LEFT JOIN machines ON pc.machinenumber = machines.machinenumber " & _
"LEFT JOIN pctype ON pc.pctypeid = pctype.pctypeid " & _
"LEFT JOIN pcstatus ON pc.pcstatusid = pcstatus.pcstatusid " & _
"WHERE pc.isactive = 1 "
' Apply filters
whereClause = ""
If pcTypeFilter <> "" Then
whereClause = whereClause & "AND pc.pctypeid = " & pcTypeFilter & " "
End If
If pcStatusFilter <> "" Then
whereClause = whereClause & "AND pc.pcstatusid = " & pcStatusFilter & " "
End If
If recentDaysFilter <> "" And IsNumeric(recentDaysFilter) Then
whereClause = whereClause & "AND pc.dateadded >= DATE_SUB(NOW(), INTERVAL " & recentDaysFilter & " DAY) "
End If
' Filter by device type (laptop vs desktop) based on model name patterns
If deviceTypeFilterSQL = "laptop" Then
whereClause = whereClause & "AND (models.modelnumber LIKE '%Latitude%' OR models.modelnumber LIKE '%Precision%' AND (models.modelnumber NOT LIKE '%Tower%')) "
ElseIf deviceTypeFilterSQL = "desktop" Then
whereClause = whereClause & "AND (models.modelnumber LIKE '%OptiPlex%' OR models.modelnumber LIKE '%Tower%' OR models.modelnumber LIKE '%Micro%') "
End If
strSQL = strSQL & whereClause & "GROUP BY pc.pcid ORDER BY pc.machinenumber ASC, pc.hostname ASC"
set rs = objconn.Execute(strSQL)
while not rs.eof
%>