devotionMedlem sedan jan. 20013 582 inlägg Hej!
Vet inte om detta är rätt forum.... Är det fel får ni flytta!
Ok, till frågan!
Jag har en tabell med en massa uppdrag... varje uppdrag har ett nummer och utförs av en montör. Om ett uppdrag utförs av mer än en montör skapas en klon av det ursprungliga uppdraget. Varje uppdrag har en status från 0 till 5 som betyder exempelvis; klart, pågående, fakturerat.
Detta betyder att ett uppdrag kan ha olika status beroende på om en montör är klar med sin del men en annan inte är det.
Fråga!
Kan man på något sätt ställa en SQL-fråga i kombination med lite asp-kod för att visa att uppdraget är klonat och har olika status?
tabellstruktur:
tblTask
-taskNr
-Status
-Task
Tack på förhand...!!
Mvh
Henrik
Peter SMedlem sedan dec. 20025 483 inlägg Vad är det (datamässigt) som skiljer ett vanligt uppdrag från ett klonat? Kan du ge exempel på tabellinnehåll?
LaspMedlem sedan juli 200012 980 inlägg Låt uppdragen vara för sig, skapa en relaterad post med montör(erna) sätt datum tid och stat :birp us på dessa.
devotionMedlem sedan jan. 20013 582 inlägg Det skiljer ingenting när det klonas. Det blir en exakt kopia förutom "User" som är montören...
Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg Hej!
Jag kan inte göra något åt tabellstrukturen, då jag bygger ett webgränssnitt till en färdig windowsapplikation. Annars håller jag med dig Lasp!
Mvh
Henrik
Peter SMedlem sedan dec. 20025 483 inlägg Vad representerar "User" i din tabellstruktur?
tblTask
-taskNr
-Status
-Task
Kan du ge exempel på tabellinnehåll?
devotionMedlem sedan jan. 20013 582 inlägg tblTask
-taskNr (text)
-Status (numeriskt 0-5)
-Task (Uppdrag)
-User (Montör)
Det skiljer inget datamässigt på ett klonat uppdrag.
emissionMedlem sedan dec. 19996 721 inlägg om du söker ut
SELECT taskNr,MIN(Status) as MinStatus,MAX(Status) as MaxStatus,COUNT(*) as UserCount, Task FROM tblTask GROUP BY taskNr,Task
Så kan du kolla om MinStatus skiljer sig från MaxStatus (dvs. olika status), samt hur många montörer som är delaktiga.
devotionMedlem sedan jan. 20013 582 inlägg Hej!
ok...
Kan jag lägga in den i en underfråga?
Min fråga ser ut så här nu:
strSQL = "SELECT tblTask.TaskNr, tblTask.customerName, tblTask.task, iif (SUM(Time) IS NULL, 0, SUM(Time)) As totalTime, " &_
"(SELECT iif (SUM(Time) IS NULL, 0, SUM(Time)) FROM tblTime where taskNr = '" & strTaskNr & "' and spec in " &_
"('Arbetstid', 'Arbetstid B')) as workingTime " &_
"FROM tblTask " &_
"INNER JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"WHERE " & strWhere & " " &_
"GROUP BY tblTask.TaskNr, tblTask.customerName, tblTask.task"
Den underfrågan som är med nu fungerar inte heller så bra... den tar med alla timmarna i tblTime. Dvs struntar i Wheredelen... Vad är det för fel...???
Och som sagt denna fråga kanske skalll vara i sql-forumet... sorry....
Mvh
Henrik
emissionMedlem sedan dec. 19996 721 inlägg Är lite osäker på vad Access klarar i iif-satsen (kanske måste du skriva om "in"-delen som en "or"), men i princip borde det vara något sånt här:
"SELECT tblTask.TaskNr, tblTask.customerName, tblTask.task, " & _
"MIN(Status) as MinStatus,MAX(Status) as MaxStatus,COUNT(*) as UserCount, " & _
"SUM(Time) As totalTime, SUM(iif(spec in ('Arbetstid', 'Arbetstid B'),Time,0)) as workingTime " & _
"FROM tblTask " & _
"LEFT JOIN tblTime ON tblTask.Id = tblTime.TaskId " & _
"WHERE " & strWhere & "GROUP BY tblTask.TaskNr, tblTask.customerName, tblTask.task"
devotionMedlem sedan jan. 20013 582 inlägg :birp
Jodå, "in" fungerar i access också!
Det är ju fantastiskt! Det funkar kanon!!
Thanx emission!
Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg
emission skrev:
Så kan du kolla om MinStatus skiljer sig från MaxStatus (dvs. olika status), samt hur många montörer som är delaktiga.
hmm... hur hade du tänkt dig detta?
Menar du att jämföra med nån if-sats eller nått?
Mvh
Henrik
emissionMedlem sedan dec. 19996 721 inlägg Om du vill så kan du göra en iif direkt i SQL:en för att jämföra statusarna, men jag tänkte att det kunde vara okej att få ut MinStatus och MaxStatus. Det finns inget som hindrar att du gör både och.
devotionMedlem sedan jan. 20013 582 inlägg min och maxstatus funkar perfekt, men usercount returnerar ju "alla" montörerna kan man inte göra så att endast unika räknas.
dvs om pelle finns med 4 gånger och kalle 1 gång skall den räkna till "två"
och kan man inte få med alla olika statusar nu får man ju bara med att det har olika status. Det funkar ju fint om det bara är två, men säg att det är tre...
Tänkte det vore käckt att koppla siffrorna till ikoner!
mvh
Henrik
emissionMedlem sedan dec. 19996 721 inlägg
devotion skrev:
min och maxstatus funkar perfekt, men usercount returnerar ju "alla" montörerna kan man inte göra så att endast unika räknas.
Det glömde jag. COUNT(DISTINCT User)
devotion skrev:
och kan man inte få med alla olika statusar nu får man ju bara med att det har olika status. Det funkar ju fint om det bara är två, men säg att det är tre...
Nej, för då blir det en helt annan sökning som måste returnera en rad per status/task, och då missar vi finessen med den grupperade sökningen.
devotionMedlem sedan jan. 20013 582 inlägg :(
testade det men får följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'count(distinct User)'.
user finns i tblTime
mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg :(
Hej!
Nu ser koden ut så här med hjälp från emission och lite annan hjälp...
"SELECT tblTask.TaskNr, tblTask.customerName, tblTask.task, " & _
"MIN(Status) as MinStatus, MAX(Status) as MaxStatus, (select count ( * ) " &_
"FROM (select distinct tblTime.user from tblTask INNER JOIN tblTime ON tblTask.Id = tblTime.TaskId where taskNr = '" & strTaskNr & "')) as userCount, " & _
"SUM(iif(spec in ('Arbetstid', 'Arbetstid B', 'Övertid', 'övertid B'),Time,0)) as totalTime, " & _
"SUM(iif(spec in ('Arbetstid', 'Arbetstid B'),Time,0)) as workingTime, " & _
"SUM(iif(spec in ('Övertid', 'Övertid B'),Time,0)) as overTime, " & _
"SUM(iif(Price,Price,0)) as totalPrice " & _
"FROM tblTask " & _
"LEFT JOIN tblTime ON tblTask.Id = tblTime.TaskId " & _
"WHERE " & strWhere & "GROUP BY tblTask.TaskNr, tblTask.customerName, tblTask.task"
Det funkar hyffsat, på så sätt att det inte kommer några felmeddelanden och sånt... Men det räknas fel..
Summeringsfunktionen "totalTime" räknar fel när det finns olika specifikationer i kolumnen "spec"
När det endast finns med 'Arbetstid' funkar det finfint, men när det är både 'Arbetstid' och 'Arbetstid B' tas inte 'Arbetstid B' med... mycket märkligt... Det kanske är svårt att ge några förslag på vad som kan göras när ni inte ser resultatet av satsen.. Men ni får gärna försöka...
Please!
Mvh
Henrik