Ich schrieb eine Funktion, um eine Zeichenfolge zu empfangen und sie mit allen Leerzeichen zurückzuschreiben, außer Leerzeichen. Wenn Leerzeichen am Anfang oder Ende der Zeichenfolge oder nach oder vor einem anderen Leerzeichen stehen, werden sie ebenfalls gelöscht.Fehlertyp stimmt nicht mit Wagenrücklauf und Zeilenvorschub überein
Ex."_a_____a" wird "a_a". („_“ Steht für ein Leerzeichen)
ich die folgende Abfrage ausgeführt wurde:
UPDATE table1
SET field1 = whitespace(field1)
Aus irgendeinem Grund, wenn die Zeichenfolge beginnt mit einem Carriage Return oder Line Feed, erhalte ich einen Typenkonflikt Fehler .
Public Function whiteSpace(ByVal field As String) As String
Dim i As Integer
If (IsNull(field)) Then
field = ""
GoTo catchNulls
End If
field = RegexReplace(field, "(?=\s)[^ ]", " ")
field = Trim(field)
field = RegexReplace(field, " +", " ")
catchNulls:
whiteSpace = field
End Function
Function RegexReplace(ByVal text As String, _
ByVal replaceWhat As String, _
ByVal replaceWith As String, _
Optional ByVal ignoreCase As Boolean = False) As String
On Error GoTo catch
Dim RE As Object
Dim str As String
str = Empty
Set RE = CreateObject("vbscript.regexp")
RE.ignoreCase = ignoreCase
RE.pattern = replaceWhat
RE.Global = True
str = RE.Replace(text, replaceWith)
continue:
RegexReplace = str
Exit Function
catch:
Call raiseError(Err.Number, Err.Source, Err.Description)
GoTo continue
End Function
Ich versuchte Public Function whiteSpace(ByVal field As String) As String
für Public Function whiteSpace(ByVal field As Variant) As String
Austausch und ich habe nicht den Fehler, aber Felder mit Carriage Return und Line Feed gleich geblieben.
Brechen Sie den Code: 1. den String-Wert von 'field1' erhalten, manipulieren 2. dass die String-Wert über die Funktion, 3. Schreiben Sie Ihre SQL-Update, indem Sie' field1' mit dem neuen Wert. – Ambie