Hallo Leute,
habe eine kurze Frage. Ich habe eine kreuztabelle erstellt und dazu auch ein formular. Jetzt ist meine frage wie ich einen dynamischen Bericht erstellen kann. Sodass die Spaltenanzahl sich je nachdem wie die Eingabe ist ändert. Bin echt ein Anfänger darin, kann mir jemand helfen??
Roger's Access Library (http://www.rogersaccesslibrary.com/forum/topic362.html)
Danke dafür, aber das hilft mir nicht weiter, sonst würde ich nicht fragen oder?
Damit ist mein Problem leider nicht gelöst.
Hallo,
Zitatsonst würde ich nicht fragen oder?
Was erwartest Du denn eigentlich? >:(
Du haste eine kurze allgemeine Frage gestellt und darauf eine zielführende Antwort bekommen.
ZitatDamit ist mein Problem leider nicht gelöst
Wer, glaubst Du, ist daran denn schuld?
Mit solchen pampigen Antworten wirst Du Dein Problem sicher nicht lösen....
Habe ich irgendwo gesagt, dass irgendjemand Schuld ist? Ich habe nur gesagt, dass ich damit nicht klar komme. Tut mir leid, aber ich bin halt noch Anfänger darin. Ich habe mich ausdrücklich bedankt. Naja egal.
Hallo,
nun, dann sagt doch, WOMIT Du nicht klar kommst...
Das Du Anfänger bist, ist nicht das Thema und auch nicht schlimm.
Ein Bericht ist nun mal nicht in dieser Form dynamisch, seine Spalten automatisch an die Überschriften-Anzahl anzupassen. Insofern ist ein bisschen Programmierung nötig, um das zu realisieren. Und dafür sind nun mal mehr oder weniger Grundkenntnisse in VBA erforderlich. Da solltest Du ansetzen und Dich einlesen, bevor Du an solche Aufgaben herangehst.
Es gibt eine Alternative zu einem Report: Wenn nicht unbedingt die Kreuztabellendarstellung gedruckt werden soll, könnte ein Geteiltes Formular den Zweck erfüllen. Aber auch dort ist ein gewisses (und m. E. spezielleres) Maß an VBA erforderlich.
Eingeschränkt sollte auch ein Formular in Tabellenansicht dienlich sein. (ColumnWidth bearbeiten) . Aber auch da geht ohne VBA nichts.
Danke für deine Antwort. Ich bin echt am verzweifeln, du hast ja recht nur ich muss heute fertig werden damit. Ich weiss echt nicht wie ich das hinbekommen kann. ich habe diese SQL Abfrage
und Mit dem Formular unten im Anhang, soll die Jahreszahl eingegeben werden. Gibt man jetzt 2015 ein und drückt auf den Button Bericht öffnen, sollen die Spalten 2013, 2014 und 2015 angezeigt werden. Meine SQl Abfrage ist ja auch richtig, aber wie gesagt klappt das mit der dynamischen Eingabe leider nicht. Ich wäre dir so Dankbar, wenn du mir helfe könntest.
Hallo,
vermutlich scheitert es schon hier: http://www.donkarl.com/?FAQ3.18
Das muss erst gelöst (umgesetzt) werden. Danach sieht man weiter.
Zitatich muss heute fertig werden damit
hört sich sehr nach Fehlplanung an..
PS: machen wir jetzt Crossposting im eigenen Forum????
Zitat von: DF6GL am Februar 26, 2016, 09:32:35
Hallo,
vermutlich scheitert es schon hier: http://www.donkarl.com/?FAQ3.18
Das muss erst gelöst (umgesetzt) werden. Danach sieht man weiter.
Zitatich muss heute fertig werden damit
hört sich sehr nach Fehlplanung an..
PS: machen wir jetzt Crossposting im eigenen Forum????
PARAMETERS [dbo_KHKStatVKKunden].[Periode] Text ( 255 ), [Forms]![Vergleich]![txtPeriode] Text ( 255 );Hab das jetzt so gemacht mit den Parametern. Danke dir :)
Ein Tabellenfeld ist kein Parameter, sondern nur was von außen in die Abfrage geholt wird wie bspw. ein Formularfeld.
Daher verstehe ich auch den Hinweis von Franz auf die FAQ nicht, weil die Deklaration doch schon vorhanden war.
Wenn dir das Beispiel "CrosstabReport" zu kompliziert ist, dann ändere doch einfach nur die Überschriften und Feldbezeichnungen beim Öffnen des Berichts. Da es ja eine statische Auswertung über stets drei Jahre ist, sollte das doch kein Problem sein.
Beispiel:
Private Sub Report_Open(Cancel As Integer)
Me.bez_Jahr01.Caption = Forms!Vergleich!txtPeriode -2
Me.bez_Jahr02.Caption = Forms!Vergleich!txtPeriode -1
Me.bez_Jahr03.Caption = Forms!Vergleich!txtPeriode
Me.txt_Jahr01.ControlSource = "[" & Forms!Vergleich!txtPeriode -2 & "]"
Me.txt_Jahr02.ControlSource = "[" & Forms!Vergleich!txtPeriode -1 & "]"
Me.txt_Jahr03.ControlSource = "[" & Forms!Vergleich!txtPeriode & "]"
End Sub
Ich danke euch beiden echt sehr. Ihr seid echt nett.
Er hat mir nur beim Kompilieren einen Fehler ausgegeben-->> siehe im Anhang
Dass du die Steuerelementnamen im Bericht entsprechend anpassen musst, ist dir doch klar, oder?
Und das Formular muss natürlich geöffnet bleiben, sonst funktionieren weder der Bericht noch die Abfrage..
Hab die steuerelementnamen alle angepasst, funkt Leider nicht... hmm schade
Hi,
"funkt nicht" heißt was genau? Gibt es Fehlermeldungen, dann bitte den vollständigen Wortlaut zitieren.
Oder lade eine Beispiel-DB hoch...
Hallo,
es ist die gleiche Fehlermeldung wie vorher --> siehe Anhang
Daran kann man aber doch nicht erkennen, was die Ursache sein könnte. Lade bitte eine aufs nötigste abgespeckte Beispiel-DB hoch, an der man sich das mal anschauen kann.
Zitat von: MaggieMay am Februar 26, 2016, 14:58:01
Daran kann man aber doch nicht erkennen, was die Ursache sein könnte. Lade bitte eine aufs nötigste abgespeckte Beispiel-DB hoch, an der man sich das mal anschauen kann.
Hallo
DANKE
hab es mal hochgeladen, ich hoffe du kannst mir helfen
Sorry, aber was genau hast du daran nicht verstanden:
Zitat von: MaggieMay am Februar 26, 2016, 10:48:45
Dass du die Steuerelementnamen im Bericht entsprechend anpassen musst, ist dir doch klar, oder?
Das heißt, die Bezeichnungsfelder müssen umbenannt werden in bez_Jahr01 bis bez_Jahr03 und die Textfelder in txt_Jahr01 bis txt_Jahr03. Und die Beschriftung bzw. der Steuerelementinhalt bleibt leer, da beides per Code gefüllt wird.
HEYYY Danke funktioniert endlich einwandfrei. Bist der beste :))))))))))
Ok Veilleicht eine dumme Frage, aber wie mache ich es denn wenn ich noch eine Spalte mit anderen werten eingeben möchte, diese Spalte aber abhängig von den anderen ist. Sprich
Kunden name Jahr01 Jahr02 Jahr03 Plan von jahr 03
Kunde Umsatz Umsatz Umsatz PlanUmsatz
Also habe ich noch eine Tabelle die Plansatz heisst. wie mache ich es denn, dass die Spalte in
ROT mit hinzugefügt wird, da sie ja auch an die Eingabe im Formular gebunden ist und wie schreibe ich in die Kreuztabellen funktion diese mit rein?????
Wo kommt der zusätzliche Wert her? Nenne bitte die Tabelle und die benötigten Datenfeldnamen.
Hallo
die kommen aus der Tabelle Plansatz mit den Datnsätzen Periode und PlanUmsatz.
Was steht denn in Periode drin, nur eine Jahreszahl oder auch Jahreszahl mit Suffix? Welchen Wert willst da dann nehmen?
BTW:
Zitatmit den Datnsätzen
Du meinst Daten
felder, dann schreib das bitte auch. Nicht immer ist es so offensichtlich wie in diesem Fall. Derartige "Schlampigkeiten" führen zu Missverständnissen und erschweren die Kommunikation auf unnötige Weise.
Hallo MaggieMay
Danke !
da steht die Periode wie in der anderen Tabelle dbo_KHKStatVKKunden drin(Beispieldatenbank) also zb. 2010001.
Du weisst ja schon wie meine Datenbank aussieht jetzt soll einfach nur noch eine Spalte mit den geplanten umsätzen nebendran stehen. Ist dies möglich??
Ich fragte dich aber doch auch, wie du dann die Einträge aus bspw. "2010001" und "2010002" zum Jahr "2010" zusammenfassen willst. Soll hier wieder die Summe gebildet werden?
Und gibt es einen PlanUmsatz pro Kunde? Dann fehlt noch die KundenID in der Tabelle.
Zitat von: MaggieMay am Februar 29, 2016, 16:49:53
Ich fragte dich aber doch auch, wie du dann die Einträge aus bspw. "2010001" und "2010002" zum Jahr "2010" zusammenfassen willst. Soll hier wieder die Summe gebildet werden?
Und gibt es einen PlanUmsatz pro Kunde? Dann fehlt noch die KundenID in der Tabelle.
Halllo Danke für die Antwort.
Ja wie bei den anderen auch von zb. 2010001 zu 2010 zusammenfassen. Genau die Summe der Plan Umsätze soll gebildet werden. In der Tabelle Plansatz gibt es noch die Kundennummer dies habe ich vergessen zu erwähnen.
Tut mir leid, wenn du noch Infos brauchst bitte gib mir bescheid... :)
Muss jetzt leider weg, vielleicht bis später...
Macht nichts :)
Heute ist ja auch noch ein Tag, hoffentlich kannst du mir dabei helfen.
Schau mal, was du hiermit anfangen kannst:
PARAMETERS Forms!Vergleich!txtPeriode Text ( 255 );
TRANSFORM Sum(VKK.Umsatz) AS Gesamt
SELECT NeuKunde.Kundenname, DSum("PlanUmsatz","plansatz","Left(Periode,4)='" & forms!Vergleich!txtPeriode & "' AND KundenNummer='" & KKK.Kundennummer & "'") AS PlanJahr, Forms!Vergleich!txtPeriode AS AuswertungsJahr
FROM dbo_KHKStatVKKunden AS VKK, NeuKunde, KundenKontokorrent AS KKK
WHERE (
((Left([VKK].[Periode],4))<>False) AND
((NeuKunde.ID)=[KKk].[KundenID]) AND
((KKK.Kundennummer)=[VKK].[Kunde])
)
GROUP BY NeuKunde.Kundenname, DSum("PlanUmsatz","plansatz","Left(Periode,4)='" & forms!Vergleich!txtPeriode & "' AND KundenNummer='" & KKK.Kundennummer & "'")
PIVOT Left(VKK.Periode,4);
Ich weiss nicht wie ich dir danken soll :D
Du bist der beste ehrlich richtig nett von dir.... Fehlt nur noch etwas kleines wie verbinde ich dies mit der Eingabe im Formular?
Hab mich zu früh gefreut, da ist noch ein ganz kleiner Fehler, die PlanUmsätze werden nicht summiert, hmm und halt noch das mit dem Bericht.
ZitatFehlt nur noch etwas kleines wie verbinde ich dies mit der Eingabe im Formular?
Hast du den Bezug auf das Formularfeld in der Abfrage übersehen? ???
Es wird der Planumsatz zum ausgewählten Jahr ermittelt. Für die Ausgabe im Bericht wird die Abfrage zusätzlich gefiltert - so war der letzte Stand, oder nicht?
Zitatdie PlanUmsätze werden nicht summiert,
Und was ist das hier:
DSum("PlanUmsatz", ...
Zitat von: MaggieMay am März 01, 2016, 11:31:47
ZitatFehlt nur noch etwas kleines wie verbinde ich dies mit der Eingabe im Formular?
Hast du den Bezug auf das Formularfeld in der Abfrage übersehen? ???
Es wird der Planumsatz zum ausgewählten Jahr ermittelt. Für die Ausgabe im Bericht wird die Abfrage zusätzlich gefiltert - so war der letzte Stand, oder nicht?
Zitatdie PlanUmsätze werden nicht summiert,
Und was ist das hier:
DSum("PlanUmsatz", ...
Hallo habs gesehen nur bekomme die Verbindung nicht hin, Ja ich weiss ich bin schlecht.
Ja und das summieren klaapt irgendwie nicht von den PlanUmsätzen.
Das "irgendwie" hilft mir nicht weiter. Die Abfrage wird als Datenquelle des Berichts eingesetzt, der vom Formular geöffnet wird. Wo genau ist das Problem?
Tut mir leid, ich habe vergessen zusagen das in Plansätze zwar die Kundennummern gespeichert sind, aber wenn zwei verschiedene Kundennummern einer Kundengruppe zugeordnet sind sollen die PlanUmsätze auch hier summiert werden, da ich im Bericht die Kundengruppen angezeigt bekomme.
Weisst du was ich meine??
Hab im Anhang ein Screenshot, sieht gerade so aus habe die stelle mal markiert was ich meine.
Woher nimmst du denn die Kundengruppe? Und soll die Summe dann in jeder Zeile der zu dieser Gruppe gehörenden Kunden stehen?
Die "KundenGruppe" kommt aus der Tabelle NeuKunde im Datensatz Kundenname.
Im Bericht wird eh die "Kundengruppe"(Kundenname) angezeigt. Ich weiss du kommst durcheinander weil meine Kundennamen eig die Kundengruppe ist, lass dich da bitte nicht verwirren.
Im bericht steht dann Die Kundengruppe und zu jeder Kundengruppe soll der geplante Umsatz addiert werden. Ich hoffe ich konnte es dir erklären.
Ich kann das an der Beispiel-DB nicht nachvollziehen. Die Daten sind auch etwas konfus, weil KundenID und Kundennummer in Tabelle KundenKontokorrent mehrfach vorkommen, so ist keine eindeutige Zuordnung möglich.
ja, weil jede Kundennummer an mehrere KundenID's zugeordnet werden kann.
Nehmen wir an wir haben die KundenGruppe(Kundenname)=Deutschland
jetzt wird dem Kundennamen die Kundennummer D000001 zugeordnet.
D000001 kann jetzt auch an den Kundennamen Österreich zugeordnet werden.
Jetzt möchte ich das bei der ausgabe des PlanUmsatzes alle geplanten Umsätze pro Kundennamen angezeigt werden
zb.
D000001=100 euro ist zugeordnet zu Deutschland Periode=2014001
d000002=200 euro ist zugeordnet zu Deutschland Periode=2014002
Ausgabe=
Kundenname=Deutschland PlanUmsatz= 300 jahr= 2014
Das heißt aber doch, du brauchst bei der Summenbildung lediglich die Kundennummer durch den Kundennamen auszutauschen.
Da könnte man doch eigentlich drauf kommen, oder? Insbesondere, wenn man sich dieses "Kuddelmuddel" selbst ausgedacht hat. ;D
Wer sonst käme auf die Idee, dass "Kundenname" und "Kundennummer" zwei völlig verschiedene "Ordnungsbegriffe" sind und sich nicht auf ein und dieselbe Person (oder Firma) beziehen!
So etwas kommt wohl dabei heraus, wenn Beispiele zwecks "Vereinfachung" an der Realität vorbei angelegt werden.
Ja wenn in der Tabelle der Datensatz Kundenname existieren würde dann ja, aber in der Tabelle Plansatz gibt es die Kundennummer mit der ich über die Tabelle KundenKontokorrent zur Tabelle NeuKunde kommen muss, um den Kundennamen zuzuordnen. Oh man ich verzweifle dran
Ich hatte dich doch schon mal darauf hingewiesen:
Kundenname ist ein Daten
feld, ein Daten
satz besteht aus vielen Datenfeldern.
Zitatmit der ich über die Tabelle KundenKontokorrent zur Tabelle NeuKunde kommen muss, um den Kundennamen zuzuordnen
Dann erstelle eine Abfrage, in welcher die Tabellen zusammengeführt werden, und nimm diese als Datenquelle für die DSum-Funktion.
Zitat von: MaggieMay am März 01, 2016, 13:51:11
Dann erstelle eine Abfrage, in welcher die Tabellen zusammengeführt werden, und nimm diese als Datenquelle für die DSum-Funktion.
Halllo Danke ich gebe es echt auf, ich kriege es einfach nicht auf die Reihe :(
Nein, so geht das nicht, du musst die Abfrage als Datenquelle einsetzen, also den Abfragenamen anstelle der Tabelle "Plansatz" einfügen.
Und dann die Kundennummer durch Kundenname ersetzen:
DSum("PlanUmsatz","Abfrage3","Left(Periode,4)='" & Forms!Vergleich!txtPeriode & "' AND Kundenname='" & NeuKunde.Kundenname & "'") AS PlanJahr
Oh man geht einfach nicht :(
Naja, das wird dann wohl an der Abfrage liegen. Zeige bitte den Code.
hm
Hallo
Hab dir mal eine beispieldatenbank mit allen Tabellen und formularen vorbereitet. Schau mal bitte, vllt ist es so besser.
NeuKunde wird manuel angelegt.
Die Kto von dbo_KHKKontokorrent wird einem NeuKunden zugeordnet. <---- siehe Formular
Im PlansatzUmsatz Formular werden zu der Kundennummer die Umsätze geplant.
Die Tabelle NeuerKunde kannst du ausblenden oder löschen.
Hallo,
zunächst einmal hast du die Abfrage für den Bericht nicht angepasst, obwohl ich es dir doch genau beschrieben und sogar gezeigt hatte, was da zu tun ist. Eine zusätzliche Summierung von DSum ist dort fehl am Platz.
Die Hilfsabfrage "Abfrage3" soll lediglich die für die Summierung des Planumsatzes benötigten Felder enthalten, und zwar "Periode", "Planumsatz" und "Kundenname". Eine Summierung macht dort keinen Sinn, da diese ja abh. vom Auswertungsjahr mittels DSum-Funktion in der Berichtsabfrage stattfindet.
Ich hoffe, das hilft dir weiter.
Jetzt geht es definitiv :))))) DANKEEEEEEEEEEEE
Private Sub Report_Open(Cancel As Integer)
Me.VorLetztesJahr.Caption = [Forms]![Vergleich]![txtPeriode] - 2
Me.LetztesJahr.Caption = Forms!Vergleich!txtPeriode - 1
Me.Aktuell.Caption = Forms!Vergleich!txtPeriode
Me.txt_VorLetztesJahr.ControlSource = "[" & Forms!Vergleich!txtPeriode - 2 & "]"
Me.txt_LetztesJahr.ControlSource = "[" & Forms!Vergleich!txtPeriode - 1 & "]"
Me.txt_Aktuell.ControlSource = "[" & Forms!Vergleich!txtPeriode & "]"
End Sub
Mein Code für den Bericht sieht ja so aus, wie schreibe ich das gleich für mein PlanUmsatz wie muss die Syntax da aussehen?? Nur noch die eine Frage
Hi,
da brauchst du ja nur die Überschrift anzupassen, da der Feldname immer derselbe ist.
Das sähe dann bspw. so aus:
Me.Plan.Caption = "Planjahr " & Forms!Vergleich!txtPeriode
@MaggieMay bin endlich fertig Danke :)
Muss nur noch herausfinden, wie ich importierte Tabellen per odbc, so einstelle dass die Tabllen jede Nacht aktualisiert werden. Hast du da vllt eine Idee?
Werden die Tabellen tatsächlich importiert und nicht verknüpft? Wenn ja, warum?
Ist die Anwendung in Frontend und Backend aufgeteilt?
Ist es eine Einzelplatzanwendung oder wird das Programm von mehreren Mitarbeitern gleichzeitig genutzt?