Access Bericht mit Beziehung

Hallo liebe Helfer,

ich habe in meiner Access Datenbank jeweils einem Hersteller mehrere Branchen zugeordnet. Eine Branche kann aber auch mehreren Hersteller haben Diese sind in zwei verschiedenen Tabellen eingetragen und durch eine Dritte und entsprechende IDs miteinander verbunden. Ich möchte nun in einem Bericht die Hersteller und deren Branchen darstellen, allerdings nicht als Liste, deshalb kommt ein Formular nicht in Frage, sondern nur durch Kommas getrennt. Ich habe auch bereits im Internet einen Vorschlag gefunden und den Code auf meine Tabellen angepasst. Es tut sich aber leider gar nichts bei der Ausführung, nicht mal eine Fehlermeldung!

Das ist mein Code: (als Ereignisprozedur im Detailbereich des Berichts)
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)

Dim db As DAO.Database

Dim rst As DAO.Recordset

Dim str As String

Set db = CurrentDb

Set rst = db.OpenRecordset("SELECT Branche FROM Branchen WHERE [WettbewerberNr] = " & Me.WettbewerberNr, dbOpenDynaset)

Do While Not rst.EOF

str = str & rst!Branche & ", "

rst.MoveNext

Loop

If Len(str) > 0 Then

str = Left(str, Len(Trim(str)) - 1)

End If

Me.Text68 = str

End Sub

Ich bin für jede Hilfe dankbar, da ich leider noch nie vorher in Visual Basic gearbeitet habe und damit nun in meiner Wekstudentenjob konfrontiert werde.

Vielen Dank,
Maria

also in der Überschrift sollte eigentlich n:m Beziehung stehen, das fehlt leider auf einmal!Entschuldigt!

Moin, Maria,

vor dem Do While könnte ein rst.MoveFirst weiterhelfen.

Gruß Ralf

Hallo Ralf,

vielen Dank für die schnelle Hilfe, aber es tut sich leider immer noch nichts.

Kann denn irgendetwas in meinen Einstellungen oder so falsch sein!?

Gruß
Maria

Moin Moin,

das wird nicht funktionieren, da du versuchst, während der Ausgabe gewisse Werte gravierend zu beeinflussen.

Einfacher, schneller und problemloser geht es mit einer entsprechenden Abfrage, die du als Basis für den Bericht nutzt.

Deinen Code wandelst du als Funktion um und gibst den erstellten Text als Rückgabewert an ein Dummy-Feld der Abfrage zurück. Da musst du nicht viel ändern. Wichtig ist nur, dass der Code in einem Modul steht und nicht im Bericht.

Vorschlag:
aus „Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)“ wird
Public Function Hersteller_Branche(xWettbewerberNr)

Hier muss dann noch die Variable xWettbewerberNr angepasst werden:
Set rst = db.OpenRecordset("SELECT Branche FROM Branchen WHERE [WettbewerberNr] = " & xWettbewerberNr, dbOpenDynaset)

aus „Me.Text68 = str“
wird dann:
Hersteller_Branche = str 'Bezeichnung der Function für die Rückgabe
End Function

Wobei „str“ nicht glücklich gewählt ist, da es ein reserviertes Wort in Access ist. Du solltest es umbenennen in z.B. Rückgabe_TXT.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hi,

wie ist dein Datanbankfeld WettbewerberNr definiert?

wenn TEXT dann hilft ein einschliessen in ’

db.OpenRecordset(„SELECT Branche FROM Branchen WHERE [WettbewerberNr] = '“ & Me.WettbewerberNr & „’“,dbOpenDynaset)

Tschau
Peter

Moin, Maria,

Kann denn irgendetwas in meinen Einstellungen oder so falsch
sein!?

eher nicht. Sowas passiert schon mal, wenn die Datentypen nicht zusammenpassen - falls Branchen.WettbewerberNr nicht numerisch ist, wird die Query nie einen Match zu Me!WettbewerberNr finden.

Gruß Ralf

Entschuldigt bitte, aber ich konnte in den letzten Tagen leider nicht an meiner Datenbank arbeiten. Ich bin aber schon dabei, all eure Tipps zu probieren. Vielen Dank schon mal!

Nein die WettbewerberNr ist vom typ „AutoWert“, ich habe deinen Typ trotzdem mal versucht, hilft aber leider nicht! trotzdem vielen Dank!