Avatar billede per2edb Praktikant
15. januar 2016 - 19:06 Der er 17 kommentarer og
2 løsninger

Find sum i et Datasheed

Jeg har et datasheed hvor jeg loder data ind bl.a en Pris
Jeg skal have sumprisen fra alle recorderne med Pris

Jeg benytter vba koder Total=Total+ Me.Pris  (Total=0 udenfor Datasheed)

Den har jeg lagt i Hændelsen vedAktuel men det virker ikke

Hvor skal jeg lægge Total=Total+ Me.Pris for at få summen ?

Nb  ! Det skal være i Datasheedet ikke sum i en SQL Select....
Avatar billede terry Ekspert
16. januar 2016 - 10:15 #1
Jeg har et datasheed hvor jeg loder data ...

loder, sorry I dont understand what you man here.


I assume the data sheet is bound to a table? I would guess that you need to put the code in the after update event for me.pris and instead of using SQL you could use dsum() to sum up pris for all entered records.
Avatar billede terry Ekspert
16. januar 2016 - 10:17 #2
Avatar billede per2edb Praktikant
16. januar 2016 - 12:12 #3
Jeg har prøvet dsum men det virker ikke

Jeg har formen: FrmSalg
Subformen med Data sheet: UfrmOmsætning
Feld i Data sheet: Pris
Forespørgsel: OmsKunder (Består af 12 tabeller og 8 UNION)
Data sheet er bundet til forespørgsel "OmsKunder"

På Formen FrmSalg ligger Text Boxen: GrandTotal
I GrandTotal skal vises Omsætningen= summen af alle priser vist i Data sheetet

Spårgsmål: Hvor lægger jeg dsum og tilhørende vba koder
Avatar billede terry Ekspert
16. januar 2016 - 12:40 #4
I asked a couple of questions but got no answer to them!

Why cant you make a total row as shown in link I gave?

If you cant use a totals row, where is the field showing the total?

If the query OmsKunder  contains a UNION query then I dont
expect it to be updateable so I dont understand the need for any code to update total
Avatar billede per2edb Praktikant
16. januar 2016 - 12:54 #5
Jeg kan ikke bruge linket da summen skal VBA kodes.
Jeg ved UNION ikke kan opdateres - det skal det heller ikke.
Summen skal kun vises.
Jeg er nød til at bede om vi finder en løsning som jeg har stillet det op eller jeg må opgive. At gøre det på en anden måde fører kun til en lang dialog der ikke løser mit problem
Avatar billede terry Ekspert
16. januar 2016 - 13:25 #6
Well I'm only trying to make suggestions which might help find as solution which you hadn't thought of.

But as normal, you do things your way, so lets just say your on your own from here.
Avatar billede per2edb Praktikant
16. januar 2016 - 14:05 #7
Er der andre der kan hjælpe med udgangspunkt i min problemstilling og ikke "benyt noget helt andet".
Avatar billede fdata Forsker
16. januar 2016 - 17:52 #8
Hvorfor kan du ikke bare gøre som Terry foreslår?
- Åben din forespørgsel
- Klik på Totaler i gruppen Poster
- Klik i Total-feltet under Pris og vælg Sum
Avatar billede fdata Forsker
16. januar 2016 - 17:52 #9
... du skal ikke selv summere linje for linje.
Det klarer Access for dig. Bare gør som ovenfor beskrevet.
Avatar billede per2edb Praktikant
16. januar 2016 - 19:31 #10
..Du kan ikke åbne forespørgsler når der anvendes UNION
Det kan man kun for hver enkelt forespørgsel. Derfor!
men
man må da kunde få adgang i datafelderne for hver linie, jeg kan bare finde ud af hvordan.
I afterupdate for pris kan intet registreres - men hvor så?
Avatar billede fdata Forsker
16. januar 2016 - 20:10 #11
Du kan da sagtens oprette en UNION forespørgsel, gemme den og så oprette en formular på baggrund af den.
Denne formular kan du så vælge at se som dataark og så tilføje en Total-linje som beskrevet ovenfor.

Og nej (igen): Du skal ikke selv beregne summen.
AfterUpdate fyres i øvrigt af, når du opdaterer en post; men det er jo ikke tilfældet her. Du vil jo gerne se summen uden at ændre nogen poster.
Avatar billede per2edb Praktikant
17. januar 2016 - 18:33 #12
Hej
Ja jeg kan sagtens oprette en UNION forespørgsel med SUM og dataark.
Dem har jeg masser af.
Men som jeg skriver i indledningen er der 8 UNION i samme forespørgsel.
Dem kan man ikke se ved at åbne en forespørgsel. Man laver 1 (der kan ses) og repeterer den med tilhørende variabler.

Summen af pris af de 8 UNION  kan derfor ikke laves ved at åbne forespørgslen

Derfor tilbage til mit oprindelige spørgsmål.

Da linierne "tegnes op" i dataarket må det da være muligt at hente værdierne fra et felt hvorefter man kan summe dem med VBA koder
Men hvordan og hvor hentes værdierne ud ????
Avatar billede bvirk Guru
19. januar 2016 - 12:10 #13
Nedenstående henter ikke værdier fra tegnet felt (som hedder "kontrolelementes værdi for aktuelle post" hvis man vil bruge de termer der gør at indviede forstår hvad man snakker om), men fra en kopi af det recordset som er kilden til tegneriet.

sum = 0
With RecordsetClone
    .MoveFirst
    While Not .EOF
        sum = sum + .Fields().Item("pris")
        .MoveNext: Wend: End With
Avatar billede bvirk Guru
19. januar 2016 - 12:19 #14
Kan også blot skrives sådan - fatter ikke helt hvorfor bang er så smart, at den kan erstatte 2 defalt funktioner og bliver evalueret i indre with kontekst

sum = 0
With RecordsetClone
    .MoveFirst
    While Not .EOF
        sum = sum + !pris
        .MoveNext: Wend: End With
Avatar billede per2edb Praktikant
19. januar 2016 - 12:49 #15
Nu lysner det
Men hvor skal det placeres?
Avatar billede bvirk Guru
19. januar 2016 - 16:15 #16
Hvis f.eks formularen der viser priser i datasheed visning er underformular i en formular med et tekstkontrolelement med navnet sum, vises summen af priser når underformularens objektkodemodul indeholder:

Private Sub Form_Current()
    Parent.sum = 0
    With RecordsetClone
        .MoveFirst
        While Not .EOF
            Parent.sum = Parent.sum + !pris
            .MoveNext: Wend: End With
End Sub
Avatar billede per2edb Praktikant
21. januar 2016 - 12:04 #17
Hej bvirk

Det virker
1000 tak for hjælpen
Vil du lave det så du får point
Avatar billede bvirk Guru
22. januar 2016 - 13:02 #18
Virker? Har du også sikret dig at UfrmOmsætning kun beregner sum når den er subformular til FrmSalg?
Synes lige det tilhører denne debattråd
Private Sub Form_Current()
    On Error GoTo err2452
    If Parent.Name <> "FrmSalg" Then
        DoCmd.Close
        Exit Sub: End If
    Parent.sum = 0
    With RecordsetClone
        .MoveFirst
        While Not .EOF
            Parent.sum = Parent.sum + !pris
            .MoveNext: Wend: End With
    Exit Sub
err2452: 'here parent unreferenced
    If Err.Number <> 2452 Then Err.Raise Err.Number
End Sub

Princippet har såmænd fået sit eget navn:
https://en.wikipedia.org/wiki/Coupling_%28computer_programming%29

Fordel 30/30 point #1/#13
Avatar billede per2edb Praktikant
23. januar 2016 - 19:30 #19
Bvirk dit svar har inspireret til et besllgtiget spørgsmål spørgsmål jeg har oprettet separat
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