Access - Daten eingeben in Unterformular

Hallo zusammen,

ich habe zwei Tabellen (A und B), deren Primärschlüssel verknüpft sind zu einer Tabelle C.
Weiter habe ich ein Formular mit einem Unterformular. Das Formular selber stellt die Daten aus Tabelle A dar, das Unterformular basiert auf den Daten aus Tabelle C und zeigt die entsprechenden Informationen aus Tabelle B an.
Also, z.B. Tabelle A: Regalbretter, Tabelle B: Bücher, Tabelle C ordnet die Bücher in die entsprechenden Regalbretter.
Über das Formular kann ich die Bretter durchblättern, möchte nun aber in dem Unterformular (das mir alle dort befindlichen Bücher anzeigt) die Daten in die Tabelle C eingeben.
Ich erhalte leider immer den Fehler:

Das Objekt enthält nicht das Automatisierungsobjekt ‚Class‘.

Wenn ich die Meldung dann einfach wegklicke, ist aber alles, wie ich es will: Die daten sind eingegeben und ich kann weiter eingeben.

Was mache ich falsch? Wie bekomme ich diese nervige Meldung weg?
Ach ja: Sie kommt übrigens auch nur beim Eingeben von neuen Daten, nicht beim Ändern von bereits eingetragenen Daten.

Ich nutze Access 2003.

Lieben Gruß und vielen Dank für Hilfe!

Manatu

Hallo Manatu,

Ich erhalte leider immer den Fehler:
Das Objekt enthält nicht das Automatisierungsobjekt ‚Class‘.

ist das die vollständige Fehlermeldung?

Was mache ich falsch? Wie bekomme ich diese nervige Meldung
weg?

Welche VBA Funktion wird ausgeführt, wenn neue Daten hinzugefügt werden?

Wie sind die Formulare miteinander verknüpft?

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Hallo Netwolf,

Ich erhalte leider immer den Fehler:
Das Objekt enthält nicht das Automatisierungsobjekt ‚Class‘.

ist das die vollständige Fehlermeldung?

Nein, aber in dem Weiteren steht nichts, was die Sache erhellt:
Sie haben versucht, eine Visual Basic-Prozedur auszuführen, um eine Eigenschaft oder Methode eines Objekts einzustellen, die Komponente stellt jedoch die Eigenschaft bzw. Methode nicht für Automatisierungsvorgänge zur Verfügung.
Prüfen Sie anhand der Dokumentation der Komponente, welche Eigenschaften und Methoden sie für Automatisierungsvorgänge bereitstellt.

Das Problem ist halt, dass ich gar nicht weiß, welches Objekt ich verwende und welche Methode oder Eigenschaft ich versuche aufzurufen bzw. zu verwenden.

Was mache ich falsch? Wie bekomme ich diese nervige Meldung
weg?

Welche VBA Funktion wird ausgeführt, wenn neue Daten
hinzugefügt werden?

Weiß ich ja nicht. Explizit rufe ich gar keine auf. Das Unterformular ist als Datenblatt angezeigt und ich gebe da einfach in den neuen Datensatz die neuen Daten ein. Dabei entsteht der Fehler.

Wie sind die Formulare miteinander verknüpft?

Genau wie die Tabellen: Der Primärschlüssel der einen Tabelle (A) ist auf das entsprechende Feld in der Tabelle C gelinkt. In dem Unterformular gibt es dann genau ein Feld für dieses Feld aus Tabelle C, damit der Datensatz für die Tabelle C vollständig ist (das Feld, das auf den Primärschlüssel von Tabelle B gelinkt ist, gebe ich ja selbst ein).

Vielen Dank aber, dass du dich damit beschäftigst! Ich weiß leider immer noch nicht weiter, obwohl ich schon in mehreren Foren gepostet habe …

Grüße aus Raben Steinfeld (bei Schwerin)

Gruß zurück aus Jülich zwischen Aachen und Köln :smile:

Sebastian
(Manatu)

Hallo Sebastian,

Nein, aber in dem Weiteren steht nichts, was die Sache
erhellt:

Weiß ich ja nicht. Explizit rufe ich gar keine auf. Das
Unterformular ist als Datenblatt angezeigt und ich gebe da
einfach in den neuen Datensatz die neuen Daten ein. Dabei
entsteht der Fehler.

ok, dann gibt es beim Unterformular ein Ereignis, das eine VBA-Funktion/Prozedur aufruft, prüfe das bitte mal nach.

Wie sind die Formulare miteinander verknüpft?

Genau wie die Tabellen: Der Primärschlüssel der einen Tabelle
(A) ist auf das entsprechende Feld in der Tabelle C gelinkt.

ähm, nein, so kann das nicht sein mit einem Link, in den Unterformular-Eigenschaften werden die Verbindungen festgelegt.

In dem Unterformular gibt es dann genau ein Feld für dieses
Feld aus Tabelle C, damit der Datensatz für die Tabelle C
vollständig ist (das Feld, das auf den Primärschlüssel von
Tabelle B gelinkt ist, gebe ich ja selbst ein).

ups, das könnte den Fehler verursachen. Normaler Weise gibt es ein ID-Feld in Tabelle A, das wird mit einem ID-Feld der anderen Tabelle verbunden. Eine Eingabe sollte da nicht erfolgen.

Beispiel:

Tabelle (A)
ID_TAB_A (Autowert)(P-Key)
Info1
Info2
usw.

Tabelle (B)
ID_TAB_B (Autowert)(P-Key)
ID_TAB_A Zahl
Info1
Info2
usw.

Tabelle ©
ID_TAB_C (Autowert)(P-Key)
ID_TAB_A Zahl
Info1
Info2
usw.

Eine Beziehung baust du dann zwischen:
ID_TAB_A (Tabelle A) und ID_TAB_A (Tabelle B)
und
ID_TAB_A (Tabelle A) und ID_TAB_A (Tabelle C)
auf.

Alternativ, wenn’s so sein sollte(?):
ID_TAB_B (Tabelle B) und ID_TAB_B (Tabelle C)
dafür muss aber noch das Feld in C angelegt werden!!

Ebenso (über diese Felder) verbindest du das Hauptformular mit den entsprechenden Unterformularen.

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Hallo Wolfgang,

ok, dann gibt es beim Unterformular ein Ereignis, das eine
VBA-Funktion/Prozedur aufruft, prüfe das bitte mal nach.

nein, gibt es nicht. Das ist ja gerade das Kuriose. Es gibt auch (zumindest nicht von mir angelegt) ein Objekt mit dem Namen ‚class‘.

ähm, nein, so kann das nicht sein mit einem Link, in den
Unterformular-Eigenschaften werden die Verbindungen
festgelegt.

Schon klar, es sind aber genau die Felder eingetragen, über die auch die Verknüpfung arbeitet. (siehe unten)

ups, das könnte den Fehler verursachen. Normaler Weise gibt es
ein ID-Feld in Tabelle A, das wird mit einem ID-Feld der
anderen Tabelle verbunden. Eine Eingabe sollte da nicht
erfolgen.

Missverständnis. Jetzt ganz konkret, es sieht fast so aus, wie du geschrieben hast:

Beispiel:

Tabelle (A)
ID_TAB_A (Autowert)(P-Key)
Info1
Info2
usw.

Tabelle (B)
ID_TAB_B (Autowert)(P-Key)
Info1
Info2
usw.

Tabelle ©
ID_TAB_C (Autowert)(P-Key)
ID_TAB_A Zahl
ID_TAB_B Zahl

Eine Beziehung habe ich zwischen:
ID_TAB_A (Tabelle A) und ID_TAB_A (Tabelle C)
und
ID_TAB_B (Tabelle B) und ID_TAB_B (Tabelle C)

Das Untterformular beinhaltet nun alle Felder aus Tabelle C, das Formular selbst die Felder aus Tabelle A. Verbunden sind die beiden Formulare über das Feld ID_TAB_A. Im Unterformular will ich nun Daten eingeben, die in Tabelle C gespeichert werden. Was ich eingeben möchte, sind natürlich nur Werte aus Tabelle B, für ID_TAB_A soll der entsprechende Wert aus dem Formular übernommen werden. Deshalb habe ich Felder mit folgenden Datenquellen im Unterformular:
[Tab_C]![ID_TAB_A] (verstecktes, nicht angezeigtes Feld)
[Tab_C]![ID_TAB_B] (hier gebe ich meine Daten ein)

Das Unterformular wird dann als Datenblatt angezeigt, so dass ich alle Einträge aus Tabelle B sehe (z.B. Bücher), die zu dem im Hauptformular angezeigten Eintrag von Tabelle A gehören (z.B. Regalbrett).
Funnktionen zu Ereignissen gibt es keine, jedenfalls keine, die ich eingetragen habe. Im Eigenschaften-Dialog werden keine Funktionen genannt, weder zum Unterformular, noch in den Formular-Eigenschaften des Unterformulars oder irgendeinem Steuerelement.

Einträge im Unterformular ändern ist überhaupt kein Problem, Daten löschen (also Bücher aus dem Regalbrett herausnehmen) funktioniert auch problemlos. Den genannten Fehler gibt es nur, wenn ich neue Daten in den neuen Datensatz eingebe. Bestätige ich den Fehler, so ist trotzdem alles richtig: Die Daten sind ordnungsgemäß, vollständig und korrekt in die Tabelle C eingetragen.
Ich möchte also nur, dass dieser Fehler nich ständig kommt. Erstens weiß ich nicht, wo er herkommt und zweitens kümmert er mich überhaupt nicht (denn es funktioniert ja trotzdem alles). Es nervt nur …

Ich hoffe, du kannst mir noch weiterhelfen. Ich bin leider noch keinen Schritt weiter.

Herzliche Grüße von der Rur (ohne ‚h‘)

Sebastian
(Manatu)

Hallo Sebastian,

Eine Beziehung habe ich zwischen:
ID_TAB_A (Tabelle A) und ID_TAB_A (Tabelle C)
und
ID_TAB_B (Tabelle B) und ID_TAB_B (Tabelle C)

ich vermute mal, dass das Problem darin begründet liegt:
Tabelle A = Raum
Tabelle B = Regeal
Tabelle C = Buch

Dann sollten die Beziehungen so aussehen, wie ich es schon beschrieben hatte:
ID_Tab_A zu ID_TAB A (in B)
und
ID_Tab_B zu ID_Tab_B (in C)

deine Beziehungen machen so keinen Sinn und führen vermutlich zu Inkonsistenzen die dann den Fehler verursachen.

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Hallo Wolfgang,

vielen Dank für deine Hilfe und Geduld. Einige deiner Anregungen habe ich aufgenommen und haben mich inspiriert, während ich die ganze Sache noch einmal gebastelt habe. Ich habe nämlich festgestellt, wenn ich eine Datenbank baue, eine neue, genau nach dem Muster, wie ich es in meinem letzten Beitrag geschrieben habe, dann klappt das.

Ich habe also Schritt für Schritt aus dieser neuen durch hinzufügen und umbenennen die Datenbank gemacht, die ich vorher hatte. Dabei habe ich nach mühsamer Arbeit tatsächlich den Fehler gefunden: Der Name von einem der Felder, über die das Unterformular mit dem Hauptformular verbunden ist, heißt genauso, wie eine Tabelle. Offenbar führte das zu einem Problem.

Einfaches Umbenennen des Feldes in der entsprechenden Tabelle löste das Problem auf wundersame Weise.

Grüße aus Raben Steinfeld (bei Schwerin)

Gruß zurück aus dem sonnigen Jülich (zwischen Aachen und Köln) und nochmal vielen Dank!

Sebastian
(Manatu)