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
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
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
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
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
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... :-(
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
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!

