Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Access, Haupt- und Unterformular

Forumthread: VBA Access, Haupt- und Unterformular

VBA Access, Haupt- und Unterformular
12.05.2018 17:01:59
Weichold
So habe ein Hauptformular, in dem die Berechnung durch geführt werden soll. Anhand der ID des aktuellen Datensatzes und einem zweitem Kriterium, soll er zählen, wie häufig die Datensätze in einer anderen Tabelle, die im Unterformular angezeigt wird, vorkommen. Ich habe es folgendermaßen probiert:
Me.TXT_Ausgabe = DCount("*", "tbl_XYZ", "[SpalteTier] = 'Maus' & "And [Tier-ID] = Me.CurrentRecord") 
TXT_Ausgabe > Textfeld im Hauptformular
tbl_XYZ > Tabelle, in der das Unterformular abspeichert
Tier-ID > ist eine Spalte von tbl_xyz, wobei diese identisch sein soll, mit der ID des aktuellen Datensatzes (vom Hauptformular)
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Die Kommunikation
12.05.2018 19:13:55
Weichold
Die Ausgabe bringt immer eine Fehlermeldung, dass Datentypen unverträglich sind, scheinbar ist die Syntax falsch
AW: VBA Access, Haupt- und Unterformular
12.05.2018 19:21:46
Sepp
Hallo Weichold, <-- Das ist eine Anrede!
das muss wahrscheinlich so lauten.
Me.TXT_Ausgabe = DCount("*", "tbl_XYZ", "[SpalteTier] = 'Maus' And [Tier-ID] = " & Me.CurrentRecord)

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Ohne die Funktion 'DCount()' zu kennen, kann man dazu nicht mehr sagen.
Es folgt ein Gruß!
 ABCDEF
1Gruß Sepp
2
3

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für Haupt- und Unterformulare in Access


Schritt-für-Schritt-Anleitung

  1. Öffne dein Hauptformular in Access, in dem du die Berechnung durchführen möchtest.

  2. Füge ein Textfeld (z.B. TXT_Ausgabe) hinzu, um das Ergebnis der Berechnung anzuzeigen.

  3. Erstelle ein Unterformular, das die Daten aus deiner Tabelle (z.B. tbl_XYZ) anzeigt.

  4. Verwende den folgenden VBA-Code, um die Anzahl der Datensätze zu zählen, die einem bestimmten Kriterium entsprechen:

    Me.TXT_Ausgabe = DCount("*", "tbl_XYZ", "[SpalteTier] = 'Maus' And [Tier-ID] = " & Me.CurrentRecord)
  5. Setze diesen Code in das Ereignis ein, das die Berechnung auslösen soll, z.B. beim Laden des Hauptformulars oder beim Ändern eines Feldes.


Häufige Fehler und Lösungen

  • Fehlermeldung: Datentypen unverträglich

    • Stelle sicher, dass der Datentyp der Tier-ID im tbl_XYZ mit dem Datentyp der CurrentRecord übereinstimmt. Eine häufige Ursache für diesen Fehler ist, dass eine Zahl als Text behandelt wird.
  • Syntaxfehler

    • Achte darauf, dass die Anführungszeichen und Operatoren korrekt gesetzt sind. Der richtige Code sollte wie folgt aussehen:
    Me.TXT_Ausgabe = DCount("*", "tbl_XYZ", "[SpalteTier] = 'Maus' And [Tier-ID] = " & Me.CurrentRecord)

Alternative Methoden

  • Verwendung von SQL-Abfragen: Alternativ kannst du auch SQL-Abfragen verwenden, um die Anzahl der Datensätze zu zählen. Diese Methode kann flexibler sein, wenn du komplexe Abfragen durchführen möchtest.

    SELECT COUNT(*) FROM tbl_XYZ WHERE SpalteTier = 'Maus' AND [Tier-ID] = [Forms]![DeinHauptformular]![Tier-ID]
  • DLookup-Funktion: Eine andere Möglichkeit ist die Verwendung von DLookup, um spezifische Werte zu suchen und zu zählen.


Praktische Beispiele

  1. Zählen von Tieren in einem Unterformular:

    • Wenn du beispielsweise die Anzahl von Hunden statt Mäusen zählen möchtest, ändere die Bedingung im DCount:
    Me.TXT_Ausgabe = DCount("*", "tbl_XYZ", "[SpalteTier] = 'Hund' And [Tier-ID] = " & Me.CurrentRecord)
  2. Aktualisieren eines Unterformulars:

    • Um ein Unterformular zu aktualisieren, kannst du den folgenden Befehl verwenden:
    Me.UnterformularName.Requery

Tipps für Profis

  • Verwende Debugging: Nutze die Debugging-Tools in VBA, um Fehler zu identifizieren und zu beheben. Das Setzen von Haltepunkten kann dir helfen, den Code Schritt für Schritt zu durchlaufen.

  • Optimierung der Performance: Wenn dein Unterformular sehr viele Datensätze enthält, kann die Performance leiden. Achte darauf, nur die notwendigen Daten zu laden und versuche, Filter anzuwenden.

  • Formularereignisse: Überlege, welches Ereignis für die Berechnung am besten geeignet ist. Manchmal ist es besser, die Berechnung beim Ändern eines spezifischen Feldes auszulösen, anstatt beim Laden des gesamten Formulars.


FAQ: Häufige Fragen

1. Wie kann ich das Unterformular aktualisieren, wenn sich die Daten im Hauptformular ändern? Du kannst das Unterformular mit Me.UnterformularName.Requery aktualisieren, um die neuesten Daten anzuzeigen.

2. Was ist der Unterschied zwischen DCount und DLookup? DCount zählt die Anzahl der Datensätze, die einem bestimmten Kriterium entsprechen, während DLookup einen einzelnen Wert zurückgibt, der einem Kriterium entspricht.

3. Wie kann ich mehrere Bedingungen in DCount verwenden? Du kannst mehrere Bedingungen durch die Verwendung von And oder Or im dritten Parameter von DCount kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige