Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

In Abfrage Teil eines String auslesen

Begonnen von SG05, Juni 26, 2017, 20:20:48

⏪ vorheriges - nächstes ⏩

SG05

Hallo zusammen,

ich möchte die Breite zwischen den beiden "x" auslesen.

Habe mit Links, Teil und Recht probiert, habe es aber nicht hinbekommen.

Folgende Daten (Beispiel) sind möglich:

1x1000x1000
1,5x1000x1000
1,52x1000x1000
1,00x 900x1000
1,00x1000x 900

also "fast" jede Kombinationsmöglichkeit, da Textfeld.

Danke für Eure Unterstützung


Lachtaube

Bei Informationen, die nur für's Auge bestimmt sind, ist der Feldinhalt OK. Sollen jedoch Berechnungen des Volumens oder auch das Extrahieren von Informationen vorgenommen werden, so ist die Datenform schlecht. Nicht nur weil eine Abfrage viel Schreibaufwand mit sich bringt, sondern weil sie zeitintensiv im Ablauf ist und keine Indexnutzung ermöglicht. Besser ist es, den drei Dimensionen jeweils ein eigenes Feld zu spendieren. Ohne großen Aufwand lassen sich die drei Felder dann in der Abfrage in die bisherige Form überführen.

Trotzdem hier noch eine mögliche Lösung:Mid$([Feldname];InStr([Feldname];"x")+1;InStrRev([Feldname];"x")-Instr([Feldname];"x")-1)
Grüße von der (⌒▽⌒)

DF6GL

Hallo,

mit Split  (ohne Fehlerbehandlung):

Dim H as Double, B as Double, T as Double, a

a=Split(Textfeld,"x")
H=a(0)
B=a(1)
T=a(2)

Lachtaube

@Franz,

es müsste explizit CDbl(...) wegen deutscher Dezimaltrennzeichen verwendet werden.

PS: Split ist um ca. 20% langsamer als das Bestimmen der beiden x-Positionen nebst Umwandlung nach Double und benötigt zusätzlich ein VBA-Modul.
Grüße von der (⌒▽⌒)

DF6GL

Hallo,
Zitat
es müsste explizit CDbl(...) wegen deutscher Dezimaltrennzeichen verwendet werden.

Imho nicht, die Variablen sind vom Typ Double und die Zuweisung erledigt die Typkonvertierung schon.


Den anderen Punkten stimme ich zu ...  ;)

Lachtaube

Grüße von der (⌒▽⌒)