24. august 2004 - 18:35Der er
33 kommentarer og 1 løsning
Finde største og næststørste værdi af 4 felter
Kan umiddelbart ikke lige finde svar på følgende problem: Jeg har 4 beregnede felter i en formular. Hvordan er det nu lige jeg lettest i et andet felt får resultatet af den størsteværdi og af den næststørste værdi af de 4 felter?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Kan du pinde det lidt ud, når jeg har de 4 feltet fra tabel1 med bpoint, dpoint, kpoint og spoint og bedsteresultat skal stå i feltet "bedsteresultat", næstbedsteresultat skal stå i "næstbedsteresultat" ????
Spørger du om den største værdi, når man sammenligner de fire felter for én post, eller spørger du efter den største værdi for hvert af felterne når man sammenligner forskellige poster.
>>> mugs Vedr: =DMax("[FELTNAVN]";"TABELNAVN") -1 Ups! Det giver vist ikke den næststørste værdi; men derimod een mindre end den største, eller hvad?
Den næststørste må være den mindste af de to største, altså noget i stil med: SELECT TOP 1 Tabelnavn.Feltnavn AS Resultat FROM (SELECT TOP 2 Tabelnavn.Feltnavn FROM TabelnavnORDER BY Tabelnavn.Feltnavn DESC) ORDER BY Tabelnavn.Feltnavn ASC
Jeg fandt det også på www.enormthemmeligehacks.uha Prøv det en dag - men ikke fra din egen pc, det kan vist spores. Eller ?!? Da internettet jo så er nyformateret er det vel ligegyldigt.
Det var ups nr. 2 i aften! Det er ikke dit C-drev. Det er internettets C-drev. (det er meget enkelt, når man sådan ser det forklaret, ikke?) ... soveposen kalder
Det var da spændende udveksling af to erfarne herrer som åbenbart kan sit kram. Jeg har ikke fulgt med hele aftenen på grund af uventet besøg, men nu skal jeg da lige afprøve nogle ting og vender så tilbage i morgen.
Hekla spørger om noget væsentligt: "Spørger du om den største værdi, når man sammenligner de fire felter for én post, eller spørger du efter den største værdi for hvert af felterne når man sammenligner forskellige poster."
Jeg prøver lige at præcisere med eksempel: i felt 1 er der ud fra indtastninger med 22 m i boldkast beregnet et pointtal på 300. I kuglestød med et resultat på 7,50 m er der beregnet et pointtal på 700. I spydkast er der med et resultat på 26 m beregnet et pointtal til 900. I diskoskast er der beregnet et pointtal til 1100 ud fra indtastninger med et resultat på 30 m. Svarene skal selvfølgelig være at bedsteresultat er 1100 point. I det beskrevne eksempel er næstbedste resultat også 1100 point. -------------- Er det så ikke lidt andet end det I har forsøgt at fortælle mig jeg har brug for?
Jeg ville lave en VBA function der returnerede den største:
Function stoerste(tal1, tal2, tal3, tal4) As Long Dim a a = tal1 If a < ta2 Then a = tal2 If a < ta2 Then a = tal2 If a < ta2 Then a = tal2 stoerste = a End Function
derefter kan du kalde den fra din foresp:
SELECT stoerste([f1],[f2],[f3],[f4]) AS [størst] FROM Tabel1;
en rettelse mere: Function stoerste(tal1, tal2, tal3, tal4) As Long Dim a a = tal1 If a < tal2 Then a = tal2 If a < tal3 Then a = tal3 If a < tal4 Then a = tal4 stoerste = a End Function
Jeg mangler så lige næststørste tal, men jeg mener at du nih er på rette spor. Jeg må lige afprøve, men det bliver først i morgen efter normal arbejdstid.
Function toStoerste(tal1, tal2, tal3, tal4) As String Dim status As Boolean Dim var As Variant Dim temp As Long
var = Array(tal1, tal2, tal3, tal4) Do status = False For i = 0 To 2
If var(i) > var(i + 1) Then status = True temp = var(i) var(i) = var(i + 1) var(i + 1) = temp End If Next i Loop Until status = False 'Debug.Print var(0) & var(1) & var(2) & var(3) toStoerste = var(2) & " " & var(3) End Function
Hvordan og hvor er det nu lige jeg sætter koden ind henne? Jeg skulle gerne have resultat for "bedstepoint" i et felt og resultat for "næstbedstepoint" i et andet felt på formularen
Function Stoerste(tal1, tal2, tal3, tal4) As long Dim status As Boolean Dim var As Variant Dim temp As Long
var = Array(tal1, tal2, tal3, tal4) Do status = False For i = 0 To 2
If var(i) > var(i + 1) Then status = True temp = var(i) var(i) = var(i + 1) var(i + 1) = temp End If Next i Loop Until status = False 'Debug.Print var(0) & var(1) & var(2) & var(3) Stoerste = var(3) End Function
Function naestStoerste(tal1, tal2, tal3, tal4) As long Dim status As Boolean Dim var As Variant Dim temp As Long
var = Array(tal1, tal2, tal3, tal4) Do status = False For i = 0 To 2
If var(i) > var(i + 1) Then status = True temp = var(i) var(i) = var(i + 1) var(i + 1) = temp End If Next i Loop Until status = False 'Debug.Print var(0) & var(1) & var(2) & var(3) naestStoerste = var(2) End Function
Hovsa! Ved første indtastning kommer den ud med rigtige værdier men der laves fejl når jeg ændrer på tallene i tabellen, pludselig kommer den ikke ud med rigtig største og næststørste værdi.
Når du ændre i tabellen skal du køre din foresp. igen
Hvis du skal bruge resultatet på en form eller en rapport kan du kalde funktionerne direkte fra et tekstfelt.
=stoerste([f1];[f2];[f3];[f4])
Niels
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.