I am trying to use the results from one recordset as the basis of a second recordsets results.
Q1 Gives me the correct summed inventory by part which I am attempting to pass into another query. (When I query the sum directly as part of Q2, the summed values are incorrect and seems to have something to do with the forecast table linkage. Is it possible to create a subquery or pass the information directly. (I am an intro user, so am not too familiar with processes)
Q1
oRS7.open "Select i.partNo, sum(i.InventoryQuantity) as 'Inv Qty in FG/FS' from invloc i Where i.InventoryLocation IN ('FG','FS') GROUP BY i.partno, i.InventoryLocation", oConn
Q2
oRS.open "Select p.PartNo, p.Description, [NEED THE RESULTS TO INSERT HERE], sum(m.ForecastQuantity) as 'Current Month Plan', sum(m.ForecastQuantity)/4 as 'Weekly Avg Plan', sum(m.ForecastQuantity)/30 as '1 Day Avg Plan',(case when i.InventoryQuantity < sum(m.ForecastQuantity) then 'Y' else 'N' end)as 'Below Monthly Plan',(case when i.InventoryQuantity < sum(m.ForecastQuantity/4) then 'Y' else 'N' end)as 'Below Weekly Plan',(case when i.InventoryQuantity <= sum(m.ForecastQuantity/30) then 'Y' else 'N' end)as 'Below 1 Day Plan'
from parts p, invloc i, salesforecast m Where p.PartNo = i.PartNo and p.PartNo = m.PartNo and i.InventoryLocation='FS' and m.ForecastDate between '" & Date & "' and '" & Date+27 & "'
Group by p.partno, p.Description, i.InventoryQuantity, Order by 'Below 1 Day Plan' desc, 'Below Weekly Plan' desc, 'Below Monthly Plan' desc, p.PartNo ", oConn
The original coding called for one inventory but now I need to sum two inventory amts before comparing the values to the forecasted amts. This is being pulled on an asp.net page from MS SQL Server
See original code below (need to take FG and make it a summed inventory)
<%@ Language="VBScript" %>
<% Option Explicit %>
<%
Response.Expires = 0
Server.ScriptTimeout = 500000
dim oConn, oRS, oRS2, oRS3, oRS4, oRS5, oRS6
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={SQL Server}; Server=ABSQL21; Database=DF_WHSE; Uid=ReadOnlyUser; Pwd=bionics;"
Set oRS = Server.CreateObject("ADODB.Recordset")
Set oRS2 = Server.CreateObject("ADODB.Recordset")
Set oRS3 = Server.CreateObject("ADODB.Recordset")
Set oRS4 = Server.CreateObject("ADODB.Recordset")
Set oRS5 = Server.CreateObject("ADODB.Recordset")
Set oRS6 = Server.CreateObject("ADODB.Recordset")
%>
<html>
<head>
<title><%=Month(Date) & Day(Date) & Year(Date)%></title>
<style>
body {
font-family: "Trebuchet MS", Arial, Helvetica, san-serif;;
font-size: 12px;
}
table {
font-size: 11px;
border-collapse:collapse;
}
td {
border-bottom: 1px #ccc solid;
border-right: 1px #a1b0f3 dashed;
}
th {
border-bottom: 2px #333 solid;
border-right: 1px #a1b0f3 dashed;
background-color:#1790C0;
color: #fff;
}
input {
border: 0px;
}
a {
color: #1790C0;
text-decoration: none;
}
a:hover {
color: #5A6D81;
text-decoration: underline;
}
</style>
</head>
<body>
<center>
<img src="Logo.png">
<br>
<%
oRS.open "Select p.PartNo, p.Description, (case when i.InventoryLocation='FG' then i.InventoryQuantity else 0 end) as 'Inv Qty in FG', " &_
"sum(m.ForecastQuantity) as 'Current Month Plan', sum(m.ForecastQuantity)/4 as 'Weekly Avg Plan', sum(m.ForecastQuantity)/30 as '1 Day Avg Plan', " &_
"(case when i.InventoryQuantity < sum(m.ForecastQuantity) then 'Y' else 'N' end)as 'Below Monthly Plan', " &_
"(case when i.InventoryQuantity < sum(m.ForecastQuantity/4) then 'Y' else 'N' end)as 'Below Weekly Plan', " &_
"(case when i.InventoryQuantity <= sum(m.ForecastQuantity/30) then 'Y' else 'N' end)as 'Below 1 Day Plan' " &_
"from parts p, invloc i, salesforecast m Where p.PartNo = i.PartNo and p.PartNo = m.PartNo and i.InventoryLocation='FG' and m.ForecastDate between '" & Date & "' and '" & Date+27 & "' " &_
"Group by p.partno, p.Description, i.InventoryQuantity, i.InventoryLocation Order by 'Below 1 Day Plan' desc, 'Below Weekly Plan' desc, 'Below Monthly Plan' desc, p.PartNo ", oConn
Response.Write "<table cellpadding=2 border=0 cellspacing=4>"
Response.Write "<tr align=center>"
Response.Write "<th width=50></td>"
Response.Write "<th width=130><b>Finished Part No</b></td>"
Response.Write "<th width=140><b>Purchased Part No</b></td>"
Response.Write "<th width=200><b>Description</b></td>"
Response.Write "<th width=100><b>FG Inventory</b></td>"
Response.Write "<th width=250><b>Forward 4 Week MRP Demand</b></td>"
Response.Write "<th width=200><b>Comments</b></td>"
Response.Write "</tr>"
IF oRS.EOF THEN
Response.Write "<tr align=center>"
Response.Write "<td colspan=7>No MRP Warnings Found.</td>"
Response.Write "</tr>"
ELSE
END IF
DO WHILE NOT oRS.EOF
Select case oRS("PartNo").Value
case "7095316-36J"
case "7095316-37H"
case "7095316-49H"
case else
IF oRS("Below Monthly Plan").Value = "Y" THEN
IF oRS("Below Weekly Plan").Value = "Y" THEN
IF oRS("Below 1 Day Plan").Value = "Y" THEN
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FF3366"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("Current Month Plan").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
ELSE
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FF6600"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("Current Month Plan").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
END IF
ELSE
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FFFF66"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("Current Month Plan").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
END IF
ELSE
END IF
End select
oRS.MoveNext
Loop
Response.Write "</table><br>"
oRS.Close
oRS.open "Select p.PartNo, p.Description, " &_
"(case when i.InventoryLocation='FG' then i.InventoryQuantity else 0 end)as 'Inv Qty in FG', " &_
"sum(p.OrderPoint)as '4 Weeks Safety Stock', " &_
"sum(p.OrderPoint/4)as '1 Week Safety Stock', " &_
"sum(p.OrderPoint/4/30)as '1 Day Safety Stock', " &_
"(case when i.InventoryQuantity < sum(p.OrderPoint) then 'Y' else 'N' end)as 'Below Monthly Safety Stock', " &_
"(case when i.InventoryQuantity < sum(p.OrderPoint/4) then 'Y' else 'N' end)as 'Below Weekly Safety Stock', " &_
"(case when i.InventoryQuantity < sum(p.OrderPoint/30) then 'Y' else 'N' end)as 'Below 1 Safety Stock' " &_
"from parts p, invloc i " &_
"Where p.PartNo = i.PartNo " &_
"and i.InventoryLocation='FG' " &_
"and p.PlanningType='OPN' " &_
"and p.OrderPoint > i.InventoryQuantity " &_
"Group by p.partno, p.Description, i.InventoryQuantity, i.InventoryLocation " &_
"Order by 'Below Monthly Safety Stock' desc, 'Below Weekly Safety Stock' desc, 'Below 1 Safety Stock' desc, p.PartNo", oConn
IF oRS.EOF THEN
ELSE
Response.Write "<table cellpadding=2 border=0 cellspacing=4>"
Response.Write "<tr align=center>"
Response.Write "<th width=50></td>"
Response.Write "<th width=130></td>"
Response.Write "<th width=140></td>"
Response.Write "<th width=200></td>"
Response.Write "<th width=100></td>"
Response.Write "<th width=250><b>Order Point Level:</b></td>"
Response.Write "<th width=200></td>"
Response.Write "</tr>"
END IF
DO WHILE NOT oRS.EOF
Select case oRS("PartNo").Value
case "6015213-001"
case "5060050008"
case "8044213-001"
case "9050050011"
case "5023015-001"
case else
IF oRS("Below Monthly Safety Stock").Value = "Y" THEN
IF oRS("Below Weekly Safety Stock").Value = "Y" THEN
IF oRS("Below 1 Safety Stock").Value = "Y" THEN
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FF3366"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("4 Weeks Safety Stock").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
ELSE
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FF6600"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("4 Weeks Safety Stock").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
END IF
ELSE
Response.Write "<tr align=center>"
Response.Write "<td width=50 bgcolor=""#FFFF66"">"
Response.Write "<td><font style=""color: #0098DB; font-weight: bold;"">" & oRS("PartNo").Value & "</font></td>"
Response.Write "<td>"
oRS2.open "Select Component from dbo.bomli_all where BomId='" & oRS("PartNo").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS2.EOF
oRS3.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS2("Component").Value & "' ", oConn
If oRS3("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS2("Component").Value & "</font><br>"
Else
oRS4.open "Select Component from dbo.bomli_all where BomId='" & oRS2("Component").Value & "' and Quantity = '1.0000' Order By Component ", oConn
Do While Not oRS4.EOF
oRS5.Open "Select MakeBuyCode from dbo.parts where PartNo='" & oRS4("Component").Value & "' ", oConn
If oRS5("MakeBuyCode").Value = "B" Then
Response.Write "<font style=""font-size: 10px;"">" & oRS4("Component").Value & "</font><br>"
Else
End If
oRS5.Close
oRS4.MoveNext
Loop
oRS4.Close
End If
oRS3.Close
oRS2.MoveNext
Loop
oRS2.Close
Response.Write "</td>"
Response.Write "<td>" & oRS("Description").Value & "</td>"
Response.Write "<td><font color=#FF3366><b>" & oRS("Inv Qty in FG").Value & "</b></font></td>"
Response.Write "<td>" & oRS("4 Weeks Safety Stock").Value & "</td>"
Response.Write "<td><input type=text size=30></td>"
Response.Write "</tr>"
END IF
ELSE
END IF
End select
oRS.MoveNext
Loop
IF oRS.EOF THEN
ELSE
Response.Write "</table>"
END IF
oRS.Close
Set oRS = Nothing
oConn.Close
Set oConn = Nothing
%>
</body>
</html>
`
This does not answer your exact problem but may assist in resolving some of the join issues.
NOTE: this contains the line
The forecast table will probably need a filter or join on this column in order to be properly unique. (It depends on the data). This is a common problem when trying to correlate actuals and budgets. I hope this helps – post back and I will help futher. I suspect that if we used SQLFiddle this would be much easier!