Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Teilstring bei Zahlen





Frage

Hallo Supportnet, ich suche nach einer Möglichkeit einen substring von zahlen auszulesen. bei texten einfach mit funktion "teilstr" wie lautet die funktion für Zahlen ? Vielen Danke Horst

Antwort 1 von FrankieH

Ähem - das müsstes Du etwas genauer erläutern.

Du hast eine Zeichenkette mit Zahlen? Sind da mehrere Zahlen in einer Zeichenkette? Wenn es nur eine ist, dann kannst Du CInt bzw CDbl nehmen - allerdings musst Du aufpassen, dass keine anderen Zeichen ausser Zahlen und Dezimalzeichen vorkommen.

Ansonsten - bei mehreren Zahlen in einer Zeichenkette müssen die ja irgendwie getrennt voneinander sein, entweder mit Blank oder mit Semicolon oder ....

Dann ist TeilStr richtig - und zwar in Verbindung mit InStr.

HTH,
Frankie

Antwort 2 von michael oberley

hi alle

ich kenn mich zwar nicht aus mit acces aber vb ist dort auch ,die schritte einer integerwandlung und zurueck !

rem wandlung in einen string
a1$=str$(zahl1%)

rem falls noetig die laenge feststellen lassen
b1%=len(a1$)

rem string bearbeiten mit mid$ befehl !
z.b. liest ab der ersten pos fuenf zeichen und uebrgibt sie a2$
a2$=mid$(a1$,1,5)

rem jetzt koennte man den teilstring wieder zurueckverwandeln mit dem val befehl z.b.

b2%=val(a2$)

gruss nighty

Antwort 3 von michael oberley

hi alle nochmal schniff (was vergessen)

bei einer hin und her wandlung von integer zu string und zurueck gibt es
ueble fehler auf jedenfall konntrollmechanismen in der entwicklungsphase einbauen.

gruss nighty

Antwort 4 von Horst Müller

also:

in einer spalte befinden sich daten im format: zahl

12344558

nun möchte ich daraus die zeichen 5 und 6 ausgelesen haben.

TeilStr([spalte];5;2)

funktioniert nicht da die daten kein text sind. nun suche ich die funktion um dies bei zahlen zutun.

Horst


Antwort 5 von MixMax

bin nicht so der access freak aber da es was ähnliches ist wie bei asp ... versuche mal

TeilStr(cstr([spalte]);5;2)

Antwort 6 von michael oberley

hi franki

was heisst HTH bitteeeeee grummel.

gruss nighty

p.s.
hallo horst du musst die integer in einen string verwandeln und zurueck nicht vergessen.

Antwort 7 von michael oberley

hi mixmax

sein problem ist die integer die muss doch erst noch ein string werden grrrrr.

gruss nighty


Antwort 8 von Marie

Also habt Ihr's bald oder muss ich meinen Senf auch noch dazugeben :-)))

Dim zahl As Double
Dim text As String

zahl = 12345678

text = Str$(zahl)
msgbox Mid$(Trim$(Str$(zahl)), 5, 2)

liefert mir einwandfrei die Ziffern 5 und 6. War es das, was Du gesucht hast?

Also wenn Du diese Ziffern doch nur auslesen willst, dann musst Du doch nix verwandeln und zurückverwandeln, da musst Du nur die Zahl als String auslesen und darauf achten, dass str$ ein führendes Leerzeichen setzt, also nicht vergessen Trim$ oder LTrim$ auszulesen.

Gruß Marie

Antwort 9 von Marie

Hallo Michael,

was für üble Fehler soll es da geben?? Natürlich kannst Du eine 8stellige Zahl nicht als Integer dimensioniert haben, das liegt aber dann nicht an der Umwandlung, dass Du da Fehler bekommst.

Gruß Marie

Antwort 10 von _gau_

Oder so:

In einer Abfrage wäre es der Ausdruck

Teil(Str([Spalte]);5;2)

In VBA wäre es

= Mid(CStr([Zahl]), 5, 2)

[gau]

Antwort 11 von _gau_

Halt ähnlich wie bei Marie ;-)

[gau]

Antwort 12 von Marie

ja okay, cstr verhindert die führende Leerspalte, sorry, alte Gewohnheit aus Anfängerzeiten. :-)

Antwort 13 von MixMax

marie - jo, das ist das dann unter Basic...

also ich würde sagen er soll es einfach mal mit cstr und str$ ausprobieren.

bin übrigens zuversichtlich das er mit cstr(Zahl) eine automatische typenumwandlung macht.
(kennt access an der stelle cstr ? wenn nicht halte ich besser nun meine klappe)

Antwort 14 von _gau_

Hmm, Maries Hinweis bringt mich darauf, daß es dann in einer Abfrage eigentlich

Teil(ZString([Spalte]);5;2)

heißen muß ;-)

Auch wegen dem führenden Leerzeichen.

[gau]

Antwort 15 von michael oberley

hi marie

hier ein kleines beispiel wo ist der fehler ???!!!

Sub Makro1()
b = 1.123456
Range("a2") = Str$(b)
Range("a3") = Val(Range("a2"))
End Sub

ergibt nun in a3 eine 1 sollte aber 1,123456 sein.

gruss nighty

Antwort 16 von _gau_

@nighty
Hier geht's eigentlich um Access. Deine Frage wäre doch in der Excel-Rubrik besser aufgehoben, oder?

Wenn du in eine Zelle schreibst, wird aus dem Punkt ein Komma. Val erkennt das Komma nicht als Bestandteil einer Zahl und bricht an der Stelle ab.

Zufrieden?

PS: Was soll das eigentlich?

[gau]

Antwort 17 von michael oberley

hi gau

ich dachte weils vb ist und wandlung integer string war ja das thema ,war nur so nebenbei gedacht sorry wenns nicht so recht reinpasste.

gruss nighty

Antwort 18 von _gau_

Naja, bei mir kam die Frage so an, als wolltest du uns etwas "hinterlistig" testen ;-)

[gau]

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: