Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Differenzen zwischen einzelnen Datensätzen
zurück: Löschabfrage mit Bestätigung durchführen weiter: nur einmal anzeigen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Kirk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Sep 2005, 14:14
Rufname:
Wohnort: Neukirchen-Vluyn

Differenzen zwischen einzelnen Datensätzen - Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Hallo zusammen,

zuerst mal ein großes Lob für dieses tolle Forum. Ich stöber schon seit einiger Zeit hier rum und habe bisher auch immer alles gefunden, was ich brauchte. Allerdings wirft mir die Suchfunktion bei meinem aktuellen Problem irgendwie keine Lösung aus, vielleicht auch, weil ich nicht weiß, wonach ich suchen soll.

Ich versuche es mal so einfach wie möglich zu beschreiben:

Ich habe eine Tabelle, in der für einzelne Mandanten Honorarzahlungen erfasst werden. Und zwar wird jeweils nur ein "ab-Datum" angegeben und die Zahlungen bleiben konstant, solange kein anderer Datensatz eingegeben wird.

also z.B. folgendermaßen:
[Honorar_ID] [Mandant_Nr] [Monat_ab] [Jahr] [Betrag]
.............1...................1.............5........2000...100,00 €
.............2...................1.............7........2000...120,00 €
.............3...................1.............12......2000.....80,00 €
.............4...................1.............3........2001...190,00 €
.............5...................1.............7........2001.......0,00 €

Ich möchte jetzt mit Access eine Abfrage erstellen, die berechnet, wie viele Monate sich zwischen 2 Einträgen befinden und welche Betrags-Summe damit anfällt.
Also im konkreten Beispiel soll berechnet werden:
2 Monate * 100 € + 5 Monate * 120 € + 3 Monate * 80 € + 4 Monate *190 €

Ich hoffe, man versteht mein Problem und würde mich über Anregungen freuen, wie ich das am besten lösen könnte.
Vielen Dank schonmal im Vorraus.
MfG

P.S.: Ich verwende übrigens Access2000 und 2003, falls das für dieses Problem irgendwie relevant sein sollte.
stpimi
Moderator Access


Verfasst am:
14. Sep 2005, 14:48
Rufname:
Wohnort: Graz


AW: Differenzen zwischen einzelnen Datensätzen - AW: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Hallo Kirk!

Das ist ohne VBA nicht zu lösen.
Folgende Funktion, die das Datum aus dem folgenden Datensatz ermittelt kopierst Du in ein Modul, das nicht den gleichen Namen haben darf wie die Funktion.
Code:
Public Function fctGetNextDate(lngHonorarID As Long, _
                               lngMandantID As Long) As Date
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset( _
        "SELECT TOP 1 Monat_ab, Jahr " & _
               " FROM DeineTabelle  " & _
              " WHERE HonorarID > " & lngHonorarID & _
                 "AND MandantID = " & lngMandantID & _
           " ORDER BY HonorarID")
    If Not rs.EOF Then
        fctGetNextDate = DateSerial(rs.Fields("Jahr"), _
                                    rs.Fields("Monat-Ab"), 1)
    End If
    Set rs = Nothing
End Function
Jetzt kannst Du in einer Abfrage die weitere Berechnung machen:
Code:
DeinBetrag: DateDiff("m";DateSerial(JahrAktuellerSatz;MonatAktuellerSatz;1);fctGetNextDate(HonorarID;MandantID)) * Betrag
Code ist ungetestet!!
_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Kirk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Sep 2005, 15:55
Rufname:
Wohnort: Neukirchen-Vluyn

AW: Differenzen zwischen einzelnen Datensätzen - AW: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Hallo stpimi,

vielen Dank schonmal für die schnelle Hilfe.
Lieder bin ich aber nicht besonders firm in VBA und bekomme jetzt bei der Abfrage eine Fehlermeldung:
Zitat:
Fehler beim Compilieren
Benutzerdefinierter Typ nicht definiert
Dabei ist
Code:
    Dim rs As DAO.Recordset
markiert und das Modul bleibt in der ersten Zeile des Moduls stehen.

Und dann noch eine ganz dumme Frage (wie gesagt, ich kenne mich mit VBA-Code nicht besonders aus), in folgendem Code bedeuten die Unterstriche doch nur Leertasten, oder? Der Code wird nämlich nicht akzeptiert, wenn ich ihn 1:1 übernehme.
Code:
    Set rs = CurrentDb.OpenRecordset( _
        "SELECT TOP 1 Monat_ab, Jahr " & _
               " FROM DeineTabelle  " & _
              " WHERE HonorarID > " & lngHonorarID & _
                 "AND MandantID = " & lngMandantID & _
           " ORDER BY HonorarID")
Willi Wipp
Moderator


Verfasst am:
14. Sep 2005, 17:07
Rufname:
Wohnort: Raum Wiesbaden

Re: Differenzen zwischen einzelnen Datensätzen - Re: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Hi Kirk,

schau Dir mal das Thema DAO/ADO: Fehler bei Recordset / Database ab A00 (Verweise) an.
Vielleicht hilft Dir das ja schon weiter?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Kirk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Sep 2005, 10:50
Rufname:
Wohnort: Neukirchen-Vluyn


AW: Differenzen zwischen einzelnen Datensätzen - AW: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Hallo Willi Wipp,
ja danke für den Tipp, auf die Idee hätte ich auch selber kommen können, dass es an den Verweisen lag.
Jetzt funktioniert zumindest schonmal die Funktion. Allerdings scheint es noch bei den Funktions-Parametern ein Problem zu geben, denn beim starten der Abfrage bekomme ich den Fehler:
Zitat:
Laufzeitfehler '3061'

2 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
Dürfte sich ja jetzt nur noch um eine Kleinigkeit handeln?!
Willi Wipp
Moderator


Verfasst am:
15. Sep 2005, 12:28
Rufname:
Wohnort: Raum Wiesbaden

Re: Differenzen zwischen einzelnen Datensätzen (II) - Re: Differenzen zwischen einzelnen Datensätzen (II)

Nach oben
       

Hi Kirk,

wenn es sich bei DeineTabelle nicht um eine Parameter-Abfrage
oder eine Abfrage mit Bezuegen auf Formular-Steuerelemente handelt,
dann hast Du vielleicht einen Schreibfehler drin.
Ohne einen Blick auf Deinen Code / SQL-Code ist das aber schwer zu sagen Wink

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 15. Sep 2005, 13:57, insgesamt einmal bearbeitet
Kirk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Sep 2005, 13:15
Rufname:
Wohnort: Neukirchen-Vluyn

AW: Differenzen zwischen einzelnen Datensätzen - AW: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Am SQL-Code soll es ja nicht scheiter! Wink
Bitteschön:
Code:
SELECT Mandant_Nr, MHonorar_ID, Monat_ab, Jahr, Betrag,
       DateDiff("m",DateSerial([Jahr],[Monat_ab],1),
       fctGetNextDate([MHonorar_ID],[Mandant_Nr]))*[Betrag] AS Summe
FROM   Monatshonorare;
Willi Wipp
Moderator


Verfasst am:
15. Sep 2005, 14:03
Rufname:
Wohnort: Raum Wiesbaden

Re: Differenzen zwischen einzelnen Datensätzen (III) - Re: Differenzen zwischen einzelnen Datensätzen (III)

Nach oben
       

Hi Kirk,

und Monatshonorare ist eine Tabelle?
Die Abfrage kannst Du oeffnen ohne das ein Formular offen sein muss
oder ein Parameter-Eingabe-Dialog auf geht?
Kannst Du mir auch noch Deinen aktuellen Code zeigen, indem der Fehler auftaucht?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Kirk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Okt 2005, 15:29
Rufname:
Wohnort: Neukirchen-Vluyn


AW: Differenzen zwischen einzelnen Datensätzen - AW: Differenzen zwischen einzelnen Datensätzen

Nach oben
       

Kirk am 15. Sep 2005 um 14:20 hat folgendes geschrieben:
OK, das Problem hat sich soweit erledigt! Es klappt jetzt bestens!! Smile
Ich bin davon ausgegangen, dass die Variablen in dem Modul einen anderen Namen tragen dürfen, als er in der Tabelle benutzt wird und habe den Code soweit aus der Vorlage von stpimi verwendet. Ich bin wohl zu sehr durch die Parameterübergabe in C und C++ vorbestraft! Wink
Jetzt heißen die Variablen genau so, wie in der Ausgangstabelle und es klappt bestens.

Hier trotzdem nochmal der endültige Code:
Code:
Public Function fctGetNextDate(lngMHonorar_ID As Long, _
                               lngMandant_Nr As Long) As Date
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset( _
        "SELECT TOP 1 Monat_ab, Jahr " & _
               " FROM Monatshonorare  " & _
              " WHERE MHonorar_ID > " & lngMHonorar_ID & _
                 "AND Mandant_Nr = " & lngMandant_Nr & _
           " ORDER BY MHonorar_ID")
    If Not rs.EOF Then
        fctGetNextDate = DateSerial(rs.Fields("Jahr"), _
                                    rs.Fields("Monat_ab"), 1)
    End If
    Set rs = Nothing
End Function
Also nochmal vielen Dank für die Mühen, ihr habt mir sehr weitergeholfen.
Wenn jetzt noch einer eine Idee hätte, wie ich es umsetzen kann, dass die Abfrage mir den letzten Eintrag bis zum aktuellen Datum hochrechnet, wenn kein Datensatz mit dem Betrag 0,00 € als letzter Eintrag vorhanden ist, wäre der Tag perfekt.
Im Moment bekomme ich nämlich eine riesige negative Zahl (anscheinend ein Überlauf) beim letzten Eintrag.

OK, hat sich auch schon erledigt! Smile
Wow, ein Erfolgserlebnis nach dem anderen, was ist denn heute los? Wink
Habe den Code einfach folgendermaßen erweitert:
Code:
Public Function fctGetNextDate(lngMHonorar_ID As Long, _
                               lngMandant_Nr As Long) As Date
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset( _
        "SELECT TOP 1 Monat_ab, Jahr " & _
               " FROM Monatshonorare  " & _
              " WHERE MHonorar_ID > " & lngMHonorar_ID & _
                 "AND Mandant_Nr = " & lngMandant_Nr & _
           " ORDER BY MHonorar_ID")
    If Not rs.EOF Then
        fctGetNextDate = DateSerial(rs.Fields("Jahr"), _
                                    rs.Fields("Monat_ab"), 1)
      Else
        fctGetNextDate = DateSerial(Year(Date), Month(Date), 1)
    End If
    Set rs = Nothing
End Function
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Löschen von Doppelten Datensätzen mit Bedingung! 0 Bernhard Könsgen 381 01. Okt 2007, 14:14
Bernhard Könsgen Löschen von Doppelten Datensätzen mit Bedingung!
Keine neuen Beiträge Access Tabellen & Abfragen: Datumsdifferenz zwischen zwei Datensätzen 0 mskgrafix 709 23. Jul 2007, 09:41
mskgrafix Datumsdifferenz zwischen zwei Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: Zählen von Datensätzen ab einem bestimmten Datum 2 eric77 685 11. Jul 2007, 15:20
eric77 Zählen von Datensätzen ab einem bestimmten Datum
Keine neuen Beiträge Access Tabellen & Abfragen: Filterung von bestimmten Datensätzen ? 2 Christian02 394 08. Mai 2007, 13:45
Christian02 Filterung von bestimmten Datensätzen ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage: Kategorien einer Spalte in einzelnen Spalten summ. 2 leopard2 498 19. März 2007, 11:50
leopard2 Abfrage: Kategorien einer Spalte in einzelnen Spalten summ.
Keine neuen Beiträge Access Tabellen & Abfragen: Zeitabfragen mit verschiedenen Datensätzen 2 ppride 577 17. Nov 2006, 01:55
Willi Wipp Zeitabfragen mit verschiedenen Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: Summieren von Datensätzen aus mehreren Tabellen 1 ripper_2001 789 13. Sep 2006, 11:23
rita2008 Summieren von Datensätzen aus mehreren Tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: Aktualisierung von bestimmten Datensätzen 21 Gast 2204 26. Jun 2006, 10:45
JTR Aktualisierung von bestimmten Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrfache Ausgabe von Datensätzen bei Mittelwert 1 Hiwi 596 13. Jun 2006, 20:34
Hiwi Mehrfache Ausgabe von Datensätzen bei Mittelwert
Keine neuen Beiträge Access Tabellen & Abfragen: Probleme in den Datensätzen 2 Gast 482 01. Jun 2006, 13:44
barsdesign Probleme in den Datensätzen
Keine neuen Beiträge Access Tabellen & Abfragen: Suche nach einzelnen Daten in Tabelle 0 Blub 671 08. März 2006, 11:59
Blub Suche nach einzelnen Daten in Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Zeit zwischen bestimmten Datensätzen ausrechnen lassen... 0 softeislutscher 681 03. März 2006, 12:23
softeislutscher Zeit zwischen bestimmten Datensätzen ausrechnen lassen...
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript