Avatar billede lunddata Nybegynder
24. august 2004 - 18:35 Der 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?
Avatar billede mugs Novice
24. august 2004 - 18:39 #1
SELECT TOP 2 Tabel1.nr
FROM Tabel1
ORDER BY Tabel1.nr DESC;
Avatar billede lunddata Nybegynder
24. august 2004 - 18:49 #2
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"  ????
Avatar billede mugs Novice
24. august 2004 - 19:09 #3
Bedste ressultat:

=DMax("[FELTNAVN]";"TABELNAVN")

Næstbedste resultat:


=DMax("[FELTNAVN]";"TABELNAVN") +1
Avatar billede mugs Novice
24. august 2004 - 19:35 #4
Næststørste skal naturligvis være:

=DMax("[FELTNAVN]";"TABELNAVN") -1
Avatar billede hekla Nybegynder
24. august 2004 - 20:53 #5
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.
Avatar billede fdata Forsker
24. august 2004 - 20:59 #6
>>> 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
Avatar billede mugs Novice
24. august 2004 - 21:14 #7
fdata ->
"Ups! Det giver vist ikke den næststørste værdi; men derimod een mindre end den største, eller hvad?"

Største værdi:
Vedr: =DMax("[FELTNAVN]";"TABELNAVN")

Er den næststørste så ikke = Den største -1:
=DMax("[FELTNAVN]";"TABELNAVN") -1
Avatar billede fdata Forsker
24. august 2004 - 21:50 #8
>>> mugs
Værdier f.eks. 5, 10, 15, 20
Største værdi er 20
Næststørste er 15
=DMax("[FELTNAVN]";"TABELNAVN") -1 returnerer 19
eller hvad?    ;o)
Avatar billede mugs Novice
24. august 2004 - 21:54 #9
fdata -> Ja selvfølgelig, sikke en tanketorsk. Jeg giver mig og slukker PC for iaften.
Avatar billede fdata Forsker
24. august 2004 - 21:56 #10
>>> mugs
Vi giver det fremskredne tidspunkt skylden. Er selv på vej i kanen.
I morgen er dette spm. endnu sjovere at læse  ;oD
Avatar billede mugs Novice
24. august 2004 - 21:58 #11
Tror du der er nogen der læser det? Eller har du en fidus så jeg kan slette visse indlæg?

Me.Undo måske?
Avatar billede fdata Forsker
24. august 2004 - 22:00 #12
Jeg har fundet et hack på nettet: Prøv med FORMAT C:
lol
Avatar billede mugs Novice
24. august 2004 - 22:03 #13
På nettet? Jeg vidste ikke man kunne formattere internettet, det skal prøves ved lejlighed.
Avatar billede fdata Forsker
24. august 2004 - 22:06 #14
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.
Avatar billede mugs Novice
24. august 2004 - 22:09 #15
Jamen jeg vidste slet ikke at internettet lå på mit C-drev.
Avatar billede fdata Forsker
24. august 2004 - 22:10 #16
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
Avatar billede mugs Novice
24. august 2004 - 22:13 #17
Internettets C-drev, Nåhhh.
Godnat ;o)
Avatar billede lunddata Nybegynder
24. august 2004 - 22:40 #18
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.
Avatar billede nih Novice
24. august 2004 - 22:52 #19
Jeg tror jeg downloader internettet inden i formatere det hele

Niels

PS. kan jeg låne et par disketter ??
Avatar billede lunddata Nybegynder
24. august 2004 - 23:07 #20
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?
Avatar billede lunddata Nybegynder
24. august 2004 - 23:10 #21
Rettelse: næstbedste resultat = 900(det er ved at være sent på aftenen).
Avatar billede nih Novice
24. august 2004 - 23:18 #22
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;

Niels
Avatar billede nih Novice
24. august 2004 - 23:19 #23
SELECT stoerste([f1],[f2],[f3],[f4]) AS størst
FROM Tabel1;
Avatar billede nih Novice
24. august 2004 - 23:21 #24
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
Avatar billede lunddata Nybegynder
24. august 2004 - 23:29 #25
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.
Avatar billede nih Novice
24. august 2004 - 23:42 #26
prøv den her:

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

Det er lidt sent og den er meget hjemmestrikket

Niels
Avatar billede nih Novice
24. august 2004 - 23:46 #27
.
Avatar billede lunddata Nybegynder
25. august 2004 - 16:36 #28
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
Avatar billede nih Novice
25. august 2004 - 17:55 #29
I et nyt modul indsættes de to funktioner:

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
Avatar billede nih Novice
25. august 2004 - 17:58 #30
herefter laver du en en foresp:

select stoerste(f1, f2, f3, f4) as mest, naestStoerste(f1, f2, f3, f4) as næstmest
from tabel

hvor f1, f2,,, er feltnavne på de felter der indeholder de værdier du vil sammenligne.
Avatar billede lunddata Nybegynder
26. august 2004 - 15:46 #31
TUSIND TAK!!!!
Det virker bare perfekt.Lige noget jeg kan bruge.
Avatar billede lunddata Nybegynder
26. august 2004 - 15:48 #32
nih: Kommer du med et svar så jeg kan få givet de velfortjente point.
Avatar billede lunddata Nybegynder
26. august 2004 - 15:59 #33
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.
Avatar billede nih Novice
26. august 2004 - 21:34 #34
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
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