webForumDet fria alternativet

visa text om objRS.EOF

ASP

5 svar · 456 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Har följnade kod som summerar värden från ett fält..

If request.Form("taskNr") <> "" Then

	Dim objRS, objConn, strSQL, dtStartDate, dtStopDate, strTaskNr, strWorkTime, strOverTime, strDetails, strUser
	
	strTaskNr = request.Form("taskNr")
	dtStartDate = request.Form("startDate")
	dtStopDate = request.Form("stopDate")
	
	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.ConnectionString = "DSN=uppdragNu"
	objConn.Open 

	strSQL = "SELECT iif (SUM(Time) IS NULL, 0, SUM(Time)) As totalTime " &_
			 "FROM tblTask " &_
			 "INNER JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
			 "WHERE tblTask.TaskNr = '" & strTaskNr & "' AND tblTime.startDate > #" & dtStartDate & "# AND tblTime.StopDate < #" & dtStopDate & " 23:59:59# "
			 
	Set objRS = Server.CreateObject("ADODB.Recordset")
	objRS.Open strSQL, objConn, 3, 1
	
		If objRS.EOF then 
			response.write "Det fanns inga uppdrag!"
		Else
			do until objRS.EOF
			Response.write objRS("totalTime")
			objRS.Movenext
			Loop
		End If
	
	objRS.Close
	Set objRS = Nothing
	objConn.Close
	Set objConn = Nothing
	
	
End If

när jag skriver ett uppdragsnummer (strTaskNr) som inte finns så visas inget.. Jag vill att texten: "Det fanns inga uppdrag!" ska visas... Men det gör den inte... Vad gör jag för fel? denna fråga kanske ska vara i sql.. då får ni flytta den..

Mvh
Henrik

Medlem sedan dec. 20003 887 inlägg
#2

Asa hade samma bekymmer för någon tråd sedan...

http://www.webforum.nu/showthread.php?p=1092211#post1092211

Medlem sedan dec. 19996 721 inlägg
#3

Recordsetet blir aldrig EOF eftersom frågan endast innehåller aggregat (SUM, COUNT etc.) och därmed alltid kommer att returnera något. Ta med tblTask.TaskNr i själva selecten, och släng på ett "GROUP BY tblTask.TaskNr " efteråt, så blir det bra

strSQL = "SELECT tblTask.TaskNr,iif (SUM(Time) IS NULL, 0, SUM(Time)) As totalTime " &_
			 "FROM tblTask " &_
			 "INNER JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
			 "WHERE tblTask.TaskNr = '" & strTaskNr & "' AND tblTime.startDate > #" & dtStartDate & "# AND tblTime.StopDate < #" & dtStopDate & " 23:59:59# GROUP BY tblTask.TaskNr "
Medlem sedan jan. 20013 582 inlägg
#4

Perfekt funkar mycket bra....!!!

Men, vad gör GROUP BY?

Mvh
Henrik

Medlem sedan dec. 20003 887 inlägg
#5

Med group by delar du in tabellen i grupper som är unika för det resultat du väljer ut.

Om du har en kolumn colA innehållandes en massa ettor, tvåor och treor och väljer ut kolumnen med

select colA from tabA group by colA

Blir ditt resultat

1
2
3
Medlem sedan jan. 20013 582 inlägg
#6

Aha! :e

Tack!
/Henrik

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)