webForumDet fria alternativet

Markera dubletter

ASP

28 svar · 637 visningar · startad av devotion · sida 2 av 2

Frågan, av devotion

Hej! :) I mitt uppdragssystem kan flera montörer ha samma uppdrag dvs TaskNr är samma. Dock är inte id´t samma (taskId) Jag skulle vilja markera dessa uppdrag tex att de blir röda så man lätt kan se dom i uppdragstabellen. Fråga Hur gör jag så att de uppdrag som har samma TaskNr blir rödmarkerade vid utloopning från databasen

Läs frågan i sin helhet →
Medlem sedan dec. 20025 483 inlägg
#21

Det får du nog lösa med loopar och dylikt. Hur kan jag inte svara på vid den här tidpunkten på dygnet ;)

Medlem sedan jan. 20013 582 inlägg
#22

ny dag nya möjligheter! :)

Skulle amn inte kunna lösa det med en sql-fråga i sql-frågan?

Första frågan loopar ju ut uppdragen. den andra frågan skulle med hjälp av taskNr kunna loopa ut användarna?

Hur ställer ni er till en sådan lösning. Fel eller rätt. Eller kan man baka ihop allt till en sql?

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#23

:) Hejsan!

Då har jag lyckats få till denna kod som fungerar (men några förbättringar skulle behövas göras...

<%
strSQL = "SELECT t1.User, t1.customerName, t1.customerNr, t1.taskNr, t1.task, t1.status, t1.Id, t1.CustomT2, t1.CustomT3, " &_
		 "iif((select count(*) from tbltask t2 where t2.taskNr = t1.taskNr) > 1, 1, 0) as m " &_
		 "FROM tblTask t1 " &_
		 "WHERE t1.status in (" & strStatus & ") "
	
						 
if  mWhere <> "All" then  strSQL = strSQL & "AND User = '" & strUser & "' " 
strSQL = strSQL &  "ORDER BY t1.taskNr"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1

If objRS.EOF then 
	'skriv ut felmeddelande

Else
	'skriv ut tabellrubriker
	do until objRS.EOF
		'Skriv ut tabell och tabellinnehåll
		
		'här är vi i en cell och alla montörer(user) som har detta uppdragsnumret (taskNr) listas
		strSQL2 = "SELECT user From tblTask where taskNr = '" & objRS("taskNr") & "'"
		
		Set objRS2 = Server.CreateObject("ADODB.Recordset") 
		objRS2.Open strSQL2, objConn, 3, 1
		
		If objRS.EOF then 
			'Skriv ut felmeddelande
		Else
			Do until objRS2.EOF
				Response.write objRS2("user") & " "
				objRS2.MoveNext 
			Loop
		End If	
		objRS2.Close
		Set objRS2 = Nothing
		objRS.MoveNext
		'slut på listning av montörer (user) 
	Loop
End If

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>

frågor:

1. Kan man skriva ihop dessa två sql-frågor till en? Eller kan man ha det så här? Vad kan förbättras

2. Nu listas ju user av den andra sql-frågan, även när det bara finns en. Kan man göra så att objRS2("user") bara skrivs ut om det är två eller flera träffar?

3. Övriga synpunkter på koden

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#24

hmm, ingen som vet??

mVH
henrik

Medlem sedan dec. 20025 483 inlägg
#25

Så här kanske du skulle kunna göra:

sql1 = _
"select t.tasknr" & _
"     , count(*) as total" & _
"  from tbltask t" & _
" where t.status" & _
"    in (" & strStatus & ")"
"group" & _
"    by t.tasknr" & _
"order" & _
"    by t.tasknr"

rs1.open sql1

if rs1.eof then
  ' inga uppdrag
else
  do while not rs1.eof
    sql2 = _
    "select t.user" & _
    "     , t.customername" & _
    "     , t.customernr" & _
    "     , t.tasknr" & _
    "     , t.task" & _
    "     , t.status" & _
    "     , t.id" & _
    "     , t.customt2" & _
    "     , t.customt3" & _
    "  from tbltask t" & _
    " where t.tasknr = '" & rs1("tasknr") & "'"

    rs2.open sql2

    if rs2.eof then
      ' ingen med det uppdraget
    else
      do while not rs2.eof
	' skriv ut info
        ' om rs1("total") > 1, skall det vara röd bakgrund
      loop
    end if
  loop
end if
Medlem sedan jan. 20013 582 inlägg
#26

:)
Det ser ju fint ut... men jag fattar inte riktigt...

hur listar den montörerna?

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#27

Den första SQL-frågan hämtar alla uppdrag (taskNr) samt hur många som arbetar på dem. Exempelresultat kan vara

tasknr   total
--------------
aaa      2
bbb      1
ccc      5

Med den andra frågan hämtar vi information om alla som arbetar med uppdragen. Första rundan i den inre loopen hämtar alla som arbetar med uppdrag 'aaa'. I den andra rundan hämtas alla med uppdraget 'bbb' o.s.v.

Medlem sedan jan. 20013 582 inlägg
#28

okej... men tar det hänsyn till om det är flera montörer eller inte? är det bara en så behövs det ju inte skrivas ut något...

Mvh
henrik

Medlem sedan jan. 20013 582 inlägg
#29

Hej!

Efter mycket möda och stort besvär (och lite hjälp från en okänd välgörare ;) ) har det hela löst sig....

Det var inte så svårt, recordCount gjorde susen!

Så koden ser ut så här och har den funktionalitet som jag önskade! Som vanligt får ni gärna påpeka om något kunde gjorts bättre!

God jul

Henrik

<%
strSQL = "SELECT t1.User, t1.customerName, t1.customerNr, t1.taskNr, t1.task, t1.status, t1.Id, t1.CustomT2, t1.CustomT3, " &_
		 "iif((select count(*) from tbltask t2 where t2.taskNr = t1.taskNr) > 1, 1, 0) as m " &_
		 "FROM tblTask t1 " &_
		 "WHERE t1.status in (" & strStatus & ") "
	
						 
if  mWhere <> "All" then  strSQL = strSQL & "AND User = '" & strUser & "' " 
strSQL = strSQL &  "ORDER BY t1.taskNr"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1

If objRS.EOF then 
	'skriv ut felmeddelande

Else
	'skriv ut tabellrubriker
	do until objRS.EOF
		'Skriv ut tabell och tabellinnehåll
		
		'här är vi i en cell och alla montörer(user) som har detta uppdragsnumret (taskNr) listas
		strSQL2 = "SELECT user From tblTask where taskNr = '" & objRS("taskNr") & "'"
		
		Set objRS2 = Server.CreateObject("ADODB.Recordset") 
		objRS2.Open strSQL2, objConn, 3, 1
		
		If objRS2.EOF then 
			'Skriv ut felmeddelande
		Else
			if objRS2.RecordCount > 1 then
					Do until objRS2.EOF
						Response.write objRS2("user") & " "
						objRS2.MoveNext 
					Loop
				end if
		End If	
		objRS2.Close
		Set objRS2 = Nothing
		objRS.MoveNext
		'slut på listning av montörer (user) 
	Loop
End If

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)