Här är en SQL kombinerad ASP fråga som är värdelös. Det du kommer att tjäna allra mest på: Joina ihop tabellerna i en enda fråga som hämtar ut datat för alla anställda istället för att ställa en massa frågor i loopen. Se Görans kommentarer för de är bra.Snabba upp SQL fråga....
Hur skulle jag kunna snabba upp denna?
<code>
SQL = "SELECT * FROM [EmployeeList] WHERE [ID] = '"& Request.Cookies("ID") &"'"
Set RecSet4 = Connect.Execute(SQL)
Do until RecSet4.EOF
EmpID = RecSet4("ID")
SQL = "SELECT sum(convert(int,[p-4])) as AMOUNT FROM [List] WHERE Left([P-3],1) = '0' AND ID = '" & Request.Cookies("ID") &"' AND [P-39] = '00' AND [P-49] = '752' AND EmployeeNo = '"& EmpID &"' AND left(DateTime,10) >= '"& FromDate &"' AND left(DateTime,10) <= '"& ToDate &"'"
Set RecSetSum = Connect.Execute(SQL)
If Not RecSetSum.EOF then
Total_Amt = RecSetSum("AMOUNT")
Else
Total_Amt = 0
End If
RecSetSum.Close
Set RecSetSum = Nothing
Response.Write EmpID & " - " & Total_Amt
RecSet4.MoveNext
Loop
RecSet4.Close
Set RecSet4 = Nothing
</code>Sv: Snabba upp SQL fråga....
Det ser ut som om du lagrar en massa tal i textfält. Gör om fälten till tal om det går.
Jämför DateTime med datum istället för med strängar.Sv: Snabba upp SQL fråga....
Kolla även på att skippa första frågan och loopen och använd
<code>
SELECT distinct(EmployeeNo), sum(convert(int,[p-4])) as AMOUNT
FROM [List]
WHERE Left([P-3],1) = '0'
AND ID = '" & Request.Cookies("ID") &"'
AND [P-39] = '00'
AND [P-49] = '752'
AND left(DateTime,10) >= '"& FromDate &"'
AND left(DateTime,10) <= '"& ToDate &"'"
group by EmployeeNo
</code>
och loopa runt resultatet av den frågan och skriv ut EmployeeNo samt AMOUNT. jag vet ju inte hur din databas ser ut, men på de sql frågor du har visat så borde den ovan fungera mycket bättre och den gör endast ett anrop till databasen istället för en för varje användare + en för listid.
EDIT: OBS, detta är bara en ändring för att fixa till en fråga men följ Görans råd för att få en bra struktur på tabellerna.