<%
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 m.machineid, m.hostname, m.alias, m.serialnumber, m.machinenumber, m.pctypeid, m.machinestatusid, " & _
"m.modelnumberid, m.businessunitid, m.osid, m.loggedinuser, m.lastupdated, " & _
"vendors.vendor, models.modelnumber, operatingsystems.operatingsystem, " & _
"c.address AS ipaddress, c.macaddress, " & _
"models.machinetypeid, pctype.typename, machinestatus.machinestatus " & _
"FROM machines m " & _
"LEFT JOIN models ON m.modelnumberid = models.modelnumberid " & _
"LEFT JOIN vendors ON models.vendorid = vendors.vendorid " & _
"LEFT JOIN operatingsystems ON m.osid = operatingsystems.osid " & _
"LEFT JOIN communications c ON c.machineid = m.machineid AND c.isprimary = 1 " & _
"LEFT JOIN pctype ON m.pctypeid = pctype.pctypeid " & _
"LEFT JOIN machinestatus ON m.machinestatusid = machinestatus.machinestatusid " & _
"WHERE m.isactive = 1 AND m.pctypeid IS NOT NULL"
' Apply filters
whereClause = ""
If pcTypeFilter <> "" Then
whereClause = whereClause & "AND m.pctypeid = " & pcTypeFilter & " "
End If
If pcStatusFilter <> "" Then
whereClause = whereClause & "AND m.machinestatusid = " & pcStatusFilter & " "
End If
If recentDaysFilter <> "" And IsNumeric(recentDaysFilter) Then
whereClause = whereClause & "AND m.lastupdated >= 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 m.machineid ORDER BY m.machinenumber ASC, m.hostname ASC"
set rs = objconn.Execute(strSQL)
while not rs.eof
%>