Mai 17, 2021, 12:24:49

Neuigkeiten:

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


SLQ-Code anpassen Diagramm

Begonnen von BikeArno, Februar 20, 2021, 09:55:34

⏪ vorheriges - nächstes ⏩

BikeArno

Zitat von: DF6GL am März 15, 2021, 09:53:50Wenn möglich, lade die Db hier hoch, datenreduziert, komprimiert/repariert und gezippt.

Hallo,

gute Idee. Ich habe den betreffenden Teil exemplarisch (nur einen kleinen Auszug der betreffenden Tabelle und zwei Beispieldiagramme) anbei hochgeladen.

Im ersten Diagramm wird die Anzahl der Stunden per Formel automatisch gruppiert, das funktioniert prinzipiell sehr gut und eignet sich für begrenzte Datenbereiche, wie crystal schon schrieb.
Im zweiten Diagramm möchte ich den Datenbereich des Feldes Stunden gruppiert (5 Gruppen sollen herauskommen, siehe Code im Editor) ausgeben. Das funktioniert leider so nicht. Ich finde den Fehler nicht.

Gruß

DF6GL

Hallo,

die Funktion gehört in ein Standardmodul und nicht in das Berichtsklassenmodul.

In der Tabelle gibt es "NULL"-Stunden,soll heißen Feld "Stunden" ist leer. Das muss berücksichtigt werden:
ZitatOption Compare Database
Option Explicit   'Unbedingt in JEDEN Modulkopf einfügen!



Public Function Stundengruppe(Stunden) As Long
 


 Stunden = Nz(Stunden, 0)
 
  Select Case Stunden
      Case Is < 26:
        Stundengruppe = 1
      Case Is < 51:
        Stundengruppe = 2
      Case Is < 76:
        Stundengruppe = 3
      Case Is < 101:
        Stundengruppe = 4
      Case Else:
        Stundengruppe = 5
  End Select
End Function



Die Performance mit dieser Funktion, nach der gruppiert wird, ist suboptimal.

BikeArno

Zitat von: DF6GL am März 15, 2021, 13:10:20die Funktion gehört in ein Standardmodul und nicht in das Berichtsklassenmodul.

Hallo Franz,

ich weiß gar nicht, wie ich danken soll! Funktioniert wie es soll.

Ja, die Performance lässt sehr zu wünschen übrig. Bis der Gesamtbericht aufgebaut wird, dauert es fast eine halbe Minute.

Nochmals herzlichen Dank für deine Hilfe.

Gruß

DF6GL

Hallo,


verbesserte Performance wird mit diesem SQL-Statement für die Rowsource des 2. Diagramms erreicht.

SELECT IIf(([Stunden])>100,5,([Stunden]\25)) AS SG, Count(qry_Datensatz.ID) AS AnzahlvonID
FROM qry_Datensatz
GROUP BY IIf(([Stunden])>100,5,([Stunden]\25));


und wenn der Datentyp des Tabellenfeldes "Stunden" von TEXT nach LONG geändert und dafür gesorgt wird, dass es nicht "NULL" enthält.


BikeArno

April 13, 2021, 14:04:50 #34 Letzte Bearbeitung: April 13, 2021, 14:11:48 von BikeArno
Hallo,

ich habe in einem Access-Bericht ein Diagramm mit Hilfe folgenden SQL-Codes erstellt. Dieser gruppiert bestimmte Werte.

Meine Frage ist  nun, ob ich die so erstellten Gruppierungen im Diagramm irgendwie sortieren kann. Aktuell erfolgt die Sortierung der Balken weder so, dass zuerst die Balken mit kleinsten Werten hin zu den größten Werten erfolgt. Sie erfolgt aber auch nicht in Reihenfolge des Codes. Zudem wird der TExt auch nicht so dargestellt, wie  im Code". So wird z.B. im Diagramm ausgegeben

"bis unter 10.000
5.000"
statt
"5.000 bis unter 10.000"

Public Function Ausgabe(A_Ausgaben) As String
 
A_Ausgaben = Nz(A_Ausgaben, 0)
  Select Case A_Ausgaben
      Case Is < 5000:
        Ausgabe= "unter 5.000"
      Case Is < 10000:
        Ausgabe= "5.000 bis unter 10.000"
      Case Is < 15000:
        Ausgabe= "10.000 bis unter 15.000"
      Case Is < 20000:
        Ausgabe= "15.000 bis unter 20.000"
      Case Is < 25000:
        Ausgabe= "20.000 bis unter 25.000"
           
      Case Else:
        Ausgabe= "25.000 und mehr"
  End Select
End Function

Weiß jemand, nach welchem Prinzip die Sortierung im aktuellen Status erfolgt und wie ich die Balken von den kleinsten vorhandenen Balken zu den größten Balken (also Anzahl der Nennungen) sortieren kann?

Danke und Gruß

BikeArno

Hat keiner eine Idee, ob man die Datenbeschriftung (Reihenfolge) im Diagramm ändern kann? Oder ist das grundsätzlich nicht vorgesehen?

BikeArno

Um das Thema fortzuführen: Mit dem o.g. Code komme ich ganz gut zurecht, bis an folgenden Punkt:

Ich möchte Datumsangaben verarbeiten. Und zwar habe ich in einem Feld das Datum, wann ein Schulabschluss erworben wurde. Im Diagramm möchte ich nun ausgeben, wieviele SuS einen Abschluss in einem bestimmten Zeitraum (bis 2015, zwischen 2016 und 2020, Sonstiges) erworben haben. Ich dachte, ich könnte es wie folgt lösen:

Public Function Schulende(Abschlussjahr) As Long
 
Schulende= Nz(Abschlussjahr, 0)
  Select Case Abschlussjahr
      Case Is < "31.12.2015":
        Schulende= 1
      Case Is < "31.12.2020":
        Schulende= 2
      Case Else:
        Schulende= 3
  End Select
End Function

Leider kommen völlig unplausibel Berechnungen heraus. Offenbar funktioniert also meine Vorgehensweise so nicht. Was mache ich falsch? Danke :-)




BikeArno

Hallo,

eine weitere Frage in der Kategorie "Diagramme in Access". Vielleicht hat jemand einen Rat, wie ich mein Vorgehen verbessern kann:

Ich möchte eine Balkendiagramm mit der Summe von bestimmten Nennungen in einem Feld erstellen. In dem Feld wird z.B. gefragt, wieviele Personen an einem bestimmten Schulungskurs teilnahmen. Nun möchte ich mittels dem Feld Bundesland auszählen, wieviele Personen in Summe pro Bundesland teilnahmen.

Hierzu habe ich folgenden Code erstellt, der zwar funktioniert, aber das Ergebnis über eine Kreuztabelle ermittelt. Hier mein bisheriger Code:

TRANSFORM Sum(Schüler) AS [Anzahl] SELECT [Bundesland] FROM [qry_DatensatzTN] Where KriteriumA Like "ok" GROUP BY [Bundesland] PIVOT [Bundesland];
Das muss doch auch einfacher für ein solches Balkendiagramm auszuzählen sein (also ohne Kreuztabelle), oder gehe ich so korrekt vor?

BikeArno

Mai 06, 2021, 09:53:07 #38 Letzte Bearbeitung: Mai 06, 2021, 11:42:39 von BikeArno
Hallo,

ich möchte das Thema um eine weitere Frage erweitern. Und zwar möchte ich ein Diagramm erstellen, in dem ich für jedes Bundesland einen einen Mittelwert (Euro) ausgeben lasse. Ich komme mit meinem Code nicht voran, es wird nichts berechent, scheinbar ist er falsch:

TRANSFORM Mittelwert(Euro) AS [Mittelwert] SELECT [Land] FROM [qry_Abfrage1] GROUP BY [Land] PIVOT [Land];
Hat jemand einen TIpp, was ich faslch mache?

Danke vielmals.

markus888

Zitat von: BikeArno am Mai 06, 2021, 09:53:07Hat jemand einen TIpp, was ich faslch mache?

Du solltest dich vermutlich auch mal in das Thema einlesen.
Transform braucht zumindest 3 Argumente.
Du kannst doch nicht im Haupt-Select, das gleiche Argument wie in Pivot verwenden?!?!
Die zwei Argumente müssen ja miteinander interagieren.

Einfach mal das Bild ansehen und damit beschäftigen.
https://www.google.com/search?q=sql+pivot&rlz=1C1CHBF_deAT869AT869&sxsrf=ALeKk02RVOVTO5WkFffikBXBs9jGkJeyeA:1620312061390&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjgn-DmpLXwAhUZ_6QKHds8DcEQ_AUoAXoECAEQAw&biw=1920&bih=937#imgrc=rfaykrisG2u9oM
10 Jahre Access