webForumDet fria alternativet

Loopa ut recordset

3 svar · 396 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej,

Jag sliter mitt hår...

Jag har följande SQL-sats:

select TaskId, TaskNr,UserNameO1, UserSignO1, UserSignO2, UserNameO2 from a_qryObjectUser order by TaskId

som ger ett recordset enligt

16437	WWW000246			                     TG	Tomas Gustafsson
16437	WWW000246	Stefan Björkqvist	SB		
16438	WWW000247			                     TG	Tomas Gustafsson
16438	WWW000247	Stefan Björkqvist	SB		
16439	WWW000248	Stefan Björkqvist	SB

Sen försöker jag loopa ut det enligt:

If not Rs.EOF then
		while not Rs.EOF
			If not Rs("UserSignO2") = "" and lLastTaskId <> Rs("TaskId") then
				sUserSign = Rs("UserSignO2")
				sUserName = Rs("UserNameO2")
			else
				sUserSign = Rs("UserSignO1")
				sUserName = Rs("UserNameO1")
			End if

			'Uppdatera signaturen på uppdragen
			sSQL_Update=sSQL_Update & "UPDATE [tblTask] SET [Modified] = GetDate(), [OwnerSign]= '" & sUserSign & "', [UserSign]= '" & sUserSign & "' WHERE [Id] = " & lTaskId & ""  & VbCrLf
			
			'Skapa en sträng med alla TaskId
			sTaskIds=lTaskId & ";" & sTaskIds
			
			'Loggtext
			sLogText="Bytt utförare på uppdraget till " & sUserName
			
			'Skapa en loggpost på uppdraget
			Call Application.AddLog(2, lTaskId, sLogText, sLogUser)
			
			lTaskId = Rs("TaskId")
			Rs.MoveNext
		Wend
end if

Jag får inte till logiken

Jag vill bara få ut 3 poster i ovanstående loop

1. sUserName = Thomas Gustafsson
2. sUserName = Thomas Gustafsson
3. sUserName = Stefan Björkqvist

Jag har försökt använda mig av TaskId för att jämföra om det är samma som föregående post, men får inte till det...

Post 1 skall vara med, för att UserSignO2 inte är tom
Post 2 skall INTE vara med eftersom TaskId är samma som föregående post och UserSign är tom
Post 3 skall vara med eftersom UserSign inte är tom och TaskId INTE är sama som föregående post
post 4 skall INTE vara med eftersom TaskId är samma som föregående post och UserSign är tom
Post 5 skall vara med eftersom UserSignO2 är tom och TaskId inte är samma som föregående post

Bifogar även sql-resultatet som bild

Please help me....

Mvh
Henrik

sql_result.png
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Din förklaring är lite vag. Du beskriver fyra poster medan ditt resultset har fem poster, och beskrvningen av post 4 stämmer inte överens med post 4.
Hursomhaver låter det här som något du bör kunna fixa enbart med SQL. Om jag förstår saken rätt: Du vill plocka ut användarna för ett visst uppdrag och du föredrar användare O2 om denne är satt, annars O1. Korrekt?

devotionMedlem sedan jan. 20013 582 inlägg
#3

nitro2k01 skrev:

Din förklaring är lite vag. Du beskriver fyra poster medan ditt resultset har fem poster, och beskrvningen av post 4 stämmer inte överens med post 4.
Hursomhaver låter det här som något du bör kunna fixa enbart med SQL. Om jag förstår saken rätt: Du vill plocka ut användarna för ett visst uppdrag och du föredrar användare O2 om denne är satt, annars O1. Korrekt?

Hmmm.... Blev lite fel där...

Så här skall det vara:

Post 1 skall vara med, för att UserSignO2 inte är tom
Post 2 skall INTE vara med eftersom TaskId är samma som föregående post och UserSign är tom
Post 3 skall vara med eftersom UserSign inte är tom och TaskId INTE är sama som föregående post
post 4 skall INTE vara med eftersom TaskId är samma som föregående post och UserSign är tom
Post 5 skall vara med eftersom UserSignO2 är tom och TaskId inte är samma som föregående post

devotionMedlem sedan jan. 20013 582 inlägg
#4

Hej igen,

Jag löste allt med SQL, efter lite trixande!

Du fick mig att tänka en runda till, så allt löste sig!

Mvh
Henrik

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)