devotionMedlem sedan jan. 20013 582 inlägg Hej!
Har följande kod:
sSQL = "SELECT tblTask.Id, tblTime.Id, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now())"
Tanken är att visa var företagets olika montörer befinner sig baserat på de arbetstider de registrerat de tre sista dagarna.
Om Olle arbetat så här:
Måndag 2006-03-10 07:00 - 16:00 Pelles Plåt
Tisdag 2006-03-10 12:30 - 16:00 Pelles plåt
Visas följande i nuläget:
Pelles Plåt
Pelles Plåt
Jag vill att det ska visas så här:
Pelles Plåt
Dvs är en montör på samma uppdrag inom 3-dagarsspannet skall det företaget bara visas en gång!
Hmmm
Någon som fattar... ;)
//Henrik
Lägg till ett GROUP-BY uttryck (GROUP BY tblTime.User).
devotionMedlem sedan jan. 20013 582 inlägg Hej!
Gjorde det men...
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'Id'.
/frames/mainFrame.asp, rad 66
//Henrik
Ta bort några visningsfält....
MeleaMedlem sedan juli 20033 147 inlägg Borde inte något följande fungera?
SELECT
tblTask.Id,
tblTime.Id,
DISTINCT(tblTask.Task) as Task,
tblTask.CustomerName,
tblTime.StartDate,
tblTime.StopDate,
tblTime.User,
tblTask.Status
FROM
tblTask
INNER JOIN
tblTime ON tblTask.Id = tblTime.TaskId
WHERE
tblTask.Status = 3 And
tbltime.startDate >= dateadd('w',-3,now())
GROUP BY
tblTask.Id,
tblTime.Id,
tblTask.CustomerName,
tblTime.StartDate,
tblTime.StopDate,
tblTime.User,
tblTask.Status
devotionMedlem sedan jan. 20013 582 inlägg hmmm.... :(
Provade:
sSQL = "SELECT tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now()) " &_
"GROUP BY tblTime.User, tblTask.Id, tblTime.Id, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status"
och fick
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'taskId'.
/frames/mainFrame.asp, rad 66
Vad gör jag för fel?
//Henrik
devotionMedlem sedan jan. 20013 582 inlägg :)
Provade att lägga samma urval i Order by som det som ligger i SELECT, och det verkar funka!
dvs
sSQL = "SELECT tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status " &_
"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now()) " &_
"GROUP BY tblTask.Id, tblTime.taskId, tblTask.Task, tblTask.CustomerName, tblTime.StartDate, tblTime.StopDate, tblTime.User, tblTask.Status"
Är det så man måste göra eller??
//Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg Hmm, trodde jag fått det att fungera med ovanstående kod...
Men det blir ändå "dubletter" om man varit på samma jobb flera gånger inom intervallet. Vill ju bara ha en träff så att säga..
Någon??
//Henrik
Prova med DISTINCT.
Dvs, "SELECT DISTINCT tblTask.Id, tblTime.taskId, tblTask.Task osv"
LarsGMedlem sedan dec. 200012 464 inlägg Du får alltså samma värden för alla kolumner utom tblTime.StartDate, tblTime.StopDate?
Vilken av dessa poster vill du ha?
devotionMedlem sedan jan. 20013 582 inlägg Hmm, jag förstår inte riktigt.... :(
Men jag vill ha en fråga som gör det här:
http://www.webforum.nu/showthread.php?p=1171196#post1171196
Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inlägg Om jag fattat rätt så är det:
tbltime.startDate
Jag vill ha...
Men det är inte säkert jag fattat rätt
//Henrik
LarsGMedlem sedan dec. 200012 464 inlägg I det exemplet finns det bara en kolumn så det hjälper inte. Visa vilket resultat du får nu och vilket du vill ha.
T.ex. om du får
A B date
--------
1 1 2006-04-23
1 1 2006-04-08
så vill du kanske ha det äldsta datumvärdet för varje kombination av A och B. Det kan bara du tala om.
devotionMedlem sedan jan. 20013 582 inlägg Hmmmm, då borde det ju räcka med:
sSQL = "SELECT tblTask.CustomerName, tblTime.User " &_
"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-3,now())"
Eftersom det enda jag vill visa är montör och kund....
//Henrik
devotionMedlem sedan jan. 20013 582 inlägg LarsG! Är jag på rätt spår?
//Henrik
devotionMedlem sedan jan. 20013 582 inlägg Hmmm....
Med ovanstående SQL får jag detta resultat:
Thomas - SECURITAS SYSTEM AB
Thomas - SECURITAS SYSTEM AB
Thomas - BYGGN.FIRMA Claesson&Andersen HB
Thomas - BYGGN.FIRMA Claesson&Andersen HB
Thomas - KARLSKRONA LÅSSERVICE AB
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB
Per - NVS INSTALLATION AB
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB
Thomas - Lars-Erik Persson
Jörgen - SECURITAS SYSTEM AB
Niclas - SECURITAS SYSTEM AB
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB
Thomas - TAC
Hur gör jag för att inte visa "dubletterna"?
Snälla!!!
//Henrik
devotionMedlem sedan jan. 20013 582 inlägg Tack @nders! Det verkar ju fungera!
Nu får jag:
Thomas - BYGGN.FIRMA Claesson&Andersen HB
Thomas - JOHN SVENSSON BYGGNADSFIRMA AB
Thomas - KARLSKRONA LÅSSERVICE AB
Thomas - Lars-Erik Persson
Per - NVS INSTALLATION AB
Jörgen - SECURITAS SYSTEM AB
Niclas - SECURITAS SYSTEM AB
Thomas - SECURITAS SYSTEM AB
Thomas - TAC
Thomas - VÄRMEINSTALLATIONER I JÄMJÖ AB
Och det verkar ju vara rätt..
Med följande kod:
sSQL = "SELECT DISTINCT tblTask.CustomerName, tblTime.User " &_
"FROM tblTask Inner JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
"Where tblTask.Status = 3 And tbltime.startDate >= dateadd('w',-4,now())"
Mvh
Henrik