Avatar billede bemula55 Nybegynder
20. april 2006 - 15:45 Der er 1 kommentar og
1 løsning

Opdatering af en aggregatforespørgsel

Hej

Jeg har et lille problem som jeg bare ikke kan løse.

Har set http://www.eksperten.dk/spm/650423 men det hjælper mig ikke videre desværre.

Jeg har to tabeller over nogle kunder som indeholder hvornår de er kommet til og hvornår de er gået fra. Da nogle kunder er gået til før systemet blev oprettet(dvs der findes ingen registrering af tilgangen) har jeg avlgt at medtage alle kunder fra tabellen afgange og lave en LEFT JOIN med tilgange

SELECT Afgange.Intersnr, Last(Tilgange.Dato) AS Tilgangsdato, Last(Afgange.Dato) AS Afgangsdato, Afgange.Ansinitet
FROM Afgange LEFT JOIN Tilgange ON Afgange.Intersnr=Tilgange.Intersnr
GROUP BY Afgange.Intersnr, Afgange.Ansinitet
ORDER BY Last(Tilgange.Dato), Last(Afgange.Dato);

Forespørgslen skal udtrække den sidste tilgange/afgange og knytte den sammen for hvert intersnr.

Mit problem er at jeg gerne til opdatere feltet ansinitet(ligger i afgangstabel) hørende til lige netop den sidste afgang. Dette tillader access ikke at jeg gør via VBA-koden (eller andre steder).


Jeg regner umiddelbart med at det skyldes at det er en aggregatforespørgsel, men hvad kan jeg gøre for at få redigerestilladelse på det sidste ansinitetsfelt.
Avatar billede kjulius Novice
20. april 2006 - 23:51 #1
Jeg forstår ikke helt hvor du vil hen, når du siger, at du ikke kan opdatere feltet via VBA. Du kan godt nok ikke opdatere gennem selve forespørgslen, men du kan da opdatere selve tabellen ud fra forespørgslen.

Prøv f.eks. følgende:

SQL = "UPDATE Afgange a SET ansinitet = (SELECT Last(Afgange.Dato) - Last(Tilgange.Dato) FROM Afgange LEFT JOIN Tilgange ON Afgange.Intersnr=Tilgange.Intersnr WHERE Afgange.Intersnr = a.Intersnr)
WHERE Intersnr IN (SELECT DISTINCT Intersnr FROM Tilgange)"

CurrentDb.Execute SQL

Nu ved jeg jo ikke, hvad du ville putte i feltet, så jeg har bare angivet forskellen mellem seneste dato fra hhv. Afgange og Tilgange. Kun rows i Afgange, hvor der findes mindst én tilsvarende row i Tilgange bliver opdateret.

I teorien kan man gøre sådan. Det er rimelig standard SQL. Desværre overholder Access ikke altid standarderne, og da jeg ikke har testet det (er rent "brainwork"), så kan jeg jo være galt afmarcheret. Men måske kan det jo være inspiration...
Avatar billede bemula55 Nybegynder
13. februar 2007 - 22:23 #2
Lukker, ingen løsning
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