Autor Beitrag
mtm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Mo 27.02.12 17:09 
Hallo zusammen,

bin gerade Testweise dabei, ein kleines Programm zu schreiben, mit dem ich die Struktur von verschiedenen DB's anschauen kann.

Access (über ADO), Firebird, Interbase, MySQL, PostgreSQL (alle über ZEOS).

Funktioniert bisher auch ganz gut bis auf eine Sache.

In "TFieldDef" gibt es ja das Feld Attributes. Einer der möglichen Inhalte ist "jaRequired", der anzeigen soll, ob bei dem DB-Feld NULL erlaubt ist. Das geht auch bei allen DB'S bis auf Access.
Wenn bei dem Feld in Access selber "Eingabe erforderlich" eingetragen ist, ist jaRequired trotzdem nicht in Attibutes gesetzt.

Wie kann ich herausbekommen, ob in Access bei einem Feld NULL erlaubt ist oder nicht ?

Hat da schon jemand Erfahrungen gemacht ???

Danke im Voraus für Antworten
mtm

_________________
Es gibt 10 Arten von Menschen. Diejenigen, die Binär können und diejenigen, die es nicht können.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mo 27.02.12 17:26 
Ich greife zwar nicht mit ADO auf Access-Datenbanken zu, aber falls Du ein Access-Datenfeld hast, welches die Eigenschaft required (d.h. keine leeren Einträge) hat, dann wird beim Einfügen des Feldes (manuell) in die Tabelle in Delphi das "required property" dieses Feldes auf TRUE gesetzt gesetzt. Allerdings gilt das automatisch für alle boolschen Felder in Access. Daher ist bei boolschen Feldern eine Aussage, ob eine Eintrag notwendig ist, nicht so einfach zu machen. Man kann, wenn in Access bei logischen Feldern kein Eintrag notwendig ist, in Delphi required auf false setzen. Ob das bei notwendigen Feldeinträgen ebenfalls klappt, weiß ich nicht. Ich meine, dass über die Abfrage der propery "required" eine Aussage - wie Du sie machen willst - durchaus möglich ist (Ausnahme logische Felder).

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
mtm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Mo 27.02.12 18:15 
Vielleicht habe ich mich etwas ungenau ausgedrückt :

Also, nochmal.

Ich greife auf eine bestehende Access-DB per ADO zu. Dann lese ich die Struktur einer Tabelle ein (egal ob mit AdoQuery oder AdoTable). In dieser Tabelle ist ein Textfeld bei dem mit Access die Eigenschaft "Eingabe erforderlich" aktiviert wurde. In FieldDef.Attributes des entsprechenden Feldes ist aber der Wert faRequired nicht gesetzt.
Bei anderen DB-Systemen (Firebird, Interbase, MySQL, PostgreSQL) funktioniert das aber.

Das ist sicherlich mal wieder so eine eigenartige Besonderheit von den MS-Produkten. Die Frage ist aber, wie kann ich denn herausbekommen, ob unter Access ein Feld mit "Eingabe erforderlich" markiert wurde ???

Danke trotzdem