Announcement

Collapse
No announcement yet.

Wie stellt man die „Required“ Eigenschaft einer Access Datenbank ein?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie stellt man die „Required“ Eigenschaft einer Access Datenbank ein?

    Ich erstelle mit ADO eine Datenbank gemäß dem bekannten Beispiel aus diesem Forum:
    <pre>
    aTable.ParentCatalog := aCatalog;
    aTable.Name := 'Kunden';
    aCatalog.Tables.Append(aTable);
    aColumn := CoColumn.Create;
    MemoLog.Lines.Add('Column...');
    with aColumn do
    begin
    Name := 'KdnName';
    Type_ := adVarWChar;
    ParentCatalog := aCatalog;
    Attributes := adColNullable;
    aColumn.DefinedSize := 30;
    Properties['Jet OLEDB:Allow Zero Length'].Value := True;
    Properties['Description'].Value := 'Name des Kunden'
    end;
    aTable.Columns.Append(aColumn.Name, adVarWChar, 0);
    </pre>
    Warum auch immer, wenn ich mit ACCESS 97 die erzeugte Datenbank öffne, wird eine Eingabe erzwungen.

    In der Hilfe finde ich, daß es eine Eigenschaft „Required“ und „AllowZeroLength“ gibt. Wenn wirklich ohne Eingabe erlaubt ist, muß ich wohl „Required“ benutzen. „AllowZeroLength“ erlaubt einen leeren String.

    Aber wie wird die Eigenschaft „Required“ angesprochen?

  • #2
    Hallo,

    die ADOX-Objekte werden von Microsoft im <b>MDAC 2.5 SDK - ADOX</b> dokumentiert. Dort findet sich die Beschreibung des <b>Column</b>-Objektes, wobei der folgende Satz zu lesen ist: "<i>Determine if the column is fixed-length, or if it can contain null values with the Attributes property.</i>".

    Also ist die <b>Attributes</b>-Eigenschaft zuständig, wobei in der Voreinstellung keine NULL-Werte zulässig sind (d.h. in der Voreinstellung muss ein Wert in dieses Feld eingetragen werden). Auf der Hilfeseite <b>ColumnAttributesEnum</b> ist die Tabelle mit allen erlaubten Werten und ihren Beschreibungen zu finden. Über die Konstante <b>adColNullable</b> wird der NULL-Wert erlaubt

    Comment


    • #3
      Mit der Eigenschaft AllowZeroLength können Sie angeben, ob eine leere Zeichenfolge (" ") einen gültigen Eintrag in einem Feld darstellt.

      Anmerkung Die Eigenschaft AllowZeroLength gilt nur für Felder vom Typ Text, Memo und Hyperlink in Tabellen.

      Anmerkung Verwenden Sie die DAO-Eigenschaft AllowZeroLength, um mit Visual Basic auf die Eigenschaft AllowZeroLength eines Feldes zuzugreifen.

      Hinweis

      Soll Microsoft Access einen leere Zeichenfolge anstatt eines Null-Wertes speichern, wenn ein Feld leer bleibt, müssen die Eigenschaften AllowZeroLength und Required auf Ja eingestellt werden.
      Die folgende Tabelle zeigt die Ergebnisse bei der Kombination der Einstellungen der Eigenschaften AllowZeroLength und Required .
      <pre>
      AllowZeroLength Required Benutzeraktion Gespeicherter Wert
      Nein Nein Drückt EINGABETASTE Null
      Drückt LEERTASTE Null
      Gibt eine leere Zeichenfolge(nicht zulässig)
      ein
      Ja Nein Drückt EINGABETASTE Null
      Drückt LEERTASTE Null
      Gibt eine leere Zeichenfolge Leere Zeichenf.
      Nein Ja Drückt EINGABETASTE (nicht zulässig)
      Drückt LEERTASTE (nicht zulässig)
      Gibt eine leere Zeichenfolge(nicht zulässig)
      ein
      Ja Ja Drückt EINGABETASTE (nicht zulässig)
      Drückt LEERTASTE Leere Zeichenf.
      Gibt eine leere Zeichenfolge Leere Zeichenf.
      </pre>
      Anmerkung Sie können die EigenschaftFormat verwenden, um zwischen der Anzeige eines Null-Wertes und einer leeren Zeichenfolge zu unterscheiden. Die Zeichenfolge "Keine" kann z.B. angezeigt werden, wenn eine leere Zeichenfolge eingegeben wird.

      Die Eigenschaft AllowZeroLength ist von der Eigenschaft Required unabhängig. Die Eigenschaft Required stellt lediglich fest, ob ein Null-Wert ein gültiger Wert für ein Feld ist. Ist die Eigenschaft AllowZeroLength auf Ja
      eingestellt, so ist eine leere Zeichenfolge ein gültiger Wert für das Feld, unabhängig von der Einstellung der Eigenschaft Required

      Comment


      • #4
        Mit der Eigenschaft AllowZeroLength können Sie angeben, ob eine leere Zeichenfolge (" ") einen gültigen Eintrag in einem Feld darstellt.

        Soll Microsoft Access einen leere Zeichenfolge anstatt eines Null-Wertes speichern, wenn ein Feld leer bleibt, müssen die Eigenschaften AllowZeroLength und Required auf Ja eingestellt werden. Die folgende Tabelle zeigt die Ergebnisse bei der Kombination der Einstellungen der Eigenschaften AllowZeroLength und Required .
        <pre>
        AllowZeroLength Required Benutzeraktion Gespeicherter Wert
        Nein Nein Drückt EINGABETASTE Null
        Drückt LEERTASTE Null
        Gibt eine leere Zeichenfolge(nicht zulässig)
        ein
        Ja Nein Drückt EINGABETASTE Null
        Drückt LEERTASTE Null
        Gibt eine leere Zeichenfolge Leere Zeichenf.
        Nein Ja Drückt EINGABETASTE (nicht zulässig)
        Drückt LEERTASTE (nicht zulässig)
        Gibt eine leere Zeichenfolge(nicht zulässig)
        ein
        Ja Ja Drückt EINGABETASTE (nicht zulässig)
        Drückt LEERTASTE Leere Zeichenf.
        Gibt eine leere Zeichenfolge Leere Zeichenf.
        </pre>
        Die Eigenschaft AllowZeroLength ist von der Eigenschaft Required unabhängig. Die Eigenschaft Required stellt lediglich fest, ob ein Null-Wert ein gültiger Wert für ein Feld ist. Ist die Eigenschaft AllowZeroLength auf Ja eingestellt, so ist eine leere Zeichenfolge ein gültiger Wert für das Feld, unabhängig von der Einstellung der Eigenschaft Required.

        Meine Frage: Gibt es mit DAO Zugriff auf andere Eigenschaften als mit ADO oder habe ich die Thematik nur leider immer noch nicht verstanden?

        Vielen Dank<br>
        Rainer Steinfeld

        Comment


        • #5
          Hallo,

          ich habe gerade im Download-Bereich vom Delphi-Forum ein Beispielprojekt abgelegt, mit dem eine Tabelle über ADOX angelegt wird, in deren Spalten NULL-Werte erlaubt werden. Die wesentliche Zeile verbirgt sich hinter <b>aColumn.Properties['Nullable'].Value := True;</b>:
          <pre>
          //
          // Spalte 2 = Zeichenfeld, das auch Leer bleiben kann inkl. Default
          //
          vColName := 'eMail';
          aTable.Columns.Append(vColName, adVarWChar, 20);
          aColumn := aTable.Columns.Item[vColName] as _ColumnDisp;
          aColumn.Properties['Description'].Value := 'eMail-Adresse des Kunden';
          aColumn.Properties['Jet OLEDB:Allow Zero Length'].Value := True;
          aColumn.Properties['Default'].Value := '(unbekannt)';
          MemoLog.Lines.Add('Spalte 2 hinzugefügt...');
          //
          // Spalte 3 = Zeichenfeld mit "Erforderlich = Nein"
          //
          vColName := 'Telefon';
          aTable.Columns.Append(vColName, adVarWChar, 15);
          aColumn := aTable.Columns.Item[vColName] as _ColumnDisp;
          aColumn.Properties['Description'].Value := 'Telefonnummer des Kunden';
          aColumn.Properties['Nullable'].Value := True;
          MemoLog.Lines.Add('Spalte 3 hinzugefügt...');
          </pre&gt

          Comment


          • #6

            Comment

            Working...
            X