Hallo @ all,
ich habe in einer Spallte einen Messrange zu stehen z.B.
0 ...100%
0...0,6 bag(g)
35 ... 1700 m³/h
und die Daten würde ich gerne in 3 Spalten aufteilen. In einer den Min Wert, Max Wert und in der 3.Unit
Min Max Unit
0 100 %
0 0,6 bar(g)
35 1700 m³/h
Ich hoffe ihr habt vielleicht eine Idee und könnt mir weiterhelfen.
Danke schonmal
Perluna
Hallo,
das ist nicht so einfach wie es aussieht. Man muss versuchen eine eindeutige Regel zu erkennen, die die Trennung korrekt erkennt.
Währe % auch eine Einheit?
Sind die Punkte zwischen Min und Max immer vorhanden?
Ist vor der Einheit immer ein Leerzeichen?
Immer ist wörtlich zu nehmen und bedeutet ausnahmlos !
Hallo
Da du die Messwerte wahrscheinlich über eine Schnittstelle bekommst, ist meine Frage warum du sie nicht gleich beim einlesen entsprechend in die Spalten schreiben läst. Wichtig ist hier schon zu wissen wie MzKiMu angedeutet hat wie die Regel aussieht. Es ist möglich mit den Funktionen " MID " Left " Right " und der Angabe der Stelle geziehlt Werte beim Einlesen aus der Schnittstelle in eine Spalte zu schreiben.
Gruß Stefan
Hallo,
also eine Regel gibt es nicht. Es ist leider auch nicht immer gegeben das vor der Unit ein Leerzeichen steht.
% wäre in dem Fall auch eine Unit.
Meine Idee wäre das man vllt in einer Abfrage alle Leerzeichen rausnimmt, so hätte man dann zumindest eine Art Struktur. Bis zum 1.Punkt der Min-Wert nach dem letzten Punkt der Max-Wert mit Unit.
Gibt es in Access eine Funktion mit der man nach Punkten suchen kann?
Dann müsste jetzt nur noch irgendwie der Max-Wert von der Unit getrennt werden.
Ich kann es leider nicht einzelnd einlesen, da ich die Daten nur so vom "Kunden" erhalten.
Hallo
Anbei eine Datenbank, bei der mittels Abfrage (mid, left, ersetzen, Wert-Funktionen wurden eingesetzt) die Daten auf Spalten aufgeteilt werden.
Vielleicht liefert das eine Anregung.
Harald
[Anhang gelöscht durch Administrator]
Ich hatte ein ähnliches Problem, jedoch mit Kosten die ich auf Jahre verteilen sollte.
http://www.access-o-mania.de/forum/index.php?topic=12677.msg70520#msg70520
Du könntest in dieses Zusammenhang auch nach Min(Wert) oder Max(Wert) anpassen.
Mit der Einheit/Unit hab ich spontan jedoch kein Idee.
Vielleicht bringt dich das dennoch auf eine Lösung.
Gruß
T.
Hallo,
Luftcode (ohne Fehlerbehandlung und ungetestet), wenn es sich immer um 3 zusammenstehende Punkte handelt...
Public Function fktSplitRange(strValue As String, strPart As String)
Dim strTemp As String, strTemp1 As String, a, i As Long, i1 As Long, Zeichen As String
strTemp = Replace(strValue, "%", "Proz")
strTemp = Replace(Replace(strTemp, " ", ""), " ", "")
strTemp = Replace(strTemp, "...", "|")
strTemp = Replace(strTemp, ",", ".")
For i = 1 To Len(strTemp)
Zeichen = Mid(strTemp, i, 1)
If IsNumeric(Zeichen) Or Zeichen = "." Or Zeichen = "|" Then
strTemp1 = strTemp1 & Zeichen
Else
strTemp1 = strTemp1 & "|"
Exit For
End If
Next
For i1 = i To Len(strTemp)
Zeichen = Mid(strTemp, i1, 1)
strTemp1 = strTemp1 & Zeichen
Next
a = Split(strTemp1, "|")
If UBound(a) = 2 Then
Select Case strPart
Case "Min"
fktSplitRange = Val(a(0))
Case "Max"
fktSplitRange = Val(a(1))
Case "unit"
fktSplitRange = Replace(a(2), "Proz", "%")
Case Else
fktSplitRange = Null
End Select
Else
fktSplitRange = Null
End If
End Function
und Aufruf z. B. in einer Abfrage:
Select *, fktSplitRange([Messrange],"Min") as MinWert, fktSplitRange([Messrange],"Max") as MaxWert, fktSplitRange([Messrange],"Min") as Einheit from Tabelle