Seltsames verhalten von Left(string, anzahl)

22/07/2008 - 14:46 von Volker Neurath | Report spam
Hallo zusammen,

ich kàmpfe gerade mit folgendem:

um dynamisch die Record-source eines formulars zwecks Sortierung zu
àndern, lese ich den String aus me.recordsource aus, und teste u.a ob
überhaupt schon eine Order by Clause enthalten ist.
Entsprechend wird dann der SQL String veràndert.

Beim auslesen möchte ich nur bis zum, aber ohne das Semikolon auslesen:

strMySQLstring = (left(me.recordsource, len(me.recordsource)-1)

was mich wundert: obige Zeile liefert mir aber den kompletten Strin
*inklusive* Semikolon zurück; um selbiges auszuschliessen, mussich

.., len(me.recordsource)-2) schreiben.

Warum?

Ich empfinde das als unlogisch, denn:

in meinem Fall liefert mir len() z.B. 140 zeichen zurück.
len()-1 sind also 139 zeichen,
left(, 139) sollte demnach nur alles bis zum, aber ohne SEmikolon
zurückliefern - denn das müsste ja Z. 140 sein)

Wo ist mein Denkfehler?

Volker

Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet
Die Signatur làßt sich nach belieben Anpassen ;-)
 

Lesen sie die antworten

#1 Stefan Hoffmann
22/07/2008 - 15:09 | Warnen spam
hallo,

Volker Neurath schrieb:
strMySQLstring = (left(me.recordsource, len(me.recordsource)-1)
was mich wundert: obige Zeile liefert mir aber den kompletten Strin
*inklusive* Semikolon zurück; um selbiges auszuschliessen, ..
Wo ist mein Denkfehler?


Da wird halt noch ein Leerzeichen enthalten sein.

Dim SQL As String

SQL = Trim(Me.RecordSource)
SQL = Left(SQL, Len(SQL) - 1)

Ein Test auf das ORDER BY wàre sinnvoll:

Dim Position As Long
Dim SQL As String

SQL = Trim(Me.RecordSource)
Position = InStr(SQL, "ORDER")
If Position > 0 Then
SQL = Left(SQL, Position - 1)
End If


Persönlich verwende ich in solchen Fàllen immer eine Konstante auf
Formularebene ohne Sortierung.


mfG

Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Ähnliche fragen