23. marts 2007 - 03:25Der er
26 kommentarer og 2 løsninger
Krydstabulering over perioder? (Folk skal optræde i flere perio.)
Hejsa.
Håber virkeligt i kan hjælpe mig her. Jeg har forsøgt at få lavet en statistik (krydstabulering) over hvor mange der er aktive i databasen pt. - Jeg har felterne start og slut.
Jeg kan fint lave en krydstabulering over de som er startet i de og de måneder og det samme med sluttet.
Problemet kommer når jeg gerne vil sige at eks. person1 var der fra januar til april på baggrund af start og slut datoerne. - Således han gerne skulle optræde 1 gang i både januar, februar, marts og april. Jeg laver en antagelser omkring d bliver d. 15 i måneden som er afgørende.
Dette kan jeg ikke få til at funke, har forsøgt mig med lidt af hvert. Men tror jeg er kommet frem til enten at skulle køre en tabel oprettelse som så smider person1 ind i en tabel med 4 gange, altså med januar, februar, marts og april. Må være løsningen men kan heller ikke helt få formuleret den loop/procedure i access sql:(
Jeg forsøgte mig også med at gøre det direkte i krydstabuleringen med noget ala nedenstående. (BAre kun sådan dem ikk var afsluttet kom med flere gange, men det virker heller ikke)
TRANSFORM sum(IIf(isnull(slut)=True,1,Null)) AS AntalOfCPR ...... PIVOT Format([Start],"mmm") In ("jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec");
Så jeg håber virkeligt der en haj herinde som kan hjælpe mig med noget lignende datawarehouse i access :)
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Nej. Dem løsning har jeg også lavet. Men vil gerne have en belægningsprocent pr. måned. Så bliver nødt til at sige der var eks. 50 i januar og 45 i februar osv.. På baggrund af antagelsen om d. 15 i måneden...
Håber der er en løsning på problemet... - For har selv prøvet lidt af hvert, som i kan se ovenfor...
Spg -> Nej.. regner med at lave sådan en rapport for år x.. altså sådan folk vælger et år inden rapporten vises... laver jeg bare med [søgekriterie], så der kommer popup frem...
Har du en mailadresse, så kan jeg sende et eksempel på, hvordan det kan gøres
Synes godt om
Slettet bruger
23. marts 2007 - 09:48#7
Du kunne i din tabel, lave felterne: jan, feb,...., dec og så bruge functionen:
Public Function Belaegning() Dim i, j As Date For i = 1 To 12 j = "15-" & Format(i, "00") & "-" & Format(Date, "yyyy") If Me.Start <= j And Me.Slut >= j Then Select Case i Case "1" Me.Jan = 1 Case "2" Me.Feb = 1 Case "3" Me.Mar = 1 Case "4" Me.Apr = 1 Case "5" Me.Maj = 1 Case "6" Me.Jun = 1 Case "7" Me.Jul = 1 Case "8" Me.Aug = 1 Case "9" Me.Sep = 1 Case "10" Me.Okt = 1 Case "11" Me.Nov = 1 Case "12" Me.Dec = 1 End Select End If Next i End Function
Den kan du så fyre af på et recordsæt eller bare sætte det på afterupdate eventen af din start/slut felter eller lave en knap, som indsætter eller hvad du nu synes...
Det vil have den fordel at du ikke behøver at arbejde med krydstab, som kan være lidt drilske, hvis du ønsker diverse kriterier!~)
Synes godt om
Slettet bruger
23. marts 2007 - 09:59#8
Du burde kunne omgå årstal ved at indflette formatet "dd-mm"....
For jeg har i eksemplet brugt Format(Date, "yyyy") ved variablen j og det er jo ikke sikkert du kan bruge det!~)
Jensen363 -> Ja. Kong_kornum@hotmail.com - Send meget gerne :)
Spg -> Lyder sq smart spg. Det tror jeg lige jeg vil se lidt nærmere på i aften.. Har desværre ikke tid før.. - Men så skal man have noget med insert sql halløj når man sætter den til 1... - Så den smider en record ind i en tabel når det er tilfældet.. Er sådan du vil lave det, ikk? - For er ikk sikker på at jeg er hel med på din ide, når du skriver jeg ikke skal bruge krydstab...
Smukt spg. Den er jeg med på mht. at løbe recordsættet igennem.. Dejligt at du er så hjælpsom..
Men hvad mener du med ikke at bruge krydstab?
P.S. jeg kan desværre først teste det her i aften :(
Synes godt om
Slettet bruger
23. marts 2007 - 10:14#15
Ang. krydstab, så holder jeg selv af den fornemmelse det giver når det virker, men jeg ved også hvordan de kan drille og at de har sine begrænsninger!~)
Deres største begrænsning mener jeg er "dynamiske" kriterier i forespørgslen, hvis du vil have at en afgrænsning er afhængig af et felt, så er det overordentlig vanskeligt... og en anden ting er at en krydstab-forespørgsel ikke kan upsizes til en sql-server!~)
Men hvordan vil du så lave sådan en "tidslinie" hen ad (vandret) med månederne? også værdierne ind nedenunder?
Jeg kan godt se man kan lave det lodret med noget group by date("måned") halløj også count i den anden celle...
Men vil jo gerne lave det noget let læseligt og synes altså en tidsakse skal gå vandret fra venstre mod højre :)
Sorry men lige et ekstra spørgsmål.. Du skal nok få point for det her, men jensen363 får også nogle hvis han fremsender hans løsning... - Men det ser vi lige på iaften når jeg har fået testet jeres foreslag....
Synes godt om
Slettet bruger
23. marts 2007 - 10:32#17
du laver bare en sum i jan, feb...., dec intet andet og så indsæt felterne (evt. i en underformular!~)
Synes godt om
Slettet bruger
23. marts 2007 - 10:34#18
for at kunne lave summeringen og ende med en linie er du jo nød til at se bort fra person, start og slut...
Spg din løsninger funker super! - Kanon.. Jeg smed bare koden på der hvor statistik rapporten bliver oprettet og tilrettede, så funkede det... Super!
Jensen363 -> Jeg kan godt se princippet i din, men synes ikke jeg kan finde koden til hvordan du får den oprettet den tabel? - Så må sige 150 point til spg og 50 til dig...
Håber det er iorden med jer... Mange tak for hjælpen begge 2.
Så jensen363 smid lige et svar, så får du 50 af pointene...
Jensen363 smider du lige et svar, så du kan få nogle af pointene.. Du har trodsalt også hjulpet, selvom det ikke var din løsning jeg har benyttet mig af...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.