[MS ACCESS 2003] Datenbankverknüpfungen

berger_84

Grünschnabel
Hi Tutorialboard!

Als ich heute mal wieder etwas in Access machen wollte, fiel mir auf das mein Wissensstand etwas eingerostet ist.....

Angenommen ich habe hier 3 Tabellen, fs_user,fs_access,fs_standorte:

(Ich werde als anschauungsbeispiel nicht alle Felder posten. Wenn ich dann die Logik sehe, kann ich es auch so in meine DB speisen, welche natürlich auch mit ID's und allem versehen ist)

PS: Ich muss das System so haben, weil ich es an ein bestehendes System anfügen muss.

fs_user:

Code:
---------------
|    user1    |
---------------
|    user2    |
---------------


fs_standorte:

Code:
---------------
|      DE      |
---------------
|      CH      |
---------------

Meine fs_access hat nun mehrere Booleanfelder

Angenommen mal die 2 Felder fs_access_isadmin und fs_access_isregistered

Meine Tabelle sollte dank den obigen Werten also nun etwa so aussehen:


Code:
-------------------------------------------------------
| User   | Standort | isregistered | isadmin  |
-------------------------------------------------------
| user1 |     DE       |        x           |       x       |
-------------------------------------------------------
| user1 |     CH       |        x           |      x       |
-------------------------------------------------------
| user2 |     DE       |        x           |      x        |
-------------------------------------------------------
| user2 |     CH       |        x           |      x       |
-------------------------------------------------------

Pro User aus der Tabelle fs_user geht listet er also alle Punkte aus fs_standorte aus!

Nun wäre mein Ziel, sobald ich bei fs_user oder fs_standorte etwas hinzufüge, die Tabelle fs_access automatisch diese auflistung macht

Sprich, ich füge jetzt BSP 3 User bei der fs_user ein, soll die Tabelle fs_access Automatisch ergänzt werden, so das eigentlich nur noch die Boolean's ausgefüllt werden müssen

Würde dann so aussehen bei ergänzung von User3, User4, User5

Wichtig: Ich möchte wirklich nur in der fs_user diese 3 Werte eintragen, mehr nicht! Die Tabelle fs_access soll also Automatisiert ausgefüllt werden und die Daten müssen vorhanden sein.

Code:
-------------------------------------------------------
| User   | Standort | isregistered | isadmin  |
-------------------------------------------------------
| user1 |     DE       |        x           |       x      |
-------------------------------------------------------
| user1 |     CH       |        x           |      x       |
-------------------------------------------------------
| user2 |     DE       |        x           |      x        |
-------------------------------------------------------
| user2 |     CH       |        x           |      x       |
-------------------------------------------------------
| user3 |     DE       |                    |                |
-------------------------------------------------------
| user3 |     CH       |                    |               |
-------------------------------------------------------
| user4 |     DE       |                    |               |
-------------------------------------------------------
| user4 |     CH       |                    |               |
-------------------------------------------------------
| user5 |     DE       |                    |               |
-------------------------------------------------------
| user5 |     CH       |                    |               |
-------------------------------------------------------
Das ganze sollte natürlich auch gleich funktionieren wenn ich jetzt BSP ein Standort ergänze!

Hoffe ist verständlich ausgedrückt.

Mahlzeit,
Berger
 
Hi,

wo werden den die neuen Daten eingegeben, gibt es dafür ein Formular oder gibst du diese direkt in die Tabelle ein?
Wenn es ein Formular dafür gibt, kannst du doch im AfterUpdate Ereignis des entsprechenden Formluars die Tabelle fs_access ergänzen.
 
MS Access unterstützt leider keine Trigger. Diese würden bei Inputs automatisch reagieren.

Ich würde ein Update-Querie machen, dass man nach jedem Insert ausführt. wenn der Insert über ein Formular passiert, kann man es dort in einem Event hinterlegen

Leider lässt MS Access keine komplexen Queries zu. Darum mach ich 2 Queries, wobei das Eine die Grundlage für das andere ist.

Zuserst mal alle möglichen Kombinationen ermitteln.
vw_all_combinations
SQL:
SELECT 
	t1.ID AS t1id, 
	t2.ID AS t2id
FROM 
	t1, 
	t2;

Und dann die Fehlenden auslesen und hinzufügen
SQL:
INSERT INTO t3 ( t1id, t2id )
SELECT 
	[all].t1id, 
	[all].t2id
FROM 
	vw_all_combinations AS [all] 
	LEFT JOIN t3 
		ON ([all].t1id = t3.t1id)
		AND ([all].t2id = t3.t2id)
WHERE 
	t3.ID Is Null;
 
Zuletzt bearbeitet von einem Moderator:
Hi,

wo werden den die neuen Daten eingegeben, gibt es dafür ein Formular oder gibst du diese direkt in die Tabelle ein?
Wenn es ein Formular dafür gibt, kannst du doch im AfterUpdate Ereignis des entsprechenden Formluars die Ta-belle fs_access ergänzen.

Hi tombe!

Formulare / Abfragen kann ich keine nutzen, die ganze DB wird später über eine .net Maske gesteuert, somit er-schwert es sich gleich auch.

MS Access unterstützt leider keine Trigger. Diese würden bei Inputs automatisch reagie-ren.
[..]

Schade, das ist es was ich gebraucht hätte.

Vielleicht werde ich es mit dem Update machen, vielleicht steige ich aber auch direkt auf einen SQL-Server um, würde mir später eh deutlich arbeit abnehmen + dort werden die Trigger ja unterstützt.

Muss ich wohl oder übel die andere Projektanbindung umschreiben ;)

Danke euch beiden

Ich wünsche euch noch einen schönen Tag.

Grüsse
Berger
 
Besteht für dich die Möglichkeit das auf Access 2010 umzuwandeln?

Hier gibt es sogenannte Datenmakros welche direkt in der Tabelle ausgeführt werden bzw. bei denen kann man hinterlegen was z.B. beim Update oder Insert in der Tabelle passieren soll.

Näheres dazu findest du hier.
 
Zurück