Office: Tabelle erstellen mit nur 80% des Bestandswertes

Helfe beim Thema Tabelle erstellen mit nur 80% des Bestandswertes in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe eine Tabelle in der stehen verschiedene Artikel mit unterschiedlichen Bestandswerten. Diese ist absteigend nach Bestandswert sortiert.... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Bacardi62, 29. Oktober 2024.

  1. Bacardi62 hat Ahnung

    Tabelle erstellen mit nur 80% des Bestandswertes


    Hallo, ich habe eine Tabelle in der stehen verschiedene Artikel mit unterschiedlichen Bestandswerten. Diese ist absteigend nach Bestandswert sortiert.

    Mit eine Abfrage (Summe) bekomme ich den Gesamtbestandswert über alle Artikel und mit (Wert mal 0,8) errechnet sich 80% des Gesamtbestandswertes. Soweit klar.

    Nun möchte ich eine Tabelle erstellen in der die teuersten Artikel enthalten sind, bis die Summe des Bestandswerts 80% vom Gesamtbestandswert ergibt.

    Hat vielleicht jemand eine Idee oder einen Ansatz wie sich so etwas bewerkstelligen lässt?
     
    Bacardi62, 29. Oktober 2024
    #1
  2. Doming
    Doming hat Ahnung
    Hallo Barcadi,
    ich würde mir in VBA eine Schleife bauen, die die Bestandswerte addiert, bis 80% erreicht sind.
    ungetestet:
    Code:
    SET rs = CurrentDB.OpenRecordset("SELECT Bestandswert FROM tbl_Bestandwerte ORDER BY Bestandswert DESC")
    Do
        n = n + 1
        Zwischensumme = Zwischensumme + rs!Bestandswert
        rs.MoveNext
    Loop Until Zwischensumme >= 80VomGesamtWert
    In n stehen dann die Anzahl der Datensätze von oben herab.

    Gruß
    Doming
     
  3. Bacardi62 hat Ahnung
    Hallo Doming,
    so etwas ähnliches habe ich mir schon gedacht, nur leider fehlen mir noch die SQL-Kenntnisse.
    Ich werde es ausprobieren und weiter darüber berichten. Um bei deinem Codebeispiel zu bleiben....
    ist es nicht möglich, den momentanen Datensatz vor dem Loop in eine neue Tabelle (tbl80Wert) zu schreiben?
    Wenn die Loop-Bedingung erfüllt ist müsste ich doch dann gleich mein gewünschtes Ergebnis (alle Teile die zusammen 80% des Gesamtbestandes ergeben) erhalten. Oder um bei deinem Beispiel zu bleiben n = Anzahl der Datensätze. Wie erstelle ich eine Tabelle aus der einen Tabelle, bis die Anzahl erreicht ist?
     
    Bacardi62, 30. Oktober 2024
    #3
  4. Bacardi62 hat Ahnung

    Tabelle erstellen mit nur 80% des Bestandswertes

    Nach Anpassung deines Beispiels erhalte ich das Ergebnis, dass von über 7000 Datensätzen bereit nach 566 Datensätzen 80% des Gesamtbestandes erreicht ist. Tabelle erstellen mit nur 80% des Bestandswertes upload_2024-10-30_17-29-7.png
    wie bekomme ich jetzt diese 566 Datensätze in eine neue Tabelle?
     
    Bacardi62, 30. Oktober 2024
    #4
  5. Doming
    Doming hat Ahnung
    Hallo,
    interessant wäre es zu erfahren, wie die Daten später genutzt werden sollen und wie Du auf das obige Ergebnis kommst (8 Stelle hinterm Komma bei Währung?). Damit man etwas hat, auf das man aufbauen kann. So muss man irgendwelche Daten aus der Luft holen.

    In Access ist es unüblich, temporäre Ergebnisse irgendwo abzuspeichern, sie werden dann errechnet, wenn man sie braucht.
    Auch eine neue Tabelle wird nicht erstellt, man nutzt eine Abfrage, die zu jedem Zeitpunkt aktuelle Daten liefert.
     
  6. Doming
    Doming hat Ahnung
  7. andyfau
    andyfau Erfahrener User
    Da mir die ewige Suche nach laufender Nr und aufgelaufenen Summen auf die Nerven ging, hatte ich mir mal eine Funktion gebastelt, die sich einfach in Abfragen nutzen lässt und nicht jedesmal angepasst werden muss.

    Ausgangstabelle
    Tabelle erstellen mit nur 80% des Bestandswertes Zwischenablage03.jpg

    Funktion, die in ein allgemeines Modul geschrieben wird:

    Code:
    'Berechnung laufender Nr, laufender Summe, aufgelaufenem Prozentanteil
    '
    'in einer Abfrage
    'In der Abfrage muss 1 Feld den Satz eindeutig identifizieren
    'Aufrufergebnis: 'modus 1 = lfdnr, 2 = lfdsumme, 3 = Prozent von Gesamt
    'Aufruf im Abfragefenster: MeinAbfragefeld: lfd(Modus;
    '                                "Feldname des ID-Feldes in Hochkomma";
    '                                [Feldname des ID-Feldes in eckingen Klammern];
    '                                "Name meiner Abfrage in Hochkomma";
    '                                "Name des Feldes welches kumuliert werden soll in Hochkomma";
    '                                [Name des Feldes welches kumuliert werden soll in in eckingen Klammern])
    '
    Public Function lfd(modus As String, _
                        ID_feldname As String, _
                        lfdID As Long, _
                        qname As String, _
                        betrags_feldname As String, _
                        lfdbetrag As Double) As Double
        Dim rs As Recordset
        Dim db As Database
        Dim n As Integer 'Laufzaehler
        Dim b As Double  'Betragssumme laufend
        Dim g As Double  'Gesamtsumme Abfrage
        Dim p As Double  'Prozent von gesamt laufend
     
     
        On Error GoTo fehler
     
        Set db = CurrentDb
        Set rs = db.OpenRecordset(qname)
     
        If modus = 1 Then
                 rs.MoveFirst
                 n = 1
                 With rs
                   Do Until rs.Fields(ID_feldname) = lfdID Or .EOF
                      n = n + 1
                      rs.MoveNext
                   Loop
                   lfd = n
                End With
        GoTo allesok
        End If
     
        If modus = 2 Then
                 rs.MoveFirst
                 b = lfdbetrag
                 With rs
                   Do Until rs.Fields(ID_feldname) = lfdID Or .EOF
                      b = b + rs.Fields(betrags_feldname)
                      rs.MoveNext
                   Loop
                   lfd = b
                End With
        GoTo allesok
        End If
     
        If modus = 3 Then
                 g = DSum(betrags_feldname, qname)
                 rs.MoveFirst
                 b = lfdbetrag
                 With rs
                   Do Until rs.Fields(ID_feldname) = lfdID Or .EOF
                      b = b + rs.Fields(betrags_feldname)
                      rs.MoveNext
                   Loop
                   lfd = Round(b / g * 100, 2) ' auf 2 Nachkommastellen gerundet
               
                End With
        GoTo allesok
        End If
     
        Err.Number = 9999
        Err.Description = "Ungültiger Parameter"
    
    fehler:
        msgbox "Fehler in Funktion lfd: " & Err.Number & ", " & Err.Description, vbCritical, "LfdNr / LfdSumme"
     
    allesok:
    
        Set rs = Nothing
        Set db = Nothing
     
    End Function
    
    
    Abfrage(Entwurfsansicht)
    Tabelle erstellen mit nur 80% des Bestandswertes Zwischenablage01.jpg

    Abfrage (Ergebnisansicht)
    Tabelle erstellen mit nur 80% des Bestandswertes Zwischenablage02.jpg

    Falls weitere Erklärungen benötigt werden, gerne melden.
     
    andyfau, 1. November 2024
    #7
  8. andyfau
    andyfau Erfahrener User

    Tabelle erstellen mit nur 80% des Bestandswertes

    Darauf dann einfach eine Tabellenerstellungsabfrage
    Tabelle erstellen mit nur 80% des Bestandswertes Zwischenablage04.jpg
     
    andyfau, 1. November 2024
    #8
  9. Bacardi62 hat Ahnung
    Hallo Andreas,
    leider kam ich erst jetzt dazu deinen Code anzupassen und aus zu probieren. Vielen Dank, funktioniert ganz gut.
    Allerdings gibt mir die Abfrage bei LfdSumme ab Satz 273 sporadisch mal Werte mit vielen Nachkommastellen aus.
    z.B. 6041969,80000001
    gibt es die Möglichkeit in einer Abfrage das Format der Daten mit anzugeben?
    Würde mich auch interessieren für eine Tabellenerstellungsabfrage.
     
    Bacardi62, 28. November 2024
    #9
  10. andyfau
    andyfau Erfahrener User
    In den Eigenschaften des Feldes im Abfrageentwurf kannst Du das Format einstellen. In Tabellen würde ich kein Format angeben, weil es sonst zu Rundungsfehlern kommt. Was anderes sind Feldtypen (Datum, Währung, Integer, etc.) Darstellungsformate beeinflussen den Wert nicht, sollten aber nur Anzeigen (Formulare, Berichte, etc.) Verwendung finden. Für Rundungen steht die Funktion Runden() / Round() zur Verfügung. Für kaufmännisches Runden gibts diverse Beispiele in den Foren.
     
  11. Köbi
    Köbi User
Thema:

Tabelle erstellen mit nur 80% des Bestandswertes

Die Seite wird geladen...
  1. Tabelle erstellen mit nur 80% des Bestandswertes - Similar Threads - Tabelle erstellen 80%

  2. VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle

    in Microsoft Excel Hilfe
    VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle: Guten Tag zusammen In der 1. Spalte stehen KundenIDs (jeweils 2 Buchstaben), separiert mit einem Komma. Beispielsweise: ag,ok,be,li,ce In der 2. bis 15. Spalte stehen dann diverse Eigenschaften,...
  3. Bestellvorschlag Tabelle erstellen für mehrere Standorte

    in Microsoft Excel Hilfe
    Bestellvorschlag Tabelle erstellen für mehrere Standorte: Hallo zusammen Aus unserem Warenwirtschaftssystem erhalte ich Daten als CSV. Nun möchte ich aus diesen Daten wöchentlich einen Bestellvorschlag erzeugen. Für die Berechnung der Bestellmenge...
  4. Aus Ausgewählten Spalten eine neue Tabelle erstellen

    in Microsoft Excel Hilfe
    Aus Ausgewählten Spalten eine neue Tabelle erstellen: Ich bin ja derzeit an einer großen Inventur-Tabelle. Nun soll daraus ja eine übersichtliche Tabelle werden, die man einreicht. Ich könnte jetzt einfach dahergehen und alle Spalten ausblenden, die...
  5. Tabellenformatierung: Effekt auf Verweise

    in Microsoft Excel Hilfe
    Tabellenformatierung: Effekt auf Verweise: Hallo zusammen, ich habe eine Excel, in der sehr viele Produktdaten in einer Listenform gesammelt sind. Viele weitere Dateien sind über S- und X-Verweise mit dieser Produktliste verknüpft. Gerne...
  6. Hilfe bei Erstellung Formel SVerweis oder ähnliches gesucht

    in Microsoft Excel Hilfe
    Hilfe bei Erstellung Formel SVerweis oder ähnliches gesucht: Hallo liebe Gemeinde, ich habe ein Problem mit der Erstellung einer Formel. ich muss dazu sagen, ich bin ein Anwender, kenne mich ein wenig aus, aber bin kein Profi *;)* Ich hänge mein Problem...
  7. mehrere Tabellen als Pivottabelle zusammenfassen - Beziehung erstellen

    in Microsoft Excel Hilfe
    mehrere Tabellen als Pivottabelle zusammenfassen - Beziehung erstellen: Hallo zusammen, ich habe jetzt schon mehreres versucht, könnte mir eine Krücke basteln, wüsste aber gerne, ob es nicht doch eine einfachere Methode gibt: Wir führen unser Haushaltsbuch über...
  8. Tabelle der Abwesenden Personen erstellen

    in Microsoft Excel Hilfe
    Tabelle der Abwesenden Personen erstellen: Hallo ich habe Folgendes Problem, habe eine Tabelle mit Anrede, Name, Vorname, Anwesend, Grund der Abwesenheit erstellt. und möchte nun das mir Excel automatisch eine Tabelle rechts Neben an...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden