Avatar billede frida Nybegynder
18. maj 2001 - 22:37 Der er 6 kommentarer og
1 løsning

UPDATE sidste dato fra en tabel til en anden

Min tålmodighed er ved at løbe ud; Jeg har bordreservationssystem. Og det virker! Kunden findes een gang i Kundetabellen - og vedkommendes  reservationer findes i reservationstabellen. Det er helt fint. Har jeg flere reservationer står det i reservationstabellen - og den sidste indskrevne dato står i kundetabellen. MEN  hvis en kunde reserverer flere gange hulter til bulter - altså først i oktober så i maj og så i februar så vil jeg gerne ha\' at det er den seneste reservationsdato, der figurerer i kundetabellen (altså oktober) - og ikke bare den dato der senest blev bestilt (altså februar).  Jeg vil altså opdatere: UPDATE kunde set sidsteReservationsDato = (dato i reservationstabel)  where (dato i reservationstabel) > (sidsteReservationsDato i kundetabel)
Kan nogen måske hjælpe - så er jeg evigt taknemlig!
frida
18. maj 2001 - 23:17 #1
Hej Frida,

Jeg ville nok lave en mellem-forespørgsel, som fandt alle de sidste datoer for hver kunde:
Select KundeID, Max(Reservationsdato) as Dato
From Kunde
Group By KundeID

Denne forespørgsel vil jeg så joine med din Update-forespørgsel, således at du kun får de relevante (sidste) datoer.

get my point?

/Thomas
Avatar billede frida Nybegynder
18. maj 2001 - 23:25 #2
Hej Thomas
Jeg er ikke helt med - jeg syn\'s at jeg har prøvet alt og læst i bøger osv osv. Her er kodestumpen - med samt forskellige forsøg. Hvad er det der går galt. Måske kan du forklare lidt nærmere?


SQL = \"select sidsteReservationsDato, dato from Kunde k, Reservation r where k.sidsteReservationsDato < r.dato\"

  set DATOER = forbindelse.Execute(SQL)

 
      Do While not DATOER.EOF
    l = l+1
    DATOER.MoveNext
    if Not (l = 0)then


   

  \'if (k.sidsteReservationsDato < r.dato ) then

  \'if (r.dato> k.sidsteReservationsDato) then

    \'if (r.dato > k.sidsteReservationsDato) then
    Command.CommandText = \"UPDATE Kunde SET sidsteReservationsDato = \'r.dato\' \"\'[dato]Reservation where  [sidsteReservationsDato]Kunde < [dato]Reservation \" \'where r.dato LIKE \'%\"&request(\"navn\")&\"%\'\" \'= (request.Form(\"dato\")\"      \'(\'\"& Request.Form(\"dato\") &\"\') where Ktlf = (\'\"& Request.Form(\"tlf\") &\"\')  AND Knavn = (\'\"& Request.Form(\"navn\") &\"\')\"
    Command.CommandType = adCmdText
    Command.Execute
    end if
    \'end if

  loop
end if

frida
Avatar billede moses Praktikant
21. maj 2001 - 12:00 #3
Så vidt jeg kan se, så tager du fra kundetabellen og ikke reserveationstabellen.

Det er ikke \"database-mæssig\" korrekt, at føre den sidste dato fra reservationstabellen tilbage i kundetabellen.

Du skal blot lave en Query med følgende SQL sætning:

SELECT TOP 1 [Table4].[Hvem], [Table4].[Hvornår]
FROM Table4
WHERE ((([Table4].[Hvem])=\"CarlViggo\"))
ORDER BY [Table4].[Hvornår] DESC;

Den sorterer listen med alle datoerne for \"CarlViggo\" og snupper så kun den seneste af alle datoer.
Avatar billede moses Praktikant
21. maj 2001 - 12:01 #4
Kundetabellen skal ikke indeholde nogen infromation om disse datoer.
Når du skal bruge den seneste dato i f.eks. en form, så tager du og blander ovenstående Query med kundetabellen i en ny query.
Avatar billede frida Nybegynder
23. maj 2001 - 18:12 #5
Hej Moses
Jeg tror du har ret i dit forslag. Jeg har pt. lidt travlt og vil derfor gerne have tid til at afprøve det. Når det er sket vender jeg tilbage - og du får selvfølgelig dine point, hvis det er OK
frida
Avatar billede frida Nybegynder
27. maj 2001 - 14:26 #6
Jeg har nu prøvet forskelligt - men mener at det må være noget i retning af dette:
function opdaterDato()

    SQL = \"SELECT TOP 1 [Reservation].[dato] [Reservation].[Knavn] FROM Reservation Kunde where [Reservation].[Knavn] LIKE \'%\"&request(\"navn\")&\"%\' ORDER BY [Reservation].[dato] DESC\"

    Command.CommandText = \"UPDATE Kunde SET sidsteReservationsDato = [Reservation].[dato] where [Reservation].[Knavn] = [Kunde].[Knavn]\"
    Command.CommandType = adCmdText
    Command.Execute


    end function

Men ak - det virker ikke. Kan nogen fortælle mig hvorfor?
frida
Avatar billede frida Nybegynder
03. juni 2001 - 16:38 #7
Hej moses
Takket være dit råd er jeg nået frem til denne løsning:

function opdaterDato()

    SQL = \"SELECT TOP 1 [Reservation].[dato] [Reservation].[Knavn] FROM Reservation Kunde where [Reservation].[Knavn] LIKE \'%\"&request(\"navn\")&\"%\' ORDER BY [Reservation].[dato] DESC\"

    Command.CommandText = \"UPDATE DISTINCTROW Kunde INNER JOIN Reservation ON Kunde.sidsteReservationsdato < Reservation.dato SET Kunde.sidsteReservationsDato = [Reservation].[dato] where [Reservation].[Knavn] = [Kunde].[Knavn]\"
    Command.CommandType = adCmdText
    Command.Execute

  end function

Og det virker
Du får dine point for at hjælpe mig på vej
frida
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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

Capgemini Danmark A/S

AI/Data Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Informationssikkerhedsofficer til Akkreditering & Compliance

Politiets Efterretningstjeneste

Netværksspecialist til IT i PET