Beziehungsfehler ohne erkennbaren Grund
Karl Donaubauer
Gesendet: 18.06.19 18:33
Betreff: RE: Beziehungsfehler ohne erkennbaren Grund



Elite Veteran

Beiträge: 682
500100252525
Ort: Wien
Hallo!

domi5599

ich wollte mit einem CREATE TABLE STATEMENT gleich eine 1:n Beziehung zu einer vorhandenen Tabelle erstellen,
aber Access kommt mir mit diesem Fehler: ,,Für Beziehung ist die dieselbe Anzahl an Feldern mit den denselben Datentypen erforderlich"

Statement:

CREATE TABLE Buchung
(
Buchungsnummer Integer,
Standort String,
Name String,
Tag DateTime,
Fahrzeugtyp String,
Fahrzeugnummer Integer,
Bezahlt Bit,
PRIMARY KEY (Buchungsnummer, Name, Tag),
FOREIGN KEY (Name) REFERENCES Kunde
ON UPDATE CASCADE,
FOREIGN KEY (Buchungsnummer) REFERENCES Fahrzeug
ON DELETE SET NULL ON UPDATE CASCADE,
FOREIGN KEY (Tag) REFERENCES Fahrzeug
ON DELETE SET NULL ON UPDATE CASCADE
);

Das ironische ist, dass der erste Fremdschlüssel ohne Probleme funktioniert und auch richtig arbeitet.
Aber die beiden anderen zur Tabelle Fahrzeug wollen einfach nicht arbeiten.
Sowohl in der Tabelle Fahrzeug, als auch in der eigentlich zu erstellenden Tabelle Buchung haben die Spalten Buchungsnummer und Tag den selben Datentyp.

Fahrzeug Spalten:

Fahrzeugtyp (String)
Fahrzeugnummer (Integer)
Buchungsnummer (Integer) Primary Key
Standort (String)
Tag (DateTime) Primary Key

Woher weißt du, dass Buchungsnummer in Fahrzeug ein Integer ist? Hast du ihn per SQL erzeugt oder in die Tabellen-Entwurfsansicht geschaut?
Ich frage, weil das "Integer" im CREATE TABLE Statement in Access einen Long Integer erzeugt, während "Integer" in der Entwurfsansicht einer Access-Tabelle ein Small Integer ist. Daher könnte das Typproblem kommen.

Wenn es das nicht ist, dann versuche mal, die Beziehung expliziter zu schreiben mit der Syntax Tabelle(Feldname):

FOREIGN KEY (Buchungsnummer) REFERENCES Fahrzeug(Buchungsnummer)
und
FOREIGN KEY (Tag) REFERENCES Fahrzeug (Tag)

Das kann zu anderen/aussagekräftigeren Fehlermeldungen führen.

Übrigens solltest du "Name" und "Tag" als Feldnamen vermeiden, weil sie Schlüsselwörter in Access sind.

-----
Servus
Karl
*********
Internationale Access-Konferenz: http://www.AccessDevCon.com
Access-Entwickler-Konferenz: http://www.donkarl.com/?aek
Top of the page Bottom of the page