webForumDet fria alternativet

visa text om objRS.EOF

5 svar · 456 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#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

Engine^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

emissionMedlem 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 "
devotionMedlem sedan jan. 20013 582 inlägg
#4

Perfekt funkar mycket bra....!!!

Men, vad gör GROUP BY?

Mvh
Henrik

Engine^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
devotionMedlem sedan jan. 20013 582 inlägg
#6

Aha! :e

Tack!
/Henrik

259 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
128 ms — hämta forumlista (db)
126 ms — hämta statistik (db)
130 ms — hämta tråd, inlägg och bilagor (db)