Avatar billede kraghjensen Nybegynder
06. marts 2006 - 12:56 Der er 6 kommentarer og
1 løsning

Function og Loop

Jeg har denne "Function" der laver en kontrol af om en bil er reserveret på en bestemt dato.

Men hvis bilen er reserveret i forvejen vil jeg gerne have en kontrol på en anden bil, og derved generer en oversigt om ledige biler på en bestemt dato. ( jeg har 4 biler der evt. kan være ledige/reserveret).
Hvordan kan man lave det?
<%
bil = request("bil")

function find_bil (bil)


Sql= "SELECT * FROM korsel WHERE bil='" & bil &"'"

Set rs = Conn.Execute(Sql)

Do while not rs.eof

  start_dato = rs("fra_dato")
  start_kl = rs("fra_klokken")
    slut_dato = rs("til_dato")
    slut_kl = rs("til_klokken")

    Ny_start_Dato = request("ny_start_dato")   
    Ny_slut_dato = request("ny_slut_dato")
    Ny_start_kl = request("ny_start_kl")
    Ny_slut_kl = request("ny_slut_kl")
 


If ((CDate(Ny_Start_Dato & " " & Ny_Start_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
    And CDate(Ny_Start_Dato & " " & Ny_Start_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
    Or (CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
    And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
    Or (CDate(Ny_Start_Dato & " " & Ny_Start_Kl) < CDate(Start_Dato & " " & Start_Kl) _
    And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) > CDate(Slut_Dato & " " & Slut_Kl))) Then
   
        DateOverlap = True
       
     
    End If   
 

 

  If DateOverlap = True Then
response.write "booket"

response.end
 



  Else
 

 
  rs.movenext
 
 
 
End if
     
loop
     

 

conn.Close



End function

%>
Avatar billede nielle Nybegynder
06. marts 2006 - 19:28 #1
Et bud:

<%
function find_bil(bil)
    Sql = "SELECT * FROM korsel WHERE bil = '" & bil & "'"
    Set rs = Conn.Execute(Sql)

    start_dato = rs("fra_dato")
    start_kl = rs("fra_klokken")

    slut_dato = rs("til_dato")
    slut_kl = rs("til_klokken")

    Ny_start_Dato = request("ny_start_dato")   
    Ny_slut_dato = request("ny_slut_dato")

    Ny_start_kl = request("ny_start_kl")
    Ny_slut_kl = request("ny_slut_kl")

    If ((CDate(Ny_Start_Dato & " " & Ny_Start_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Start_Dato & " " & Ny_Start_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
        Or (CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
        Or (CDate(Ny_Start_Dato & " " & Ny_Start_Kl) < CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) > CDate(Slut_Dato & " " & Slut_Kl))) Then
            DateOverlap = True
    End If

    If DateOverlap = True Then
        find_bil = "booket"
    Else
        find_bil = "ledig"
    End If
End function



ForetrukneBil = Request("bil")

If find_bil(ForetrukneBil) = "ledig" Then
    Response.Write "Bilen er ledig"
Else
    Response.Write "Bilen er desværre booket<br><br>"
    Response.Write "Alternativer:<br>"

    Sql2 = "SELECT bil FROM korsel WHERE bil <> '" & ForetrukneBil & "'"
    Set rs2 = Conn.Execute(Sql)

    Do While Not rs2.EoF
        AlternativBil = rs2("bil")
        Response.Write AlternativBil & " : " & find_bil(AlternativBil) & "<br>"

        rs2.MoveNext
    Loop

    Response.End
End If
%>
Avatar billede kraghjensen Nybegynder
06. marts 2006 - 23:01 #2
Det virker ikke helt, hvis der er en post (reservering) som ligger første i db hvor den nye reservering ikke er i konfikt er resultatet at bilen er ledig.

jeg har forsøgt at gøre følgende:

function find_bil(bil)
    Sql = "SELECT * FROM korsel WHERE bil = '" & bil & "'"
    Set rs = Conn.Execute(Sql)
'indsat
do while rs.eof
    start_dato = rs("fra_dato")
    start_kl = rs("fra_klokken")

    slut_dato = rs("til_dato")
    slut_kl = rs("til_klokken")

    Ny_start_Dato = request("ny_start_dato")   
    Ny_slut_dato = request("ny_slut_dato")

    Ny_start_kl = request("ny_start_kl")
    Ny_slut_kl = request("ny_slut_kl")

    If ((CDate(Ny_Start_Dato & " " & Ny_Start_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Start_Dato & " " & Ny_Start_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
        Or (CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) >= CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) <= CDate(Slut_Dato & " " & Slut_Kl)) _
        Or (CDate(Ny_Start_Dato & " " & Ny_Start_Kl) < CDate(Start_Dato & " " & Start_Kl) _
        And CDate(Ny_Slut_Dato & " " & Ny_Slut_Kl) > CDate(Slut_Dato & " " & Slut_Kl))) Then
            DateOverlap = True
    End If

    If DateOverlap = True Then
        find_bil = "booket"
    Else
        find_bil = "ledig"
    End If

'indsat

rs.movenext
loop
End function

men så vises ikke om bilen er ledig eller booket.

Hvordan kan jeg checke alle posterne, og samtidigt få samme oversigt med booket eller ledig.?

Desuden kommer alle posterne med i oversigten forstået på den måde at, hvis en bil med nr. XX45456 er booket 3 gange vises booket/ledig 3 gange for denne bil.

hvordan kan man gøre så en bil kun vises en gang.?
Avatar billede nielle Nybegynder
07. marts 2006 - 20:54 #3
Det var med vilje at jeg fjernede den indre løkke. Jeg gik nemlig ud fra at der kun var en bil i databasen som svarede til en given værdi af Request("bil"). Men det er måske ikke rigtigt?
Avatar billede kraghjensen Nybegynder
08. marts 2006 - 22:22 #4
nej, for en bil kan godt være booket flere gange - i forskellige perioder.
Avatar billede nielle Nybegynder
29. marts 2006 - 19:37 #5
Fik du nogensinde løst denne her?
Avatar billede kraghjensen Nybegynder
31. marts 2006 - 14:44 #6
Nej, det gjorde jeg ikke
Avatar billede kraghjensen Nybegynder
02. juni 2006 - 19:19 #7
Jeg lukker spr.
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

IT-JOB