Avatar billede swamboo Seniormester
26. maj 2008 - 23:42 Der er 4 kommentarer og
1 løsning

Hjælp til oversigt

Hejsa.

Jeg er stået af - jeg kan ikke få det til at virke, så derfor kaster jeg nu opgaven ud til nogle skrappere hoveder end mit eget :-/

Jeg har en tabel med bla. følgende rækker: "Sted" og "dato"

Nu vil jeg gerne løbe alle dataerne igennem og slutte med følgende tænkte resultat:

Kalundborg
start 23-04-2008 til 05-09-2008

Odense
start 05-05-2008 til 17-08-2008

Men hvordan kan det dog gøres?

Mit eget forslag ser således ud:
  'Abn databasen
  Set conntemp = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("db/arbejde.mdb") & "; UID=Administrator; PWD="

conntemp.open DSN


    sql = "SELECT * from [arbejdsdetaljer] ORDER BY sted,dato"

    set rstemp = conntemp.execute(sql)
    do while not (rstemp.eof or rstemp.bof)

if rstemp("sted")<>tjek then
if tjek <>"" then
response.write slut & "<br><br>"
end if
response.write rstemp("sted") & "<br>"
response.write rstemp("dato") & " - "
end if
Tjek = rstemp("sted")
slut = rstemp("dato")
rstemp.movenext
loop
rstemp.close

Men det dur ikke da den lister stederne efter alfabetisk orden, og ikke efter startdatoen som jeg gerne ville have - nogen gode forslag???

På forhånd MANGE TAK!!!!
Avatar billede swamboo Seniormester
27. maj 2008 - 00:03 #1
Mit eget forslag numme 2 er at løbe alle rækker igennem - registrere sted, samt største og mindste dato for stedet, og så skrive dem alle til sidst - men hvordan...  =)
Avatar billede fennec Nybegynder
27. maj 2008 - 08:17 #2
Tror du har en forkert opbygning af din database. Hvad vil der f.eks ske hvis du skal tilbage til kalundborg efter den 05-09-2008?? Altså hvis du skal til kalunborg over 2 omgange...

Det havde været nemmere med en DB opbygning ala:
ID, sted, start, slut
Avatar billede w13 Novice
27. maj 2008 - 12:03 #3
ORDER BY sted,dato
vil sortere efter stedets navn først, og derefter efter datoen.
Ret det til:
ORDER BY dato,sted
Avatar billede swamboo Seniormester
27. maj 2008 - 21:55 #4
Hej begge to.
Der mangler måske en vigtig detaljer i min spørgsmåls formulering.
Det er ikke muligt at angive en start og en slut dato. Det er en database hvor der bliver beskrevet de enkelte arbejds opgaver på de enkelte dage. f.eks:
01-05-2008 - Odense - gør dit og dat
02-05-2008 - Odense - gør noget andet
02-05-2008 - Silkeborg - gør det ene og det andet
10-05-2008 - Silkeborg - gør lidt mere

Så det jeg gerne vil er at den:
1) Finder alle arbejdsstederne (By'erne)
2) Finder 1. arbejdsdato i hver af byerne
3) Finder sidste arbejdsdato i hver af byerne.

ORDER BY dato, sted virker ikke godt nok hvis der skal arbejdes flere steder samtidig.

Jeg tænkte selv på at definere en array(x,3) hvor man i sit gennemløb putter "STED" i array(x,1) 1. arbejdsdag i array(x,2), og slut dag i array(x,3) - selvfølgelig efter tjek om det er den rigtige by - men jeg kan ikke få det til at virke ordentligt...
Avatar billede swamboo Seniormester
28. maj 2008 - 00:11 #5
OK - så fik jeg lavet koden - måske det kan laves lettere - men det virker, sååå....  =)

  Set conntemp = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("db/arbejde.mdb") & "; UID=Administrator; PWD="

conntemp.open DSN

SQL = "SELECT [sted] from [arbejdsdetaljer] order by sted"

    set rstemp = conntemp.execute(sql)
    do while not (rstemp.eof or rstemp.bof)
    nu = rstemp("sted")
    if sidst <>nu then
i=i+1
oversigt(i,1) = rstemp("sted")
    end if
    sidst = rstemp("sted")
rstemp.movenext
loop
rstemp.close
i=0
tjek = 0
SQL = "select * from [arbejdsdetaljer] order by dato"
    set rstemp = conntemp.execute(sql)
    do while not (rstemp.eof or rstemp.bof)
    for i = 1 to 10
        if oversigt(i,1) = rstemp("sted") then
            if oversigt(i,2) ="" then
            tjek = tjek + 1
            oversigt(i,2) = rstemp("dato")
            oversigt(i,4) = tjek
            end if
            if oversigt(i,2)>rstemp("dato") then
            oversigt(i,2)=rstemp("dato")
            end if
            if oversigt(i,3) < rstemp("dato") then
            oversigt(i,3) = rstemp("dato")
            end if
        end if
    Next
rstemp.movenext
loop
rstemp.close
dim sorteret(10)
for i = 1 to 10
if oversigt(i,1) <>"" then
sorteret(cint(oversigt(i,4)))= oversigt(i,1) &  "<br>" & oversigt(i,2) & "- " & oversigt (i,3) &"<br><br>"
else
antal = i-1
end if
next
for i = 1 to antal
response.write sorteret(i)
next
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