Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Danke andyfau für die Antwort. Allerdings ist das nicht, was ich möchte. Also:Hallo wocoba,
schau Dir unter Access Hilfe mal das Thema Kreuztabellenabfrage an.
Vielen Dank Andreas für die Lösungsansätze. Da habe ich ja wohl was zu tun. Ich melde mich, wenn ich Hilfe brauche.Ich sehe das vorrangig als Formatieringsproblem. Eine entsprechende Kreuztabelle lässt sich zwar erstellen, enthält aber dann alle Vortragsnummern als Spaltenüberschriften und, wenn man z.B. die Funktion Anzahl nutzt, an den Kreuzungspunkten in den Zeilen mit Name und Wohnort eine 1, wenn der Vortrag beim dem Redner hinterlegt ist.
Eine Möglichkeit bietet Excel mit dem Transform-Befehl (Zeilen zu Spalten machen).
(Abfrage nach Excel exportieren und dort den Transform ausführen)
Ich würde aber eine Lösung in VBA bevorzugen.
- Nach Namen sortierte Abfrage mit Name, Wohnort und Vortragsnummer sequentiell lesen
- Solange nicht EOF oder neuer Name kommt, einen entspechenden String aufbauen
- Bei Gruppenwechsel Name, Wohnort und String in eine neue, temporäre Tabelle schreiben.
Die temporäre Tabelle dann als Datenquelle für den Report nutzen. (Sie muss natürlich bei jedem Lauf geleert und frisch neu aufgebaut werden.
Vielen Dank für die Beispieldatei. Sieht so aus, als wenn es das ist was ich möchte. Die Kreuztabelle habe ich in meiner DB umgesetzt und hat funktioniert. Jetzt muss ich nur noch die Funktion integrieren. Da tue ich mich ein wenig schwer.Ich habe es mal in einer MiniDB umgesetzt.
Schau es Dir mal an. Öffne das Modul Funktionen, gehe mit dem Curor auf die erste Zeile der Sub-Prozedur und drücke F5. Dann aktualisiert sich jeweils die Zwischentabelle. Den Bericht kannst Du dann per Doppelklick öffnen.
Was ist da nicht klar?Jetzt muss ich nur noch die Funktion integrieren. Da tue ich mich ein wenig schwer.
Private sub Mybutton_Click()
VortraegeinString() 'zuerst die Temptabelle füllen
DoCmd.OpenReport "rep_tblRednerVortraegestring" 'Report starten
End Sub
Die Kreuztabelle habe ich nur zur Verdeutlichung drin gelassen. Sie ist für die Funktion unbedeutend.
Wesentlich ist, dass Du Dir zuerst die Beziehungen der Tabellen anschaust. Zwischen die Tabellen Redner und Vortraege ist eine Kombitabelle geschaltet, in der die Kombinationen gepflegt werden. (Zwei 1:n Beziehungen, jeweils mit referentieller Integrität, ergeben dann die m:n-Beziehung
für die Kombinationen aus Redner und Vorträgen.)
Auch das ist aus meiner Sicht klar und gegeben.Weiterhin habe ich die Tabellen zwar mit Primärindizes (Autowert-IDs) angelegt, was die Verknüpfung in der m:n Tabelle vereinfacht.
Dazu sind für die Tabellen weitere eindeutige Indizes angelegt:
Name bei den Rednern, Vortragsnummer bei den Vorträgen und für die Kombinationstabelle ein kombinierter Schlüssel namens "RVKombi". (Nachzusehen, wenn Du in der Entwurfansicht der Tabelle tblRednerVortraege unter dem Reiter Entwurf "Indizes" anwählst.)
So verhindert Access perse die versehentliche Erfassung von doppelten Datensätzen und deren Kombinationen.
Normalerweise würde man nun ein Formular (Datenquelle dieselbe wie beim Report) anlegen um die Kombinationen zu pflegen.
Das hab ich mir gespart, weil ich davon ausgegangen bin, dass Du das bereits erledigt hast. Es ging Dir ja hauptsächlich um die Transformierung von Spalten nach Zeilen im Report.
Was ist da nicht klar?
Der Aufruf über ein Button ist auch klar.Du baust Dir einen Button für den Start des Reports in ein Formular. In diesem Fall brichtst Du aber nach dem ersten Schritt im Assistenten ab, öffnest die Eigenschaften des Buttons. Im Ereignis "Bei Klick" wählst du "Ereignisprozedur" und es öffnet sich der VBA Editor mit dem Prozedurrumpf. Dort hinein schreibst Du dann den Funktionsaufruf:
Code:Private sub Mybutton_Click() VortraegeinString() 'zuerst die Temptabelle füllen DoCmd.OpenReport "rep_tblRednerVortraegestring" 'Report starten End Sub
Ich wollte Dir nicht zu nahe treten. Seit Access 2.0 in 1993 gabs da schon einiges zu lernen.PS Alles was ich in Access gebaut habe und das war schon einiges, habe ich mir selbst und durch Hilfe beigebracht.
Sub VortraegeinString()Kannst Du mal den Code Deiner Funktion zeigen, dann kann ich mal schauen. Oder, Du kannst mal einen Stop am Anfang der Prozedur einbauen. Dann mit F8 im Einzelschritt debuggen. Dann siehst Du ja bei welcher Zeile er in den Error-Zweig abbiegt.
Ja, da war ich auch schon dabei.Ich wollte Dir nicht zu nahe treten. Seit Access 2.0 in 1993 gabs da schon einiges zu lernen.