Avatar billede rasmus1234 Nybegynder
14. august 2006 - 20:26 Der er 8 kommentarer og
2 løsninger

Forespørgsel - find nærmeste

I en forspørgsel mellem to tabeller som jeg har lidt problemer med - istedet for normalt at posterne skal være unikke (f.eks. varenumre), så har jeg pludseligt en værdi (f.eks. kr.500), hvor jeg skal hente en bonusværdi
FraKr. 0,01    TilKr. 999,99 = 1% bonus
FraKr. 1000    TilKr. 1999  = 2% bonus

Hvordan henter jeg den rigtige procent ind?
Avatar billede kabbak Professor
14. august 2006 - 21:12 #1
Hvis det er for hver 1000 kr, kan denne måske bruges, husk at sætte feltet til %

Bonus: (Int([beløb]/1000)+1)/100
Avatar billede kabbak Professor
14. august 2006 - 21:13 #2
Den kobler ikke tabeller sammen, men udregner %
Avatar billede kabbak Professor
14. august 2006 - 21:16 #3
den dur sikkert ikke for den siger jo 2% af hele beløbet, så glem det.
Avatar billede rasmus1234 Nybegynder
14. august 2006 - 21:22 #4
Det er faktisk som excel, med Lopslag(A1;D:E;2;SAND)...dermed findes nærmeste værdi
Avatar billede fdata Forsker
14. august 2006 - 21:46 #5
Brug en funktion:

Function BonusPct(Beløb As Single) As Single
  If Beløb < 1000 Then
    BonusPct =  0.01
  Else
    BonusPct =  0.02
  End If
End Function
Avatar billede rasmus1234 Nybegynder
14. august 2006 - 21:51 #6
tak for indlægget, desværre er der tale om flere tusinde trin end det ene eksempel jeg viste. faktisk handler det om et produkt-hierarki, men jeg tænkte at det var mere forståeligt i kr./øre.
Avatar billede rasmus1234 Nybegynder
14. august 2006 - 22:03 #7
et lille hint....Celkos metode...i korte træk ud på, at opbygge træstrukturen ved hjælp af en ”left/right” logik frem for at anvende fremmednøgler og ”parent/child” struktur.
Avatar billede fdata Forsker
14. august 2006 - 22:12 #8
OK så.
Opret en tabel (her: Tabel2) med grænseværdierne og procenterne:
  Beløb      Pct
  999,99    1
  1999,99    2
  2999,99    3
  1000000    4

Læg puslespillet. Her er brikkerne:

Private Sub Test_FindPct()
  Dim x  As Single
  x = 1999
  Debug.Print x, FindPct(x)
End Sub

Function FindPct(b As Single) As Single
  FindPct = DLookup("Pct", "Tabel2", "Beløb>=" & RealSQLformat(b))
End Function

Function RealSQLformat(x As Variant) As String
  Dim DummyStr As String, KommaPos As Integer
  DummyStr = Format(x, "0.00")
  KommaPos = InStr(1, DummyStr, ",")
  RealSQLformat = Left(DummyStr, KommaPos - 1) & "." & Right(DummyStr, (Len(DummyStr) - KommaPos))
End Function
Avatar billede rasmus1234 Nybegynder
16. august 2006 - 15:30 #9
uha, det er lidt svært det her, men jeg har fundet en anden mulighed...simpelthen bare lade excel gøre det, jeg holder mig på ca. 55.000 poster, så det er heldigvis muligt. Men fdata, tak for hjælpen, jeg tror jeg vil prøve dit forslag, når jeg er blevet lidt mere skrap.
Avatar billede fdata Forsker
16. august 2006 - 17:27 #10
Helt i orden. Tak for point.
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