Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Unterbericht leer

Begonnen von doedelberlin, August 19, 2010, 16:07:51

⏪ vorheriges - nächstes ⏩

doedelberlin

Ich habe in Access 2007 einen Bericht mit einem Unterbericht erstellt.

Wenn die verknüpften Felder verschiedene Namen haben (Verknüpfen nach = "ID" , Verknüpfen von = "tbl1_ID"), dann wir der Bericht in der Berichtsansicht zwar korrekt angezeigt, in der Seitenansicht aber ist der UB leer.
Die zugrundeliegenden Tabellen sind über die o.g. Felder verknüpft, das funktioniert auch.

Wenn man die Namen angleicht, so funktioniert auch die Anzeige des UB in der Seiten ansicht.

Ich habe gelesen, dass die Namen der verknüpften Felder nicht gleich sein müssen.
Ich habe auch schon einiges probiert (UB basiert auf Tabelle | Query, neue DB erstellt, Namen gleich =>ok =>geändert => nicht ok => zurückgeändert => wieder ok, ...)

Gibt es dafür Erklärungen?

Stefan

doedelberlin

Ich will das ganze nochmal genauer beschreiben, da ich jetzt alle (?) möglichen
Varianten getestet habe und nicht mehr richtig weiter weiss.

Ich habe zwei Tabellen

Haupttabelle
Tabelle: tbl1
Feld: tbl1_ID, Replikations-ID, PK
Feld: Feld1, Text

Detailtabelle
Tabelle: tbl2
Feld: ID, Long Integer, PK
Feld: tbl1_ID, Replikations-ID, RowSource=SELECT [tbl1].[tbl1_ID] FROM [tbl1];
Feld: Feld2, Text

Unterbericht
Bericht: subrpt2
RecordSource=SELECT [tbl2].[tbl1_ID], [tbl2].[Feld2]  FROM [tbl2];

Hauptbericht
Bericht: rpt1
RecordSource=tbl1
Unterformular/-bericht= subrpt2
SourceObject=           Bericht.subrpt2
LinkChildFields=        tbl1_ID
LinkMasterFields=       tbl1_ID

Wenn also LinkChild und LinkMaster die gleichen Namen haben, funktioniert alles.

Wenn ich in tbl1 den PK "tbl_ID" in "ID" umbenenne passiert folgendes:
- Die Tabellen funktionieren weiterhin, Access ändert die Namen (z.B. in tbl2.tbl1_ID.RecordSource) automatisch.
- Im rpt1 ändert sich LinkMasterFields=ID, LinkChildFields bleibt so. - auch ok.
- In der Berichtsansicht von rpt1 wird der UB subrpt2 korrekt angezeigt, d.h. für jeden
  Datensatz in tbl1 werden in UB nur die zugehörigen Datensätze aus tbl2 angezeigt.
- In der Seitenansicht sind aber dann die UB leer.
Am Vorgang des Umbenennens liegt es nicht. Der gleiche Effekt tritt auf, wenn die
Tabellen von Anfang an mit den o.g. Namen angelegt werden.

Vermutungen:
1) LinkChild und LinkMaster müssen die gleichen Namen haben.
=> nicht bestätigt: Namen in den Tabellen so geändert, dass
LinkChildFields=        tbl1X
LinkMasterFields=       tbl1_ID
=> UB werden korrekt angezeigt

2) tbl1.ID kommt in Konflikt mit tbl2.ID
Wenn also in tbl1 der PK "ID" heisst, dann ist in rpt1
LinkChildFields=        tbl1_ID
LinkMasterFields=       ID (damit ist tbl1.ID gemeint, kommt aber evtl. in Konflikt mit tbl2.ID)

Es scheint also so zu sein, dass es in tbl1 und tbl2 nicht zwei Felder mit gleichem Namen geben darf.
Ist aber irgendwie unverständlich:
1. Tabellen, Beziehungen, Abfragen funktionieren einwandfrei auch mit gleichen Namen.
2. Ich habe auch andere Tabellen und Reports, wo das funktioniert.
3. Im UB subrpt2 wird das Feld tbl2.ID gar nicht abgefragt.

3) Kann es auch etwas mit den Seiteneinstellungen zu tun haben ?

Stefan

doedelberlin

Ich habe die Lösung gefunden:

http://support.microsoft.com/kb/824641/en-us?fr=1

"Article ID: 824641 - Last Review: August 29, 2006 - Revision: 1.5
No data appears in a subreport when the subreport is linked by an AutoNumber field with the Field Size property set to Replication ID"

Ich habe den 2.Workaround ausprobiert:
Die Berichte/Unterberichte basieren auf Abfragen (nicht mehr direkt auf den Tabellen).
In den Abfragen habe ich die ID in einen String konvertiert.

SELECT CStr([tbl1].[tbl1_ID]) AS strtbl1_ID FROM [tbl1];

Das muss dann in den entsprechenden Feldern angepasst werden
(statt tbl1_ID => strtbl1_ID), ebenso in den LinkChild und LinkMaster Feldern.

Zu beachten ist noch, dass dieses gelinkte Feld im Hauptbericht anders heissen muss, als in den Unterberichten, also z.B. strtbl1_ID (HB) und strtbl1ID (UB).
Komisch, aber nun ja. So geht's.

Stefan