Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Datensätze aus 2 Tabelle, bei denen alle Werte übereinstimmen





Frage

Hallo, ich habe Datensätze in 2 Tabellen vorliegen a) user_id; folder_id 2; 23 2; 24 3; 23 usw. b) cluster_id; folder_id 1; 23 1; 24 2; 34 2; 35 usw. Ziel: user_id cluster_id Ein cluster umfaßt also mehrere Folder. Und ein User hat Rechte auf mehrere Folder. Den Usern sollen jetzt die entsprechende Cluster zugeordnet werden in einer neuen Tabelle. Allerdings nur dann, wenn er auch die Rechte für ALLE Folder des Clusters besitzt. D.h. user_id 2 bekommt Cluster_id 1, aber user_id 3 bekommt cluster_id 1 nicht zugeordnet. Kann mir hier jmd. weiterhelfen? Vielen Dank!!!

Antwort 1 von Teddy

Das ist m.E. nur mit VBA-Programmierung möglich.

Soll die Clusterzuordnung einmalig erfolgen, oder soll jeweils aktuell geprüft werden ?

Gruß
Teddy

Antwort 2 von oliverV

Hallo,

die gleiche Frage wie Teddy möchte ich auch stellen, ob die Zuordnung einmalig ist, darüber hinaus, sag mal wie viel user_id’s du hast.
Ich habe da einen Gedanken, wie man das Problem mit mehreren Aktionsabfragen lösen könnte, allerdings muss jeder User einzeln angesprochen werden, daher sollte es eine „überschaubare“ Useranzahl sein.

Gruß

Oliver


Antwort 3 von sim

Ich muß diese Zuordnung leider mehrmals durchführen, da sich vermutlich noch etwas ändert in den nächsten Wochen.

Tabelle a) hat ca. 500.000 Datensätze
ca. 2.000 verschiedene User_ids

Tabelle b) hat ca. 500 Datensätze
ca. 50 verschiedene cluster_ids


Viele Grüße und vielen Dank

Simone

Antwort 4 von Teddy

Hallo Simone !
Ich glaube damit hat sich Olivers "Fummel"-Vorhaben erledigt.

Wie fit bist Du denn in VBA ?

Es gibt zwei Möglichkeiten:
a) Man macht eine function, der man den User übergibt und die zugelassenen Cluster zurückbekommt

a2) man übergibt der Function User und Cluster und bekommt "ok" zurück, oder "nee".

b) Man legt auf einer Form einen Button an, der bei klick die User/Cluster-Tabelle löscht und neu aufbaut.

Gruß
Teddy

Antwort 5 von oliverV

Teddy sagt es schon, ich klinke mich hier erstmal aus.

Gruß und schönes WE

Oliver


Antwort 6 von sim

Danke, erst einmal so weit.

Ich befürchte, ich bin bisher noch nicht so fit in VBA Ich habe es mal versucht, aber... :-(

Antwort 7 von Teddy

Hallo Simone !

Ein paar Anregungen kann ich noch kostenlos geben :
dim itab (1 to 100) as integer
dim i1 as integer
dim xuser as integer
dim ktab2 as string
Dim ttab1 As DAO.Recordset
Set ttab1 = CurrentDb.OpenRecordset("Select * from tblUser order by user_id", dbOpenDynaset)
Dim ttab2 As DAO.Recordset
Set ttab2 = CurrentDb.OpenRecordset("Select * from tblCluster", dbOpenDynaset)
Dim ttab3 As DAO.Recordset
Set ttab3 = CurrentDb.OpenRecordset("Select * from tblZulassung", dbOpenDynaset)
xuser = 0
i1 = 1
ttab1.MoveFirst
Do Until ttab1.EOF
if xuser = 0 then
xuser = ttab1!user_id
end if
if xuser = ttab1!user_id then
i1 = i1 + 1
itab(i1) = ttab1!folder_id
else
...........hier die zugelassenen Cluster prüfen
...........und die Zulassungen schreiben
...........mit ttab3.addnew
........... ttab3!user_id = xuser
...........usw.
........... ttab3.update
end if
ttab1.MoveNext
Loop

ttab1.close
Set ttab1 = Nothing
ttab2.close
Set ttab2 = Nothing
ttab3.close
Set ttab3 = Nothing

Gruß
Teddy

Antwort 8 von sim

Vielen Dank für die Hilfe!