Problem mit DB-Struktur

23/02/2009 - 17:24 von tGermer | Report spam
Hallo,

ich habe ein Problem, bei dem ich nicht so richtig weiterkomme.

Ich habe in einer Datenbank unter anderem zwei Tabellen (vereinfachtes
Modell):

Tabelle1: tblMitarbeiter
Felder: Kostenstelle, ADName, Vorgesetzter, gueltigvon, gueltigbis
Primary Key ist die Kombination aus Kostenstelle, gueltigvon und
gueltigbis

Tabelle2: tblZiele
Felder: TDatum, Kostenstelle, Zielwert
Primary Key ist die Kombination aus TDatum und Kostenstelle

Jetzt benötige ich eine aktualisierbare Abfrage als Datenquelle für
ein Formular, die Daten aus beiden Tabellen enthàlt.
Erster Ansatz war folgendes SQL-Statement:

SELECT tblZiele.TDatum, tblMitarbeiter.Vorgesetzter,
tblZiele.Kostenstelle, tblZiele.Zielwert
FROM tblZiele INNER JOIN tblMitarbeiter ON tblZiele.Kostenstelle tblMitarbeiter.Kostenstelle
WHERE (((tblMitarbeiter.gueltigvon)<=[TDatum]) AND
((tblMitarbeiter.gueltigbis)>=[TDatum]))
ORDER BY tblZiele.Kostenstelle;

Diese Abfrage ist aber nicht aktualisierbar. Das liegt wahrscheinlich
daran, dass sie auf beiden Seiten der Verknüpfung nicht eindeutig ist
(obwohl sie es durch die Bedingungen der WHERE-Klausel in Kombination
mit den vorhandenen Daten eigentlich ist).

Hat jemand eine Idee, wie dieses zu lösen ist?

Gruß

Tim
 

Lesen sie die antworten

#1 André Minhorst
23/02/2009 - 18:01 | Warnen spam
Hi, Tim!

Am Mon, 23 Feb 2009 08:24:45 -0800 (PST) schrieb :

Ich habe in einer Datenbank unter anderem zwei Tabellen (vereinfachtes
Modell):

Tabelle1: tblMitarbeiter
Felder: Kostenstelle, ADName, Vorgesetzter, gueltigvon, gueltigbis
Primary Key ist die Kombination aus Kostenstelle, gueltigvon und
gueltigbis



Hier benötigst Du zunàchst ein einzelnes Primàrschlüsselfeld (z.B. ID) ...

Tabelle2: tblZiele
Felder: TDatum, Kostenstelle, Zielwert
Primary Key ist die Kombination aus TDatum und Kostenstelle



... und hier auch. Außerdem sollte diese Tabelle ein Fremdschlüsselfeld
namens MitarbeiterID erhalten, in das der Primàrschlüsselwert des
Mitarbeiters eingetragen wird, zu dem das Ziel gehört.

Jetzt benötige ich eine aktualisierbare Abfrage als Datenquelle für
ein Formular, die Daten aus beiden Tabellen enthàlt.
Erster Ansatz war folgendes SQL-Statement:

SELECT tblZiele.TDatum, tblMitarbeiter.Vorgesetzter,
tblZiele.Kostenstelle, tblZiele.Zielwert
FROM tblZiele INNER JOIN tblMitarbeiter ON tblZiele.Kostenstelle > tblMitarbeiter.Kostenstelle
WHERE (((tblMitarbeiter.gueltigvon)<=[TDatum]) AND
((tblMitarbeiter.gueltigbis)>=[TDatum]))
ORDER BY tblZiele.Kostenstelle;



Wenn Du die oben vorgeschlagenen Felder hinzufügst, kannst Du etwa mit
folgendem Konstrukt arbeiten:

SELECT ... FROM tblZiele INNER JOIN tblMitarbeiter ON
tblZiele.MitarbeiterID = tblMitarbeiter.ID WHERE ...

Ciao
André

http://www.access-entwicklerbuch.de
http://www.access-im-unternehmen.de

Ähnliche fragen