Access-Makros und Leer-Strings
Bis Access Version 2.0 funktionierten die Reports für meine Datenbanken wunderbar, aber sowohl in Access 95 als leider auch immer noch in 97 steckt anscheinend ein Bug: Ich frage in Makros auf leere Strings ab, um darüber die Reports übersichtlicher zu gestalten. Wenn Datenfelder keinen Inhalt haben, dann setze ich für den jeweiligen Datensatz auch das Beschriftungsfeld auf `nicht sichtbar´. Also zum Beispiel [Bemerkung]="" als Bedingung, und dann unter SetzenWert etwa [Text12].[sichtbar] nein. Bei den neuen Versionen klappt diese Abfrage einfach nicht, man kann nicht mal ersatzweise auf die String-Länge 0 abfragen; es sieht aus, als würden für die leeren Strings überhaupt keine Variablen eingerichtet. Wissen Sie Abhilfe ohne Benutzung von Access Basic?
- Detlef Grell
Bis Access Version 2.0 funktionierten die Reports für meine Datenbanken wunderbar, aber sowohl in Access 95 als leider auch immer noch in 97 steckt anscheinend ein Bug: Ich frage in Makros auf leere Strings ab, um darüber die Reports übersichtlicher zu gestalten. Wenn Datenfelder keinen Inhalt haben, dann setze ich für den jeweiligen Datensatz auch das Beschriftungsfeld auf `nicht sichtbar´. Also zum Beispiel [Bemerkung]="" als Bedingung, und dann unter SetzenWert etwa [Text12].[sichtbar] nein. Bei den neuen Versionen klappt diese Abfrage einfach nicht, man kann nicht mal ersatzweise auf die String-Länge 0 abfragen; es sieht aus, als würden für die leeren Strings überhaupt keine Variablen eingerichtet. Wissen Sie Abhilfe ohne Benutzung von Access Basic?
Daß es mit alten Access-Versionen geklappt hat, ist eigentlich ein Bug in diesen Versionen. Microsoft unterscheidet im Handbuch sehr genau zwischen leeren Strings (die auch Leerzeichen enthalten dürfen) und Nullwerten. Letztere sind Datenfelder, in die ein User nie etwas eingetragen hat. Üblicherweise generiert man Reports mittels Abfragen, um nur die gerade interessierenden Daten aufzubereiten. Während echte Leer-Strings in die Dynasets von Abfragen übernommen werden, legen die neuen Versionen von Access für Nullwerte tatsächlich keine Variablen im Dynaset an - die alten taten es entgegen der Beschreibung im Handbuch. Sie sollten daher die Bedingung IstNull([Bemerkung]) in Ihrem Makro benutzen. Die gegenteilige Abfrage IstNichtNull in Access 97 wird übrigens in Makros weder angeboten noch akzeptiert, so daß man sich mit Nicht(IstNull([Bemerkung])) behelfen muß. Um in Ihrem Fall aber ganz sicherzugehen, daß auch die Anzeige von Leer-Strings, die keine Nullwerte sind, unterdrückt werden, sollten Sie die Abfrage darauf per Oder zusätzlich aufnehmen. Die endgültige Form wäre dann also IstNull([Bemerkung]) Oder IstLeer([Bemerkung]) beziehungsweise IstNull([Bemerkung]) Oder [Bemerkung]="". (gr) (gr)