Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Joina datumposter med en kalender

Postades av 2005-09-21 15:36:53 - Per Hultqvist, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 786 personer

Jag har en tabell med reservationer som ser ut ungefär så här :
<info>
<b>Reservations</b>
--------------
[Date] (DateTime)
[ResourceEntity_ID] (int)
[Time] (int)
</info>
Detta motsvarar alltså en bokning av en viss maskin (ResourceEntity) ett visst datum ett visst antal minuter. Nu vill jag skapa en beläggningsrapport med en post per datum (inom ett intervall givetvis) och resursenhet, dvs även datum där det inte finns några bokningar skall ha en post med tiden 0.

Alltså, låt säga att jag har två resurser 1 & 2, och att följande bokningar finns :

<b>Tabellen Reservations</b>

Date ResourceEntity_ID Time
---------------------------------------------
2005-01-01 1 10
2005-01-02 1 20
2005-01-02 2 30
2005-01-02 2 40
2005-01-03 2 50

Vill jag ha en beläggningsrapport för tiden 2005-01-01 till 2005-01-03 så vill jag alltså få ut följande data :

<b>Önskat resultat</b>

Date ResourceEntity_ID ReservedTime
---------------------------------------------
2005-01-01 1 10
2005-01-02 1 20
2005-01-03 1 0

2005-01-01 2 0
2005-01-02 2 70
2005-01-03 2 50

Min tanke var att skapa en temporär tabell med alla datum i intervallet och sedan joina ihop detta på något sätt med tabellen Reservations, men det sista steget lyckas jag inte med. Den temporära tabell med datumposter har jag lyckats skapa med hjälp av följande artikel :

http://www.databasejournal.com/features/mssql/article.php/3502256

Här är SQL:en för att skapa kalenderposterna om det nu hjälper:

CREATE PROCEDURE ManufacturingPlanning_GetManufacturingReservationReport
	@StartDate			DateTime=NULL,
	@Days 				int=365
AS

create table #Calendar 
(
	Dateid int identity(1,1) constraint Calendar_PK primary key CLUSTERED, 
	[Date] datetime, 
)

declare @n int
set @n =1
set @StartDate = @StartDate -1

while @n <= @Days
begin
insert into #Calendar(date) select @StartDate+@n
set @n=@n+1
end

select * from #Calendar    -- Visa resultatet

drop table #Calendar
GO


Är detta rätt väg att gå? Går det ens att lösa? Alla tips mottages tacksamt...


Svara

Sv: Joina datumposter med en kalender

Postades av 2005-09-21 16:22:52 - Ola Lindfeldt

Jag tycker du krånglar till det,
varför inte se det som en rapport som du skapar när du skriver ut din output?

alltså typ:
(PSEUDOKOD - funkar inte..)

<code>
DR = GetDataReader()
dim bHasData As Boolean

bHasData = DR.Read()

dat = StartDate
Do Until dat = EndDate
'alternativt loopa genom en array med godkända datum om du vill skippa helger t.ex.

If bHasData AndAlso dat = DR("datum")
'skriv ut datum och bokningsinfo
' för flera tillfällen per datum: loopa tills datum ändras eller är slut.
Else
'datumet fanns inte i databasen. skriv ut dat och att det är "ledigt"
End If
dat = AddDays(dat, 1) ' nästa datum
If bHasData Then bHasData = DR.Read() ' nästa rad
Loop
</code>

Det är mer rakt på sak och ger bättre prestanda än att skapa en temp-tabell och joina mot den..


Svara

Sv:Joina datumposter med en kalender

Postades av 2005-09-21 16:34:08 - Per Hultqvist

Tack för svaret,

Grejen är dock (och det kanske jag borde ha sagt) att datan skall bindas till ActiveReports, och det var därför jag ville ha datan på detta viset. Kanske blir jag dock så illa tvungen att skapa rapporten unbound och skriva lite kod för att generera de icke-existerande raderna i stället.

Jag har dock i princip lyckats fixa SQL:en nu. Cross join var lösningen :

select #Calendar.[Date] , RE.ResourceEntity_ID , 
    (select sum(Time) from Reservation where ResourceEntity_ID=RE.ResourceEntity_ID and [Date]=#Calendar.[Date]) as Time
from #Calendar 
cross join ResourceEntity RE
where RE.ResourceEntity_ID in 
		(select distinct ResourceEntity_ID 
		from Reservation
		where Reservation.Date>=@StartDate and Reservation.Date<=@StartDate+@Days)


Som du säger är ovanstående nog varken snyggt eller prestandamässigt bra.


Svara

Sv: Joina datumposter med en kalender

Postades av 2005-09-21 23:58:11 - Ola Lindfeldt

Det där borde funka rätt bra tycker jag,
se bara till att Reservation.Date är en indexerad kolumn i databasen.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
5 805
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies