Avatar billede mortency Nybegynder
10. december 2004 - 13:24 Der er 13 kommentarer og
2 løsninger

Script som finner dager pr måned pr avdeling

Jeg har en tabell med biler som ligger under en avdeling.

tblbiler:
-ID(int)
-Regnr(varchar)
-GjelderfraDato(datetime)
-SiOppDato(datetime)
-FKAvdeling(int)

tblAvdeling
AID(int)
ANavn(Varchar)

Hvordan skal jeg kunne få ut antall biler pr avdeling pr måned? Som skal vise antall dager?
Det vil si hvis en bil er registrert(gjelderfradato) 01.01.2003 og og SiOppDato er <null> så skal den liste ut alle dager frem til i dag. Hvis SiOppDato er 25.12.2003 så skal den vise ant dager til november 2003 mnd men desebmer 2003 skal den kun vise 25 dager.

Kan dette la seg gjøre med asp og eller sql.

//Morten
Avatar billede montago Praktikant
11. december 2004 - 01:28 #1
Select DATEDIFF('d','01.01.2003',[SiOppDato]) as days from tblbiler where FKAvdeling = ???
Avatar billede montago Praktikant
11. december 2004 - 01:28 #2
vil jeg tro.....
Avatar billede montago Praktikant
11. december 2004 - 01:38 #3
Men spørgmålet er HVAD du vil have vist...

vil du have en kalender ?... eller bare hvor mange dage der er i en måned ?

mit svar giver di en liste over hvor mange dages forskel der er på 1.1.2003 til SiOppDato pr bil pr valgte afdeling

Sig til hvis der skal printes mere ud end blot antallet af dage
Avatar billede mortency Nybegynder
13. december 2004 - 11:09 #4
//Montago.

Jeg vil ha vist alle biler med antall dager pr mnd. sortert på avdeling og måned. Måned kan god vises i en egen kolonne hvis det er lettere å lage. Håper du forstår meg. Det som er viktig er at hvis det er lagt inn masse biler feks i 01.01.2003 og kun noen av dem er sagt opp, så skal også alle månedene vises.

Håper du forstår hva jeg mener takk for at du hjelper meg.

Fks:

Avdeling A

JANUAR 2003
--------------------------------------------------
Regnr      GjelderFra      SiOppdato        Antall dager
AA56567    01.01.2003      28.01.2003      28
AACC565    01.01.2003      05.02.2003      31
BC45454    05.01.2003      Løpende          26
TOTALT 3 biler a 85 dager.


FEBRUAR 2003
--------------------------------------------------
Regnr      GjelderFra      SiOppdato        Antall dager
AACC565    01.01.2003      05.02.2003      5
BC45454    05.01.2003      Løpende          30
TOTALT 2 biler a 35 dager.
Avatar billede montago Praktikant
14. december 2004 - 15:04 #5
det er dælme en hård udfordring... har siddet og bixet med det i 2-3 timer nu
Avatar billede mortency Nybegynder
14. december 2004 - 15:11 #6
Kan godt give deg mye mer point hvis du hjelper meg med dette da dette er et problem som jeg må løse. Jeg har også sittet mange timer med dette men det som bli problemet hos meg er at den gir feil i de mnd som det ikke er innmeldt(gjelderfra) noen biler.

Kan ikke du poste litt sql eller noe av det du har laget så kanskje vi kan klare dette sammen hvis du gidder. Og du kan se på noe av det jeg har laget.

Takk for hjelpen så langt!

//Morten
Avatar billede montago Praktikant
14. december 2004 - 15:32 #7
prøv det her:

<table>
<%
For numYear = 2003 to Year(Date)
    For numMonth = 1 to 12
        nextMonth = numMonth + 1
        SelYear = numYear
        if nextMonth = 13 then
            nextMonth = 1
            SelYear = SelYear + 1
        End if
        set rs = conn.exeucte("Select * from tblbiler where SiOppDato < #" & nextMonth & ".01." & SelYear & "#")
%>
    <tr>
        <td colspan="4"></td>
    </tr>
    <tr>
        <td>Regnr</td>
        <td>GjelderFra</td>
        <td>SiOppdato</td>
        <td>Antall dager</td>
    </tr>

<%       
        Do while not rs.eof
%>
    <tr>
        <td><%= rs("Regnr")%></td>
        <td><%= rs("GjelderFra")%></td>
        <td><%= rs("SiOppdato")%></td>
        <td><%= datediff("d","#" & numMonth & ".01." & numYear & "#","#" & nextMonth & ".01." & SelYear & "#") %></td>
    </tr>
<%           
        rs.movenext
        loop
    Next
Next
%>
</table>
Avatar billede montago Praktikant
14. december 2004 - 15:33 #8
nu får du dog kun de biler som har udløb i den angivne måned... tror jeg
Avatar billede montago Praktikant
14. december 2004 - 15:35 #9
Select'en bør selvfølgelig også tage de biler som først udløber senere... meen den er lidt mere tricky
Avatar billede mortency Nybegynder
14. december 2004 - 15:40 #10
Kan man ikke lave en sql som henter alle biler og der etter:

If gjelderFra is null then
datediff("d","#" & now()%>
Else
datediff("d","#" & numMonth & ".01." & numYear & "#","#" & nextMonth & ".01." & SelYear & "#") %>
End if

Hvis du skjønner hva jeg mener. Ikke tenk så mye på feil i koden da dette ble skrevet raskt.
Avatar billede montago Praktikant
14. december 2004 - 15:43 #11
hmm det skulle kunne lade sig gøre
Avatar billede mortency Nybegynder
03. oktober 2005 - 13:43 #12
Post et svar så får du noen point.
Avatar billede montago Praktikant
03. oktober 2005 - 14:00 #13
fik du det til at virke ?
Avatar billede mortency Nybegynder
03. oktober 2005 - 14:10 #14
Ja jeg fikk det til å virke, men måtte lage en sinnsykt masse kode for dette.
Avatar billede montago Praktikant
03. oktober 2005 - 14:28 #15
jeg tænkte lige...

Set rs= conn.execute("Select * from tblbiler")

Do while not rs.eof
  if IsDate(rs("SiOppDato")) Then
    response.write DateDiff( 'd',rs("GjelderfraDato"),rs("SiOppDato") )
  else
    response.write DateDiff( 'd',rs("GjelderfraDato"),now() )
  end if
rs.movenext
loop
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester