Wenn die Inhalte von TEXT-Attributen per VBScript analysiert werden sollen, kommt es aufgrund von ím Text enthaltenen CRLF-Zeichen ggfs. zu Problemen.
Beispiel:
Es werden EventLogs in die entsprechenden Klassen des OM eingelesen. Die Objekte der Klasse EventLogEntry besitzen ein Attribut 'Messages', das vom Typ TEXT konfiguriert ist.
Im 'Messages'-Attribut stehen die Texte des jeweiligen EventLog-Eintrags.
Diese Texte enthalten CRLF- und TAB-Steuerzeichen, die ggfs. die Analyse des Attribut-Inhalts mit vbscript erschweren, da die CRLF-Zeichen mit in der HDB gespeichert werden und nicht maskiert/ersetzt werden.
Um den Attribut-Inhalt per VBScript analysieren zu können, müssen die CRLF und ggfs. auch die TAP-Zeichen ersetzt werden, befor die VBScript-Analyse beginnt.
Lösungsmöglichkeit (z. B. für Update-Scripts oder VBScript-Register):
-) TEXT-Attributwert per SQL abfragen
-) CRLF-Zeichen mittels SQL-Replace ersetzen (SQL-Replace kann nicht auf ntext-Felder angewendet werden, daher vorherige Konvertierung in nvarchar(max) notwendig)
-) nach CRLF-Ersetzung kann Text-Attributwert in VBScript verarbeitet werden und z. B. die TAB-Zeichen mit VBScript-Methoden ersetzt werden.
set oSQL = oHDB.GetSQLDB()
sSQL = ""
sSQL = sSQL & "DECLARE @NewLine char(2)" & vbcrlf
sSQL = sSQL & "SET @NewLine = char(13) + char(10)" & vbcrlf
sSQL = sSQL & "SELECT cast(replace(cast(Value AS nvarchar(max)), @NewLine, '|') AS ntext) "
sSQL = sSQL & "FROM tblObjectText "
sSQL = sSQL & "WHERE (Attribute_id = dbo.fn_GetHDBAttributeId('EventlogEntry', 'Messages')) "
sSQL = sSQL & "AND object_id={ObjectId}"
sMess = oSQL.SQLExecuteScalar(sSQL)
sMess = replace(sMess, Chr(9), "")
Bilder 0 | ||
---|---|---|
Es sind keine Bilder in der Galerie vorhanden. |