April 18, 2021, 02:41:25

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" 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 :-)