Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feldtypen der Access-DB (https://www.delphipraxis.net/43654-feldtypen-der-access-db.html)

torud 6. Apr 2005 21:23

Datenbank: Access • Version: 2000 • Zugriff über: ADO

Feldtypen der Access-DB
 
Hallo Wissende!

Ich bräuchte mal bitte die Info, wie ich bestimmte Datenbankfelder in einer Access-DB anlegen kann. Ich weiss nun schon, wie es sich mit den folgenden verhält:

feldtyp:= ' counter'; //Autowert
feldtyp:= ' varchar'; //Text
feldtyp:= ' integer'; //Zahl
feldtyp:= ' longtext'; //Memo
feldtyp:= ' longbinary'; //Blob

DM.ADOQuery1.SQL.Add('ALTER TABLE '+tabelle+' ADD '+feldname+feldtyp);
DM.ADOQuery1.ExecSQL;

Ich benötige noch die Info für:
boolean
Datum/Uhrzeit
Währung

Gibt es sonst noch wichtige, die ich vergessen haben könnte???

Yadon 6. Apr 2005 21:35

Re: Feldtypen der Access-DB
 
Zitat:

Zitat von torud
Ich benötige noch die Info für:
boolean
Datum/Uhrzeit
Währung

Gibt es sonst noch wichtige, die ich vergessen haben könnte???

  • Boolean -> Ja/Nein
  • Datum/Uhrzeit -> Datum/Uhrzeit
  • Währung -> Währung
Meintest Du das? Oder verstehe ich die Frage falsch?

torud 6. Apr 2005 21:42

Re: Feldtypen der Access-DB
 
Leider falsch!

Ich wollte wissen wie die Variablen Namen heissen, die ich dafür dem SQL-Statement übergeben muss, damit eben diese FeldTypen erzeugt werden.

Um einen Autowert zu erhalten muss man 'counter' übergeben

Ich wollte nun wissen, wie die Bezeichner für

Boolean
Datum/Uhrzeit
und
Währung

noch lauten...

Yadon 6. Apr 2005 21:59

Re: Feldtypen der Access-DB
 
Sorry,
  • Boolean -> Boolean
  • Datum/Uhrzeit -> DAteTime
  • Währung -> Currency

torud 6. Apr 2005 22:14

Re: Feldtypen der Access-DB
 
Syntax Error in field definition erscheint, wenn ich versuche ein Boolean Feldtyp zu erstellen, wenn ich dafür Boolean verwende...

gibt es dafür eine Erklärung?

Was auch total komisch ist, wenn ich ein Textfeld anlege und dies mit VarCahr Tue und das Feld mit 'Text' bezeichne, erhalte ich die gleiche Fehlermeldung: Syntax Error in field.Benne ich aber das Textfeld a´la 'Textus' klappt es sofort.

Hier mal mein Code:
Delphi-Quellcode:
      tabelle:='beispiel';
      feldname:=ed_feldname.text;   //freie eingabe des feldnamens
      case rad_fieldtyp.ItemIndex of //auswahl des feldtyps in radiobox
        0 : feldtyp:= ' counter';
        1 : feldtyp:= ' varchar';
        2 : feldtyp:= ' integer';
        3 : feldtyp:= ' longtext';
        4 : feldtyp:= ' boolean';
        5 : feldtyp:= ' longbinary';
        6 : feldtyp:= ' currency';
        7 : feldtyp:= ' datetime';
      end;
      DM.ADOTable1.Active:=true;
      DM.ADOQuery1.sql.Clear;
      DM.ADOQuery1.SQL.Add('ALTER TABLE '+tabelle+' ADD '+feldname+feldtyp);                  
      DM.ADOQuery1.ExecSQL;

Robert_G 6. Apr 2005 22:15

Re: Feldtypen der Access-DB
 
Ich versuche gerade zu kapieren, warum man sich hetzutage noch mit so einem Spielzeug wie Jet rumärgert. :gruebel:
Ehrlich gesagt: Ich kapier's nicht. :freak:

torud 6. Apr 2005 22:25

Re: Feldtypen der Access-DB
 
Hallo Robert!

Vielen Dank für Deinen konstruktiven Beitrag!

Yadon 6. Apr 2005 22:32

Re: Feldtypen der Access-DB
 
Zitat:

Zitat von torud
Was auch total komisch ist, wenn ich ein Textfeld anlege und dies mit VarCahr Tue und das Feld mit 'Text' bezeichne, erhalte ich die gleiche Fehlermeldung: Syntax Error in field.Benne ich aber das Textfeld a´la 'Textus' klappt es sofort.

"Text" ist doch eine Eigenschaft vieler Komponenten, Edit.Text, Memo.Text etc. Sollte daran liegen.
Für den Rest bin ich jetzt zu müde, denke morgen drüber nach. Gute Nacht.

Robert_G 6. Apr 2005 22:34

Re: Feldtypen der Access-DB
 
Ich meinte das durchaus ernst.
Es gibt einfach keinen vernünftigen Grund irgendetwas mit Jet zu lösen. Was du mit Jet machen kannst solltest du mit FireBird besser und einfacher erledigen können.
Natürlich ist eine DAU-1-2-3-ClickMe DB in Access "einfach" hingeschludert, aber wenn du dein Daten absolut normalisiert und vielleicht noch mit einem Audit trial ablegen willst
-> Es geht vielleicht mit Jet. Aber nur solange du nur einen Benutzer hast, Trigger kannst du natürlich knicken. ;) (Und somit würde auch ein audit trial wegfallen)
Mehrere User auf einer Jet DB ist gleichbedeutend mit korrupten Dateien. ;)
Aber mach' nur... Ich halte mich ab jetzt raus. ;)

Yadon 6. Apr 2005 22:39

Re: Feldtypen der Access-DB
 
@Robert: Darf ich da mal widersprechen, auch wenn Du Dich jetzt raushalten willst? Ich habe durchaus andere und positive Erfahrungen gemacht. Gute Nacht! Und von einfach hingeschludert kann nun auch nicht die Rede sein. Und als DAU fühle ich mich deswegen auch noch nicht.

Robert_G 6. Apr 2005 22:50

Re: Feldtypen der Access-DB
 
Oh, den konnte man schnell falsch verstehen. :oops:
Ich meinte, dass es einfach ist eine Mist-DB zusammenzuklicken, aber eine wirkliche DB. Von oben bis unten normalisiert, mit consistency constraints & Co* wirst du mit Jet nicht hinkriegen KÖNNEN. Eine halbwegs durchdachte DB wäre vielleicht möglich aber total umständlich...

Das Ding ist schließlcih nur eine Art Paradox Ersatz. Und seit es kostenlose Alternativen wie FireBird oder das wirklich geniale PostGreSQL gibt, gibt es absolut kein Argument mehr für Jet.

*Also eine DB, die zu jedem Zeitpunkt zwangsläufig nur konsistente Daten enthält

torud 7. Apr 2005 05:18

Re: Feldtypen der Access-DB
 
Hallo Robert!

Hättest Du Deine Argumente gleich in Deinem ersten Posting angeführt, denke ich, dass es nicht zu den nun vorhandenen "Missverständnissen" gekommen wäre.

Die Problematik ist zwar noch die gleiche, aber ich denke, dass ich mir mal die von Dir aufgelisteten Alternativen zumindest mal ansehen werde!

shmia 7. Apr 2005 09:18

Re: Feldtypen der Access-DB
 
Zitat:

Zitat von torud
Was auch total komisch ist, wenn ich ein Textfeld anlege und dies mit VarCahr Tue und das Feld mit 'Text' bezeichne, erhalte ich die gleiche Fehlermeldung: Syntax Error in field.Benne ich aber das Textfeld a´la 'Textus' klappt es sofort.

Ganz einfach: beim Datentyp varchar musst die eine Länge angeben!
SQL-Code:
ALTER TABLE Nixda ADD test varchar(40)
Nachtrag:
Ich habe deine Frage ungenau gelesen.
Der Grund für den Syntax Error ist, dass du ein reserviertes Word als Feld- oder Tabellennamen benutzt hast.
Goldene Regel für Datenbankdesigner: Niemals reservierte Wörter für Feld-, View-, StroredProc- oder Tabellennamen verwenden!http://www.jsoftware.com/books/help/user/sql_reserved_words.htm

torud 7. Apr 2005 10:08

Re: Feldtypen der Access-DB
 
Hallo Shmia!

Vielen Dank. Danke auch, dass Du mir gleich noch den Link mit den reservierten Wörter gesandt hast. Das spart mir wieder die Suche. Man(n) ist ja bekanntlich faul. Also werde ich da noch eine kleine Prüfung einbinden, damit da nicht noch schlimmeres passieren kann!

shmia 7. Apr 2005 10:44

Re: Feldtypen der Access-DB
 
Zitat:

Zitat von torud
Vielen Dank. Danke auch, dass Du mir gleich noch den Link mit den reservierten Wörter gesandt hast. Das spart mir wieder die Suche. Man(n) ist ja bekanntlich faul. Also werde ich da noch eine kleine Prüfung einbinden, damit da nicht noch schlimmeres passieren kann!

Es nicht alle reservierte Wörter.
Access selbst (bzw. die Jet-Engine) bringt auch noch reservierte Wörter mit.
Wenn man schlau ist, vermeidet man alle reservierte Wörter von sämtlichen gängigen Datenbanken (Access, SQL Server, Interbase, Firebird, Oracle, ADS, ...).

meine gesammelten Links:
http://support.microsoft.com/default...b;en-us;109312 (Access97)
http://support.microsoft.com/default...b;en-us;209187 (Access2000)
http://support.microsoft.com/default...b;en-us;286335 (Access2002/2003)
http://support.microsoft.com/default...b;en-us;321266 (Jet 4.0)
http://dev.mysql.com/doc/mysql/en/reserved-words.html (MySQL)
http://developer.mimer.com/validator...rved-words.tml
http://www.jsoftware.com/books/help/...rved_words.htm
http://msdn.microsoft.com/library/de...ra-rz_9oj7.asp (SQL Server)

torud 7. Apr 2005 12:58

Re: Feldtypen der Access-DB
 
Habs mir gleich alles gezogen und kopiert.

Kann es sein, dass man mit 'Boolean' nicht wirklich ein Boolschen Feldtyp erstellen kann?

Alle anderen waren richtig, aber bei 'Boolean' bekomme ich immer die Fehlermeldung!

shmia 7. Apr 2005 13:05

Re: Feldtypen der Access-DB
 
Zitat:

Zitat von torud
Kann es sein, dass man mit 'Boolean' nicht wirklich ein Boolschen Feldtyp erstellen kann?
Alle anderen waren richtig, aber bei 'Boolean' bekomme ich immer die Fehlermeldung!

Datentyp BIT sollte bei Access funktionieren.

torud 7. Apr 2005 13:37

Re: Feldtypen der Access-DB
 
werde ich gleich mal probieren!

Gibts dazu eigentlich auch eine Liste, welche DatenTyp bei der Erstelleung wie benannt werden müssen??


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz