Der er en funktion jeg kan ikke huske hvad den hedder men der en af de funktioner der begynder med stor C. Prøv evt at se under hjælp Funktioner C, der kan konverter fra tekst til tal. Hvis du laver en forspørgsel, kan du godt et sted sortere efter tekst og så bruge Max sammen med den funktion jeg ikke kan huske. Ellers skrivn igen
Det er bedst (=mest overskueligt) at bruge to forespørgsler - en til formularen og en til feltet. Hvis det skal være nemt, kan du bruge DlookUp, men den er lidt langsom. Ellers bruger du den samme forespørgsel to gange, men aggregerer den på Maks for den der ligger til grund for feltet. Hvis du skal bruge flere agreggatværdier (Min, Antal, Første, Sum etc..) kan du ændre i forespørgslen, så du henter allesammen på en gang.
Alternativt kan du loope gennem formularens recordset og indsætte maksværdien i et ubundet felt. Dette er det hurtigste, især hvis det er en krævende (langsom) forespørgsel der er datakilde til formularen. Men det er lidt mere besværligt at få banket ind under de rigtige hændelser, og det hele skal skrives i VBA.
Hvis du har brug for et mere specifikt svar, må du skrive lidt om formularens og forespørgslens opbygning iøvrigt.
Håber det hjælper
P.S. Iøvrigt hedder changefunktionerne CStr, CInt, CBool etc.
Jeg synes ikke det var en helt fair besvarelse jeg gav, så for at uddybe lidt:
Hvis din formular er simpelt opbygget (=dataene der skal Maks\'es er samme i samme formular og ikke underformular) kan du nøjes med:
=Maks([feltnavn]), som kontrolelementkilde til feltet.
Sorteringen burde ikke gøre nogen forskel.
Er den derimod et virvar af underformularer, så du ikke kan referere direkte til datakilden, kan du evt. lave samme trick med et skjult felt, som du så referer til via:
[Overformular]![Underformular1]![Feltnavn].
Hvis du derimod kun vil have maks for et bestemt udvalg af records kan du bruge en (I dit tilfælde DMax()) funktion som kontrolelementkilde). Der er nemlig mulighed for at angive kriterier, eks.:
Er DMax for langsom og/eller bryder du dig ikke om skjulte felter (Eller er der mange aggregater der skal udregnes på en gang) kan du køre en ekstra forespørgsel ved åbning af formularen, således:
Private Sub Form_Open(Cancel As Integer) Dim rs As Recordset Set rs = CurrentDb.OpenRecordset(\"SELECT Max(MinTabel.Pris) AS prissum FROM MinTabel;\", dbOpenSnapshot) Prisfelt = rs!prissum rs.Close End Sub
(Bemærk dette er DAO-syntaksen (Access\'97), bruger du ADO (Access2000) er syntaksen lidt anderledes.) Fordelen ved denne metode er at du kan aggregere mange felter på en gang fremfor først at DMax\'e og derefter DCount, DSum, DMin etc. (Access kører nemlig en lille forespørgsel hver eneste gang du bruger en sådan funktion - det er derfor de er lidt langsomme).
Nu hvor du har givet mig point, skal du også have et ordentligt svar... :0))
Synes godt om
Ny brugerNybegynder
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.