Avatar billede ra1101 Nybegynder
28. august 2007 - 12:27 Der er 3 kommentarer

Vise poster, hvor sammentælling af felt giver xxx

Ja overskriften er sikkert ikke lige til at forstå, så jeg prøver lige at forklare hvad jeg mener.

Jeg har en tabel, der ser nogenlunde således ud:

Varenummer  Antal
123         
156            7
178            2
459            8
876           
754            3
245          10
987          30

Det jeg ønsker er at have en forespørgsel, hvor jeg kan indtaste et antal, som eks. her kunne være 20.
Forespørgslen skal nu finde de poster, hvor Antal tilsammen giver 20. Men den skal samtidigt vise de poster som er indimellem, hvor der ikke står noget i antal.

Den skal altså tælle fra oven af og nedefter, og når den rammer det antal som jeg indtaster skal den stoppe, og vise mig de poster som den har fundet fra ovenaf og ned til og med den sidste post, som sammentællingen giver.

I mit eksempel med at indtaste 20, skal den altså vise mig posterne fra 123 til og med 754.
Avatar billede terry Ekspert
28. august 2007 - 20:18 #1
is there a field which the query can be sorted on? (autonumber)
What if it isnt possible to hit exactly 20? For example if you entered 21 you coul deither stop at 754 which is less than 21 or 245 which is the record giving 20 or more!
Avatar billede Slettet bruger
28. august 2007 - 22:26 #2
Hvis du nu har en formular, som viser posterne og du laver et tekstfelt, som hedder IndtastTal. Så er her en mulighed!~)

Option Compare Database
Option Explicit
Private Sub IndtastTal_AfterUpdate()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim ialt As Integer
Dim linier As Integer

If IsNull(Me.IndtastTal) Then
Me.RecordSource = "TabelNavn"
Exit Sub
End If

Set db = CurrentDb
Set rst = db.OpenRecordset("TabelNavn")
ialt = 0
linier = 0

With rst
.MoveFirst
Do
ialt = ialt + Nz(![Antal], "0")
linier = linier + 1

    If ialt > Me.IndtastTal Then
    Me.RecordSource = "SELECT TOP " & linier - 1 & " TabelNavn.* FROM TabelNavn;"
    .Close
    Exit Sub
    End If
   
.MoveNext
Loop Until .EOF
.Close
End With
End Sub
Avatar billede Slettet bruger
28. august 2007 - 22:31 #3
Du kan sætte endnu en if sætning ind:

    If ialt = Me.IndtastTal Then
    Me.RecordSource = "SELECT TOP " & linier & " TabelNavn.* FROM TabelNavn;"
    .Close
    Exit Sub
    End If

Det kommer lidt an på hvad du vil med de tomme poster... men du kan selv lige lege lidt med det!~)
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