Neuigkeiten:

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

Mobiles Hauptmenü

Zahlenwerte in Feldern zusammenfassen

Begonnen von Brallu, Oktober 31, 2025, 17:07:30

⏪ vorheriges - nächstes ⏩

Brallu

Hallo Gemeinde,
ich habe eine Tabelle mit 6 Feldern. In diesen Feldern stehen Zahlen.
Diese Zahlen sollen in einem berechneten Feld zusammengefast werden.
Allerdings sollen die Fleder mit dem Wert Null nicht mit erfasst werden.

Sie dürfen in diesem Board keine Dateianhänge sehen.

In diesem Bild habe ich die Felder als Text formatiert und mit dem Code zusammengefasst!

NrBerechnet: [anAnNr1] & "."+[anAnNr2] & "."+[anAnNr3] & "."+[anAnNr4] & "."+[anAnNr5] & "."+[anAnNr6]

Jetzt brauche ich die Werte aber als Zahl. Gibt es da eine Möglichkeit das einfach zu erstellen??

Gruß  :)

Danny

andyfau

Hallo Danny,
was heißt "als Zahl"? Ohne Punkte? Dann multipliziere doch einfach mit 10, 100, 1000, usw. Dann steht der Eintrag an der jeweiligen Stelle.
Beste Grüße
Andreas

MzKlMu

#2
Hallo,
das kann als Zahl nicht dargestellt werden, Du verkettest da ja Punkte (.) Das ist und bleibt Text.

Was sind das für Werte (anAnNr1 - ..6) ?
Gruß Klaus

Brallu

Moin es handelt sich um den Felddatentyp Zahl!

Die Felder sind zum sortieren in Reihenfolge für mich wichtig (glaube ich)!
Das was zusammengefasst werden soll muss keine Zahl sein und ist nur für das Formular zum Anzeigen gedacht.
Kann ich auch über die Textfilter richtig in Reihenfolge sortieren??

Dann könnte das ja so bleiben wie es ist. Das ganze ist sowas wie die Reihenfolge eines Inhaltsverzeichnisses.

Also sind die Werte als Zahl Quatsch??

MzKlMu

Hallo,
das berechnete Feld kann nur Text sein und wird auch als Text sortiert.
Mit einem Filter kann man nicht sortieren.
Gruß Klaus

Bitsqueezer

Hallo,

ich verwende so eine Verkettung auch bei hierarchischen Daten, ganz besonders, um eben eine Reihenfolge hinzubekommen, die der Hierarchie entspricht und innerhalb einer Ebene nicht unbedingt nach z.B. einem enthaltenen Namen sortiert werden soll, sondern z.B. nach einer Sortierzahl.

Die richtige Sortierung ist auch mit Text ganz einfach zu bewerkstelligen: Du mußt wissen, wie groß die größte Zahl werden könnte, und dann formatierst Du die Zahl mit führenden Nullen. Dabei ist nur wichtig, daß die Anzahl der größten Zahl auf der gleichen Ebene entspricht.

Ergebnis ist dann z.B.

0001.0001.0001.000000016.00003.000001

Der gesamte String kann dann mit korrekter numerischer Sortierung je Hierarchieebene verwendet werden.
Die Umwandlung ist simpel mit "Format" zu bewerkstelligen.

In SQL Server gibt es rekursive Abfragen, da kann man sich solche Sortierpfade automatisch erstellen lassen, wenn die Hierarchie ordentlich aufgebaut wurde (nicht wie hier in Aufzählungsfeldern).

Gruß

Christian

Normalo0815

Hallo Brallu,

Zitat von: Bitsqueezer am Oktober 31, 2025, 22:03:21Der gesamte String kann dann mit korrekter numerischer Sortierung je Hierarchieebene verwendet werden.
Die Umwandlung ist simpel mit "Format" zu bewerkstelligen.

In dem Fall also z. B. so (Beispiel Abfrage in SQL-Ansicht):

SELECT
  ...
  anAnNr1 & "." + anAnNr2  & "." + anAnNr3 & "." + anAnNr4 & "." + anAnNr5 & "." + anAnNr6 AS NrBerechnet
  ...
FROM
  DeineTabelle
ORDER BY
  anAnNr1,
  anAnNr2,
  anAnNr3,
  anAnNr4,
  anAnNr5,
  anAnNr6

Das würde auch eine Indexnutzung zulassen, falls die Aufzählungsfelder indiziert sind (bessere Performance bei vielen Datensätzen).
Freundliche Grüße
Normalo0815   :)

Bitsqueezer

Hallo,

in SQL Server kann man solche Spalten auch als persistent markieren, dann sind sie selbst gespeichert und indizierbar. Das geht in Access zwar leider nicht, aber man kann natürlich den Ergebnisstring als Feld speichern und indizieren, dann hat man nur ein Sortierkriterium.

Nur reicht es hier nicht, die Zahlen mit "." zu verketten - wie gesagt, mit führenden Nullen auffüllen mit Format, ansonsten werden die Zahlen im String als Text sortiert.

Gruß

Christian

Brallu

Danke für eure Hilfe aber das passt so noch nicht.  :-\
Hier noch ein paar Anmerkungen:

Also das Berechnete Feld kann Text sein! Das ist nur das was in der Abfrage angezeigt werden soll.
Mit diesem Feld wird später nichts berechnet oder so und es soll genau so aussehen!
Aber die 6 Felder brauche ich um die Reihenfolge der Datensätze in der Abfrage zu sortieren!
Also die sollen Aufsteigend sortiert werden!!!
Um beim Sortieren nicht die Reihenfolge 1, 10, 11, usw. zu bekommen
(Felder sind als Text Formatiert und da kommt dann das Ergebnis raus)
benötige ich die 6 Felder als Zahl formatiert. Hier bekomme ich dann beim Sortieren die Reihenfolge 1, 2 ,3 usw. wie ich sie brauche.

Daher habe ich das Problem das ich die Variante aus meinem ersten Beitrag nicht verwenden kann!
Also mit      & "."+    zwischen den Feldern geht es ja so nur bei Textfeldern.

Also würde ich gerne die 6 Felder (mit Zahlenwert) verbinden (mit . zwischen den Zahlen) und das Ergebnis kann Zahl, Sonderformat oder Text sein.
Dafür brauche ich eine Formel Idee für das berechnete Feld!

Ich hoffe das ist jetzt besser erklärt. Sorry

Knobbi38

Hallo Brallu,

die Lösungsweg, welchen du suchst, steht bereits in #5. Formatiere die String mit führenden "0" auf eine gleiche Stringlänge für alle Felder und setzen diese Teilstrings zusammen. So erhältst du ein Sortkriterium, das deinen Wünschen entsprechen sollte, solange es sich nur um Ziffern handelt.

Der Lösungsansatz aus #6 sollte ebenfalls funktionieren.

Wenn das immer noch nicht richtig sein sollte, musst du dein Problem nochmal mit anderen Worten beschreiben und ggf. eine Beispiel DB hier hochladen.

Knobbi38
 

Brallu

Hallo Knobbi,
#5 versuche ich noch einmal

#6 anAnNr1 & "." + anAnNr2  & "." + anAnNr3 & "." + anAnNr4 & "." + anAnNr5 & "." + anAnNr6 AS NrBerechnet
Hier müssen die 6 Felder aber als TEXT gespeichert sein.

Das passt so aber nicht!

Aber egal ich habe mir ein Feld Sortierung eingebaut und die Datensätze durchnummeriert. So kann ich das Problem umgehen!

Danke für eure Antworten!  :)

Normalo0815

#11
#gelöscht (doppelt)
Freundliche Grüße
Normalo0815   :)

Normalo0815

#12
#gelöscht (doppelt)
Freundliche Grüße
Normalo0815   :)

Normalo0815

#13
Hallo Brallu!

Zitat von: Brallu am November 01, 2025, 17:08:13#6 anAnNr1 & "." + anAnNr2  & "." + anAnNr3 & "." + anAnNr4 & "." + anAnNr5 & "." + anAnNr6 AS NrBerechnet
Hier müssen die 6 Felder aber als TEXT gespeichert sein.

Da hast du Recht. Wenn diese vom Datentyp Zahl sind, dann müsste es so lauten:
anAnNr1 & Format(anAnNr2,"\.0") & Format(anAnNr3,"\.0") & Format(anAnNr4,"\.0") & Format(anAnNr5,"\.0") & Format(anAnNr6,"\.0") AS NrBerechnet
und es könnte wie in #6 angeführt nach den Zahlenfeldern sortiert werden (Order by anAnNr1, anAnNr2 usw.)
Freundliche Grüße
Normalo0815   :)

Knobbi38

#14
Anstatt mit Format() könnte man das berechnete Feld in einer Abfrage auch so erstellen:
SELECT Replace(Trim$(Nz([anAnNr1],"") & " " & Nz([anAnNr2],"") & " " & Nz([anAnNr3],"") & " " & Nz([anAnNr4],"") & " " & Nz([anAnNr5],"") & " " & Nz([anAnNr6],"")) , " ", ".")
FROM MyTable
Order By [anAnNr1] ,[anAnNr2] ,[anAnNr3] ,[anAnNr4] ,[anAnNr5] ,[anAnNr6]
Hier kann die Sortierung dann wie gewünscht ebenfalls mit den numerischen Feldwerten erfolgen.

Als VBA Funktion dann so:
Public Function FMTHY(ParamArray FValue()) As String
  Dim s As String
  Dim i As Long
 
  For i = 0 To UBound(FValue)
    s = s & " " & Nz(FValue(i), "")
  Next
   
  FMTHY = Replace(Trim$(s), " ", ".")
End Function

und der Aufruf in SQL:
SELECT FMTHY(f1,f2,f3,f4,f5,f6) AS HY
FROM MyTable;