none
Nullwerte und leere Zeichenfolgen unter A2007/A2010

    Frage

  • ADP, Access 2007 bzw. 2010 und SQL Server 2008 Express SP1


    Habe die Struktur soweit wie möglich vereinfacht:
    Ich habe ein Formular (frmTabStripAkten) mit einem Textfeld (AzID) und einem Eingabeparameter (@AzID = Forms!frmTabStripAkten!AzID). Datensatzquelle des Formulars ist eine stored procedure (qryAktenSelektion).

    ALTER PROCEDURE dbo.qryAktenSelektion
    (@AzID int)
    AS SELECT     *
    FROM         dbo.qryAktenAblageMitView
    WHERE     (AzID = @AzID)

    Wenn ich jetzt unter A2007 das Formular öffne und den Wert des Textfeldes beim Öffnen auslese, ist er NULL, wenn ich die gleiche Datenbank mit gleichem Backend unter A2010 öffne, ist der Wert nicht NULL, sondern leere Zeichenfolge.
    Hat Microsoft da an Access was geändert oder warum ist das so????
    Ich habe eine sehr grosse Anwendung, wo an vielen Stellen auf NULL geprüft wird und die deshalb unter A2010 nicht mehr läuft....

    Das ganze tritt auch auf, wenn man den Eingabeparameter im Formular weglässt und die dann beim Öffnen erscheinende Inputabfrage durchwinkt.

    Danke für die Hilfe.

    Dirk

    Dienstag, 7. Dezember 2010 10:58

Antworten

  • Hallo!

    Dirk Breyer schrieb:

    Wenn ich jetzt unter A2007 das Formular öffne und den Wert des Textfeldes beim Öffnen auslese, ist er NULL, wenn ich die gleiche Datenbank mit gleichem Backend unter A2010 öffne, ist der Wert nicht NULL, sondern leere Zeichenfolge.

    Ein ähnliches Verhalten kann man mit einem ungebundenen Textfeld in einer ADP nachstellen. (Er reicht aus, wenn als Datenbasis eine Tabelle verwendet wird - muss keine SP sein.)

    Hat Microsoft da an Access was geändert oder warum ist das so????

    Das kann ich dir nicht beantworten. ;-)

    Ich habe eine sehr grosse Anwendung, wo an vielen Stellen auf NULL geprüft wird und die deshalb unter A2010 nicht mehr läuft....

    Das ganze tritt auch auf, wenn man den Eingabeparameter im Formular weglässt und die dann beim Öffnen erscheinende Inputabfrage durchwinkt.

    Eine Problemumgehung könnte sein, wenn du die Formular-Eigenschaft "Standardwerte abrufen" auf Nein einstellst oder NULL als Standardwert dieser Textfelder einträgst.

    [OT]
    Anm.: Ein ähnliches Problem hatte ich in einer accdb, in der ungebundene Textfelder als Filter genutzt werden, die mit einem Standardwert (z. B. 1. Tag des aktuellen Monats) voreingestellt sind. Diese Felder kann der Anwender nicht mehr leeren (manuell auf NULL setzen), weil dann immer der Standardwert eingetragen wird.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Dienstag, 7. Dezember 2010 11:55
  • Hallo,

     

    ich kann leider auch nicht sagen, ob MS etwas verändert hat, aber da deren Empfehlen eh von ADP´s wegführt, würde ich mich nicht wundern. Eigentlich sollen ADP´s nicht weiterentwickelt werden. Ich selbst habe mich auch gänzlich davon entfernt und nutze linked tables per ODBC Call.

    Aber das gehört ja jetzt weniger zur Problemlösung. Wie sieht denn deine Prüfung auf NULL genau aus?

    Solltest du Select Case oder eine If-Anweisung nutzen, füge doch einfach noch den leerstring(" ", oder vbNullstring) hinzu.

    If strTest = NULL or strTest = vbNullstring Then

    'Anweisung

    End If

     

    Sollte eigentlich kein großer Akt sein :)


    Cheers Jörn Bosse, Microsoft Junior Studentpartner
    Mittwoch, 8. Dezember 2010 11:03

Alle Antworten

  • Hallo!

    Dirk Breyer schrieb:

    Wenn ich jetzt unter A2007 das Formular öffne und den Wert des Textfeldes beim Öffnen auslese, ist er NULL, wenn ich die gleiche Datenbank mit gleichem Backend unter A2010 öffne, ist der Wert nicht NULL, sondern leere Zeichenfolge.

    Ein ähnliches Verhalten kann man mit einem ungebundenen Textfeld in einer ADP nachstellen. (Er reicht aus, wenn als Datenbasis eine Tabelle verwendet wird - muss keine SP sein.)

    Hat Microsoft da an Access was geändert oder warum ist das so????

    Das kann ich dir nicht beantworten. ;-)

    Ich habe eine sehr grosse Anwendung, wo an vielen Stellen auf NULL geprüft wird und die deshalb unter A2010 nicht mehr läuft....

    Das ganze tritt auch auf, wenn man den Eingabeparameter im Formular weglässt und die dann beim Öffnen erscheinende Inputabfrage durchwinkt.

    Eine Problemumgehung könnte sein, wenn du die Formular-Eigenschaft "Standardwerte abrufen" auf Nein einstellst oder NULL als Standardwert dieser Textfelder einträgst.

    [OT]
    Anm.: Ein ähnliches Problem hatte ich in einer accdb, in der ungebundene Textfelder als Filter genutzt werden, die mit einem Standardwert (z. B. 1. Tag des aktuellen Monats) voreingestellt sind. Diese Felder kann der Anwender nicht mehr leeren (manuell auf NULL setzen), weil dann immer der Standardwert eingetragen wird.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Dienstag, 7. Dezember 2010 11:55
  • Hallo,

     

    ich kann leider auch nicht sagen, ob MS etwas verändert hat, aber da deren Empfehlen eh von ADP´s wegführt, würde ich mich nicht wundern. Eigentlich sollen ADP´s nicht weiterentwickelt werden. Ich selbst habe mich auch gänzlich davon entfernt und nutze linked tables per ODBC Call.

    Aber das gehört ja jetzt weniger zur Problemlösung. Wie sieht denn deine Prüfung auf NULL genau aus?

    Solltest du Select Case oder eine If-Anweisung nutzen, füge doch einfach noch den leerstring(" ", oder vbNullstring) hinzu.

    If strTest = NULL or strTest = vbNullstring Then

    'Anweisung

    End If

     

    Sollte eigentlich kein großer Akt sein :)


    Cheers Jörn Bosse, Microsoft Junior Studentpartner
    Mittwoch, 8. Dezember 2010 11:03