Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: 69bruno am Juni 14, 2012, 15:47:22

Titel: Werte aus selektierten Zeilen im Datenblatt-Unterformular summieren
Beitrag von: 69bruno am Juni 14, 2012, 15:47:22
Hallo,

trotz Suchversuch habe ich keine Lösung für mein Problem gefunden.

Ich habe ein Unterformular in Datenblattansicht, das eine feste Anzahl Spalten und eine vom Hauptdatensatz abhängig varriierende Anzahl Zeilen enthält. Nun möchte ich, dass der Benutzer aus den angebotenen Zeilen mehrere markieren kann und die Summe der markierten Werte aus der letzten Spalte irgendwo ausgeworfen wird. (Egal ob Balloon-Meldung oder Popup oder Statusleiste....)
Am wichtigsten ist erstmal, dass Access die Werte der markierten Zeilen überhaupt summiert.

Kennt da einer einen Weg zu ??  :-[

Sieht etwa so aus:

|1. Quartal||Punkte||4|
|2. Quartal||Punkte||3|
|3. Quartal||Punkte||2|
|4. Quartal||Punkte||1|
|1. Quartal||Punkte||0|

Wenn jetzt Zeile 2,3 und 4 markiert werden, möchte ich das Ergebnis 6 irgendwo auswerfen.

Ach ja, Acc 2003
Titel: Re: Werte aus selektierten Zeilen im Datenblatt-Unterformular summieren
Beitrag von: DF6GL am Juni 14, 2012, 16:32:00
Hallo,


in Endlosform/Datenblattansicht ist es schwierig/nicht möglich , nicht aufeinander folgende Datensätze zu markieren. Als Alternative wäre denkbar:

-- ein Listenfeld mit Mehrfachselektion. Mittels Durchlaufen der selektierten Einträge kann die Summe berechnet werden.


-- Ein zusätzliches Ja/Nein-Feld, das als Kontrolkästchen im Endlosform eingebaut wird und als Markierung für die gewünschten DS fungiert. Über eine summierende Abfrage (bzw. die DSum()-Funktion) wäre dann die Berechnung durchführbar.

Titel: Re: Werte aus selektierten Zeilen im Datenblatt-Unterformular summieren
Beitrag von: 69bruno am Juni 15, 2012, 11:41:30
 ;D
Genau das habe ich auch gemerkt. Aber.....ich habe die Reihenfolge einfach so festgelegt, das für unseren Anwendungsbereich immer zusammenhängende Zeilen markiert werden.

Und dann habe ich bei einer Internetquelle einen Code gefunden, der nur leicht ageändert werden musste, um meiner Fragestellung gerecht zu werden:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim i As Long
   Dim F As Form
   Dim RS As Recordset
   Dim Summe As Long

   Summe = 0
   Set F = Me
   Set RS = F.RecordsetClone

   RS.MoveFirst
   RS.Move F.SelTop - 1

   For i = 1 To F.SelHeight
     Summe = Summe + RS![Anzahl]
     RS.MoveNext
   Next i
MsgBox "Summe der Punkte ausgewählter Zeiträume: " & Summe
End Sub