Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datum+Index in einer Abfrage erzeugen

Begonnen von EeeTK, Februar 19, 2011, 13:20:02

⏪ vorheriges - nächstes ⏩

EeeTK

Ich habe folgende Abfrage:

Datum (aus Tabelle) | SummeInEuro (Berechnet) | JJJJMMTTXX (Das will ich noch erzeugen)
01.01.2010                  | 100,00                                     | 2010010101
01.01.2010                  | 200,00                                     | 2010010102
01.01.2010                  | 500,00                                     | 2010010103
01.02.2010                  | 1000,00                                   | 2010010201
01.02.2010                  | 1020,00                                   | 2010010202

Der Wert JJJJMMTTXX setzt sich aus dem Jahr + Monat + Tag + einer Laufenden nummer zusammen.
Wenn es mehr als ein Eintrag zum selben Datum gibt erhöht sich XX jeweils um 1.
2010 + 01 + 01 + 01
2010 + 01 + 01 + 02
usw..

Wie könnte ich das Lösen?

Folgendes habe ich bislang:
JJJJMMTTXX: Jahr([Datum])*1000000+Monat[Datum])*10000+Tag([Datum])*10

Fehlt nur noch der zwei Stellige Index am Ende.
Hat jemand ne Idee wie ich das lösen könnte?

Vielen Dank

DF6GL

Hallo,

das wird sich nicht so einfach in nur der Abfrage lösen lassen.

Wozu brauchst Du eine solche "laufende Nummer"??
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

EeeTK

Ich brauche diese um die Summe richtig abzubilden.
Denn das was ich hier aufgeschrieben habe soll das Ergebnis sein.
Momentan sieht es jedoch so aus:

Datum (aus Tabelle) | SummeInEuro (Berechnet) | JJJJMMTTXX (Das will ich noch erzeugen)
01.01.2010                  | 500,00                                     | 2010010101
01.01.2010                  | 500,00                                     | 2010010102
01.01.2010                  | 500,00                                     | 2010010103
01.02.2010                  | 1020,00                                   | 2010010201
01.02.2010                  | 1020,00                                   | 2010010202

Die Summe berechne ich mithilfe von JJJJMMTTXX
Hier stehen jedoch folgende Angaben drinn:
2010010100
2010010100
2010010100
2010010200
2010010200

Über DomSum() bekomme ich nun Summe für den jeweiligen Monat. Ich will jedoch eine fortlaufende Summierung pro Eintrag. Ich dachte das könnte ich mit diesem Index am ende von JJJJMMTT lösen..

DF6GL

Hallo,

ich versteh immer noch nicht wozu, bzw. WO Du das brauchst...


"Ich will jedoch eine fortlaufende Summierung pro Eintrag"

Am Einfachsten könntest Du das in einem Bericht erledigen. Dort könnte man nach Datum gruppieren und eine Laufende Summe pro Gruppierungsebene berechenen.

Und dafür brauchst Du kein solches "Index-Feld" in einer Abfrage..



Ohne Kenntnis der zugrundeliegenden Tabelle kann ich keine weiteren Vorschlag zu einer geeigneten Abfrage geben.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

EeeTK

Mit dem Bericht kann ich nichts anfangen. Ich nutze die Ergebnisse der Abfrage für weitere Abfragen und Formulare.

Ich versuche es nochmal zu erklären
Ich habe in der Abfrage Geldbeträge die nach Datum sortiert sind.
Was ich haben will ist eine fortlaufende Summierung der Beträge.

Das habe ich mit DomSum teilweise lösen können.

SummeInEuro: DomSumme("Nz([InEuro])";"Abfrage";"[JJJJMMTTXX] <= " & [JJJJMMTTXX] & "")
Das liefert mir eine fortlaufende Summierung pro Tag:

Datum (aus Tabelle) | InEuro (aus Tabelle) | SummeInEuro (Berechnet)
01.01.2010                  | 100,00                         | 500,00
01.01.2010                  | 100,00                         | 500,00
01.01.2010                  | 300,00                         | 500,00
01.02.2010                  | 500,00                         | 1020,00
01.02.2010                  | 20,00                           | 1020,00

Ich brauche es jedoch pro Eintrag:

Datum (aus Tabelle) | InEuro (aus Tabelle) | SummeInEuro (Berechnet)
01.01.2010                  | 100,00                         | 100,00
01.01.2010                  | 100,00                         | 200,00
01.01.2010                  | 300,00                         | 500,00
01.02.2010                  | 500,00                         | 1000,00
01.02.2010                  | 20,00                           | 1020,00

DF6GL

Hallo,

::)


versuch mal etwa dieses:

Select ID_Feld, [Datum] , InEuro,
       (Select  Sum(InEuro)
        From tblDeineTabelle
        Where tblDeineTabelle.[Datum]= temp.[Datum]
        And tblDeineTabelle.ID_Feld <= temp.ID_Feld)  as  SummeInEuro
From   tblDeineTabelle as  temp
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

EeeTK

Hallo, ich kann leider nicht mit dem ID Feld arbeiten, da die Daten nicht sortiert eingegeben werden müssen.  In der Tabelle sind somit die Daten nicht nach Datum sortiert. Ich mache eine Sortierung erst in der Abfrage.

database

Hallo,

na dann musst du dir eben mit einer Krücke helfen:

Erstelle ein Abfrag (Abfrage1) mit folgender SQL:


SELECT Tabelle1.Datum, Tabelle1.InEuro, (Select Count (*) FROM [Tabelle1] as X WHERE [X].[InEuro] < [Tabelle1].[InEuro])+1 AS Nummer
FROM Tabelle1
ORDER BY Tabelle1.Datum;


Diese Abfrage liefert eine Tabelle mit fortlaufender Nummerierung.

Dann erstellst du ein 2. Abfrage mit der folgenden SQL:


SELECT Abfrage1.Nummer, Abfrage1.Datum, Abfrage1.InEuro, (SELECT Sum(InEuro) FROM  Abfrage1 AS T WHERE  T.Nummer <= Abfrage1.Nummer) AS SummeInEuro
FROM Abfrage1
ORDER BY Abfrage1.Nummer;


und diese summiert nun das Feld InEuro fortlaufend im Abfrageergebnis.

p.s.

JEDE Tabelle sollte ein ID-Feld besitzen (Als Primärschlüssel mit Autowert - das ist fast unbezahlbar!) ;)


HTH

EeeTK

Hallo, danke für deine Antwort,

die Erste Abfrage liefert eine Nummerierung, die jedoch nicht sortiert ist nach Datum sondern nach größer der Beträge.
Zudem gibt es doppelte Nummern, in dem Falle wenn der Betrag mehrmals existiert.

Ich habe das etwas geändert:
...X WHERE [X].[InEuro] < [Tabelle1].[InEuro])...
in
...X WHERE [X].[Datum] < [Tabelle1].[Datum])...
jetzt ist es richtig nach Datum nummeriert, jedoch auch hier mehrfache Nummern, im Falle wenn Datum mehrfach vorkommt.

database

#9
Hallo,

Dein Problem ist ja schon ein Sonderfall ...  ;) :D

OK, wenn die Beträge u.U. gleich sind, kann das nicht funktionieren.
Folgende Lösung kannst du noch anstreben:

1. Erstelle ein Tabellenerstellungsabfrage mit deiner Tabelle, in der die Beträge stehen und sortiere diese nach Datum ---> Aufsteigend, nenne die Tabelle TabSort1.

2. Zeige die Tabelle im Entwurfsmodus an und füge an erster Stelle ein neues Feld ein, nenne es ID und als Datentyp nimmst du 'Autowert' und bestimmst das Feld als Primärschlüssel.

3. Zeige die Tabelle in Datenblattansicht an, es müssen nun die Datumseinträge sortiert in der Tabelle stehen und die ID ist fortlaufend von 1 bis n

4. Tabelle Schließen und eine neue Abfrage erstellen,  die Tabelle TabSort1 in den Abfrageentwurf holen.

5. Diese SQL in den SQL-Abschnitt der Abfrage KOPIEREN:


SELECT TabSort1.ID, TabSort1.Datum, TabSort1.InEuro, (SELECT Sum(InEuro) FROM  TabSort1 AS T WHERE  T.ID <= TabSort1.ID) AS SummeInEuro FROM TabSort1;


6. Abfrage ausführen ---> die IDs sind geordnet von 1 nach n,  das Datum ist aufsteigend sortiert, die InEuro-Beträge werden angezeigt und daneben die kumulierten Summen 'SummeInEuro'


Musterdatei im Anhang

HTH

[Anhang gelöscht durch Administrator]