Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

RE Empfänger aus zwei Tabellen

Begonnen von westaut, März 26, 2013, 23:18:08

⏪ vorheriges - nächstes ⏩

westaut

Ich habe zwei Tabellen (Tabelle A) und (Tabelle B). In beiden kommen Personenbezogene Daten vor.
Tabelle_A
-ID_A (AutoWert, 1,2,3,...)
- Anrede
- Name
-Anschrift, usw.
Tabelle_B
-ID_B (AutoWert, 1,2,3,...)
- Anrede
- Name
- Anschrift
- Anrede1 (zweite Person)
- Name1 (zweite Person)
- Name1 (zweite Person)

In der Regel schreibt Tabelle A eine Rechnung an Tabelle B Rechnungen. Doch ist es auch möglich, dass Tabelle A eine Rechnung auch an Tabelle A schreibt, unter Umständen sogar an sich selbst.
Hat jemand einen Lösungsvorschlag, -ansatz für diese Situation? Ich möchte dann den RE_Empfänger mit der jeweiligen Tabelle im Formular/Bericht verknüpfen, dass ich weitere Felder im Bericht hinzufügen kann.
Vielen Dank für eure Hilfe!

MzKlMu

Hallo,
beide Tabellen gehören zusammen in eine Tabelle. Eventuelle sind für weitere Personen eine extra Tabelle erforderlich mit einem Bezug zur dann einer Ausgangstabelle.
Mit einer weiteren Tabelle (einer Zuordnungstabelle) kannst Du dann aus der einen Tabelle beliebige Zuordnungen von Rechnungsteller zu Rechnungsempfänger machen.
Auch auf sich selbst.

Dein bisherigen Datenmodell würde ja bei einer Rechnungsstellung an sich selbst, auch in der TabelleB die gleichen Daten erfordern, was falsch wäre.

Gibt es auch Anrede2, Name2 ?

2x Name1 (so wie Du es hast) kann es aber nicht geben.
Gruß Klaus

westaut

Wow... das ging ja prompt! Danke!
Ja genau – ich brauche so etwas wie eine ,,Ausgangstabelle". Aber wie kann ich diese erstellen. Kämpfe mich schon seit Tagen mit dem herum...

Name1 kommt natürlich nicht 2x vor, sorry!

Zu besseren Verständlichkeit:
Tabelle A: selbständiger Arbeiter
-   ID
-   Anrede
-   Name
-   Anschrift
-   Kto-Daten etc.
Wenn Arbeiter1 eine Arbeit angefangen und bereits in Rechnung gestellt wurde und der Arbeiter2 diese Arbeit fertig macht – stellt der Arbeiter 2 dem Arbeiter 1 eine Rechung.

Tabelle B: Auftraggeber und max. 2 Leistungsempfänger
-   ID
-   AnredeAG
-   NameAG
-   AnschriftAG
-   Anrede1
-   Name1 (...1 ist immer RE Empfänger)
-   Anschrift1
-   Anrede2
-   Name2
-   Anschrift2

Den Vorschlag mit einer weiteren Tabelle, für evtl. weitere RE-Emfpänger, nehme ich gerne an, bin aber im Moment mit diesen zwei Tabellen überfordert.... Bin absoluter Laie in Sachen Programmierung.

Vielen DANK!

MzKlMu

#3
Hallo,
das Ganze hat mit Programmierung erst mal gar nichts zu tun. Das ist eine Frage der Tabellenstruktuer (des Datenmodells), dazu muss man nichts programmieren.

Du hast mich auch etwas missverstanden, alle Personen, egal ob Arbeiter oder Auftraggeber müssen in eine Tabelle, die etwa so aussehen sollte:

tblPersonen
- PersonID
- Anrede
- Nachname
- Vorname
- Anschrift
- Kto-Daten
- usw.

Für die Leistungsempfänger ist eine extra Tabelle erforderlich:

tblLeistEmf
- LeistEmpfID
- PersonID_F (als Fremdschlüssel)
- Anrede
- Nachname
- Vorname
- Anschrift

Für die Rechnungen dann:

tblRechnungen

- RechnungID
- RechnungVonID (Fremdschlüssel zur Personentabelle)
- RechnungAnID (Fremdschlüssel zur Personentabelle)
- LeistEmpfID_F (Fremdschlüssel zur LeistEmpftabelle, bleibt ggf auch leer)
- Rechnungsdatum
- Rechnungsnummer
- usw.
Gruß Klaus

westaut

Hallo!
Danke vielmals für deine Mühen und Erklärungen!

Vielleicht stehe ich nur auch auf der Leitung oder ich sehe den Wald vor lauter Bäumen nicht!

OK! Auftraggeber und Leistungsempfänger sind ohnehin in einer Tabelle. Weil es zu jedem Auftraggeber min. 1 und max. 2 Leistungsempfänger geben kann. Rechnungsempfänger aus Tabelle B ist immer Leistungsempfänger 1.
Die Tabellen Tabelle A (Arbeiter) und Tabelle B (Auftraggeber und Leistungsempfänger) bestehen bereits mit jeweils ca. 50 Datensätzen.

Rechnungssteller ist immer Tabelle A (Arbeiter) und Rechnungsempfänger ist Tabelle A oder Tabelle B.
ODER
eben die noch nicht vorhandene Tabelle C (Alle Personen)

Doch wie erstelle ich die Tabelle C (Alle Personen). Wie bekomme ich die Daten in die Tabelle C? Muss ich dann jeden Datensatz neu anlegen oder können die Daten aus Tabelle A und Tabelle B übernommen werden.

Vielen Dank für deine Geduld!

MzKlMu

Hallo,
mit einfachen Anfügeabfragen kannst Du die Daten von TabelleA und B in die neue TabelleC übertragen.
TabelleC vorher manuell anlegen.
TabelleA und B können anschließend (nach Prüfung) ersatzlos gelöscht werden.
Für Anfügeabfragen hat Access einen Assistenten an Bord.
ZitatAuftraggeber und Leistungsempfänger sind ohnehin in einer Tabelle.
Für die Leistungsempfänger ist aber zukünftig eine eigene Tabelle erforderlich. Hast Du das registriert?
Gruß Klaus

westaut

OK Danke!

Vielleich denke auch ich im Moment Falsch – für mich ist es unlogisch sozusagen Arbeiter und Kunden in einer Tabelle zu führen. Man führt ja auch nicht Mitarbeiter und Kunden in einer Tabelle oder liege ich da falsch? Natürlich wenn das in einer Tabelle wäre, wärs auch mit den Rechnungen einfacher.

Wenn ich das so mache könnte ich ja auch noch den Leistungsempfänger in diese Tabelle mitnehmen und dem jeweiligem Auftraggeber zuordnen, oder?
Vielen Dank!

MzKlMu

Hallo,
ZitatMan führt ja auch nicht Mitarbeiter und Kunden in einer Tabelle oder liege ich da falsch?
Der Vergleich hinkt, weil ein Mitarbeiter ja kein Kunde ist, wenn doch, wäre das wieder eine Tabelle.
Die Forderung für eine Tabelle ergibt sich ganz einfach aus Deiner Anforderung, dass es wechselseitig sein muss.
Mit 2 Tabellen müsstest Du für eine Person die Arbeiter ist und auch mal eine Rechnung stellen kann, dass diese Person 2x in verschieden Tabellen aufgenommen werden muss, war Dir das klar?
ZitatWenn ich das so mache könnte ich ja auch noch den Leistungsempfänger in diese Tabelle mitnehmen und dem jeweiligem Auftraggeber zuordnen, oder?
nein, auch das wäre falsch, denn es gibt ja mehr als ein Leistungsträger, was dann zu Feldnamen wie Name1, Name2 führt, was für eine Datenbank eigentlich ein NoGo ist.

Baue es wie vorgeschlagen auf, es ist dann in der Anwendung verblüffend einfach.
Gruß Klaus

westaut

Hallo nochmal!

Nur noch eine letzte Frage. Wenn der Name1 etc. eigentlich ein NoGo ist und ich die Datenbank ohnehin auf den Kopf stelle, dann könnte ich es ja doch so machen dass ich auch die Leistungsempfänger einzeln anlege und ggfs. zwei Leistungsempfänger einem Auftraggeber zuordne. In der Tabelle sage ich dann was sich hinter dem jeweiligem Datensatz verbirgt. Ein Arbeiter, Auftraggeber oder Leistungsempfänger sehe ich da richtig oder bin ich total daneben?

Jedenfalls besten DANK! Für deine Mühen und Ratschläge! DANEK!

MzKlMu

Hallo,
für die Leistungsträger solltest Du unbedingt eine extra Tabelle anlegen, da es nur einen Leistungsträger gibt, wenn es auch einen AG gibt.
Wenn die Leistungsträger auch in der Tabelle wären, müsstest Du ja für jeden Leistungsträger den AG doppelt eintragen und das kann es ja auch nicht sein.

Du kannst in der Personentabelle ein Feld erstellen zur Kennzeichnung ob Arbeiter (1) oder AG (2), dann kannst Du bei Bedarf filtern und hast nur eine Gruppe in der Anzeige.
Gruß Klaus

westaut

Hallo und DANKE!
Ich bin sehr sehr Dankbar und hoffe nicht lästig zu sein!
Bitte korrigiere mich:
Wenn ich eine Tabelle A (alle Personen) machen würde:
-   ID_Person
-   Art (Arbeiter, Auftraggeber, Leistungsempfänger, und evtl. weitere)
-   Name
-   Anschrift
-   Kontodaten
-   etc.

und eine Tabelle (Auftrag)
-   ID_ Auftrag
-   Datum_Beginn
-   Datum_Ende
-   ID_Person (Fremdschlüssel) als Arbeiter
-   ID_Person (Fremdschlüssel) als Auftraggeber
-   ID_Person (Fremdschlüssel) als Leistungsempfänger1
-   ID_Person (Fremdschlüssel) als Leistungsempfänger2
-   ID_Person (Fremdschlüssel) als Rechnungsträger (evtl. hätte den Vorteil dass auch ein LE2 Rechnungsemfänger sein könnte...

Würde das nicht auch so funktionieren?
BESTEN DANK!


MzKlMu

Hallo,
nein, das ist falsch. Das kann doch nicht gehen. Die ignorierst den Hinweis den ich schon mal gegeben habe.
Der leistungsempfänger gehört doch laut Deiner Beschriebung zum AG.
Wenn in der Personentabelle auch der Leistungsträger ist, musst Du doch jedes mal den AG wiederholen.
Angenommen, ein AG hat 2 Leistungsträger, dann müsstest Du den AG 2x anlegen, für jeden Leistungsträger 1x, das heist, der AG ist 2x in der Tabelle, bei 3 LET dann 3x, das kann doch nicht richtig sein.

Mit meinem Vorschlag, kannst Du einem AG beliebig viele LET zuordnen und bei Wahl eines AGs kannst Du dann einen von dessen LET als anzeigen.
Wenn der Rechnungsempfänger immer ein Leistungsträger ist, wird als Fremdschlüssel für den Rechnungträger dessen Primärschlüssel (PS) als FS verwendet.
Übrigens, Du wiederspricht Du Dir auch mal selbst:  ;D
Zitat1:
ZitatRechnungsempfänger aus Tabelle B ist immer Leistungsempfänger 1.
Du hast immer geschrieben.
und Zitat2:
Zitathätte den Vorteil dass auch ein LE2 Rechnungsemfänger sein könnte...
Gruß Klaus

westaut

Hallo....
Ja ich habe mich widersprochen... Sorry!  ;D

Aber wenn man so herumkopft wie ich, kommt man immer wieder auf neue Ideen...

Was ich jetzt nicht verstehe – vielleicht bin ich auch zu blöd aber:
Wenn ich eine Tabelle mit Auftrag mache, habe ich ja zu jeder Auftrag_ ID einen AG und einen LE1 und evtl einen LE2. Warum muss ich dann den AG doppelt anlegen?  ???

Meine Vorstellung:

Tabelle: Auftrag
-   Auftrag_ID
-   Person_ID(FS) als AG - immer
-   Person_ID(FS) als LE1 - immer
-   Person_ID(FS) als LE2 - ggfs. leer
-   Person_ID(FS) als RE - immer

Nach meinem Laien-Verständnis habe ich dann einen Auftrag und zu jedem Auftrag eine AG, einen LE1 und einen RE. Bei Bedarf einen LE2 – sonst ist das Feld leer. Dann muss ich ja den AG nicht doppelt anlegen. Sorry...

Ich möchte deine Vorschläge nicht Ignorieren – ich versuche sie zu verstehen! Ich bin jedenfalls sehr sehr DANKBAR!!!!
DANKE!

MzKlMu

Hallo,
ZitatDann muss ich ja den AG nicht doppelt anlegen. Sorry...
Doch, in der Personentabelle muss der AG doppelt sein, 1x für für LE1 und 1x für LE2 und 1x für LE3

So:
1   Meier Buxdehude    Müller    Berlin (LE1 zu AG Meier)
1   Meier Buxdehude    Schmidt   München (LE2 zu AG Meier)
1   Meier Buxdehude    Braun     Hamburg (LE 3 zu AG Meier)
Gruß Klaus

westaut

Könnten meine Tabellen nicht so aussehen?

Personen
Person ID:   Anrede      Name      Kto
0001      Herr              Mayr               123456789
0002      Frau              Mustermann   100100100
0003      Frau              Müller      202020200
0004      ...   

Aufträge
Auftrag ID:   AG(PersonID)   LE1(PersonID)   LE2(PersonID)   RE(PersonID)
0001      0001      0001      0002      0001
0002      0004      0005      0006      0005
0003      ...

DANEK!!!