Angenommen, man möchte den Inhalt eines Memofeldes innerhalb einer Abfrage modifizieren. Ein einfacher Ansatz dafür ist das Erstellen einer benutzerdefinierte Funktion in einem Standardmodul, die dann in der Abfrage aufgerufen wird.
Die Abfrage liefert dann auch die erwarteten Daten - jedoch nur in der Datenblattansicht. Wenn man sie über DAO auswertet, werden nur die ersten 255 Zeichen des Memofeldes korrekt zurückgegeben - der Rest ist „Kauderwelsch“.
Kennt jemand das Problem und weiß einen Workaround???
Ein Beispiel:
- Lege eine neue Tabelle „MeineTabelle“ mit einem Memofeld „MeinMemo“ an und gib einge Daten (>255 Zeichen) ein.
- Erstelle eine Funktion in einem Standardmodul, die den Inhalt des Feldes zurückgibt
Public Function GetMemo(sMemo as String) as String
GetMemo = sMemo
End Function
-
Erstelle eine Abfrage „MeineAbfrage“, die die Funktion GetMemo beinhaltet:
Select GetMemo([MeinMemo]) as Memo From MeineTabelle; -
Führe die Abfrage aus. In der Datenblattansicht werden die korrekten Daten angezeigt.
-
Lege eine weitere Funktion an, um die Abfrage per DAO auszuwerten:
Public Sub TestDAO()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(„MeineAbfrage“, dbOpenSnapshot)
With rs
.MoveFirst
Do Until .EOF
Debug.Print !Memo
.MoveNext
Loop
End With
End Sub
- Schaue ins Testfenster: ab dem 255. Zeichen wird „Kauderwelsch“ ausgegeben.