# [VBA] Access und Unterformular



## sabine (27. November 2009)

Hallo zusammen!

Seit Stunden sitze ich nun schon an diesem Problem und ich hoffe, jemand von euch kann mir weiterhelfen.

Und zwar:

Ich habe ein Access-Projekt angelegt und mehrer Formulare erstellt.
In einem der Fomulare existieren mehrer Kombinationsfelder und ein Unterformular.
Der Anwender kann in Abhängigkeit der gewählten Parameter einfluss auf die Abfrage nehmen. Dieser Teil funktioniert bereits einwandfrei. Nun möchte ich jedoch, mit den Resultaten der Abfrage weiterarbeiten bzw. in einer neuen Spalte zum Beispiel einen Differenzbetrag darstellen lassen. Wie kann man nun auf das erhaltene Datenset zugreifen?

Eine andere Möglichkeit wäre noch, nach absetzen des SQL-Statements die komplette Tabelle zu durchlaufen, die Zellen auslesen, den Wert berechnen lassen und in eine neue Tabellenspalte zu schreiben.
Wie kann man eine Tabelle in einem Unterformular Zeile für Zeile durchlaufen und die einzelnen Zellen abfragen?

Für eure Hilfe bin ich jetzt schon dankbar.

Liebe Grüße, eure Sabine!


----------



## Yaslaw (27. November 2009)

Auf das Unterformular kannst du wie folgt zgreifen


```
Me.[NameDesUnterformularElementsImHaubtformular].Form
```

Ich habe mein Testeleemnt Subform1 genannt.


```
Private Sub Command1_Click()
    MsgBox Me.SubForm1.Form.RecordSource
    
    Dim rs As Recordset
    Set rs = Me.SubForm1.Form.Recordset
    
    MsgBox rs.RecordCount
End Sub
```

Soviel zum Zugriff auf das Unterformular.

Den Rest deiner Frage habe ich leider nicht verstanden


----------



## sabine (27. November 2009)

Hallo Yaslaw,

vielen Dank für deine schnelle Antwort.
Du hast recht, ich habe mich etwas ungenau ausgedrückt. Dennoch geht deine Antwort in die richtige Richtung.

Folgendes Beispiel:

Ich setzte ein SQL-Statement ab und erhalte als Antwort 10 Ergebnisse, die sofort in meinem Unterformular dargestellt werden.
Die Datensätze enthalten die Spalten Einkauf und Verkauf. Nun möchte ich für jeden Datensatz sofort die Differenz berechnen und ebenfalls in meinem Unterformular anzeigen lassen.

Wie kann ich diese Funktionalität realisieren? Wie erhalte ich direkt Zugriff auf eine Zelle meines Unterformulars (ist eine ganz normale Tabelle).?

Vielen Dank!!
Grüße, Sabine


----------



## Yaslaw (27. November 2009)

Das geht besser über ein SQL.

Erstelle eine Abfrage (oder wie heisst View im deutschen Access?) in der folgenden Art:

```
SELECT 
    *,
    [Einkauf] - [Verkauf] AS Differenz
FROM [myTaeble]
```
Anschliessend nimmst du diese Abfrage als Quelle für das Unterformular anstelle der Tabelle.


----------



## sabine (27. November 2009)

Klasse Yaslaw!!
Das ist exakt das, was ich suchte, doch ein Problem besteht noch immer...

Ich erstelle ja ein Unterformular mit vordefinierten Spalten (nutze den Assistenten und wähle eine Tabelle aus, welche im Unterformular dargestellt wird).
Wie bekomme ich es nun hin, dass diese zusätzliche Spalte erstellt bzw. an die aktuelle Tabellenübersicht angehängt wird?

Noch einmal vielen Dank für deine hilfreichen Tipps!!

Sabine!


----------



## Yaslaw (27. November 2009)

Wähle beim Assistenten nicht die Tabelle aus sondern die Abfrage.

Du kannst die Spalte auch von Hand hinzufügen, dazu musst du das Formular zum bearbeiten öffnen. Ja nach Access Version gibt es an unterschiedlichen Orten eine Felder-Liste (die kann man irgenwie einblenden). Von dort das Feld aufs Formular ziehen. Anleitungen dazu sollte es im Netz einige geben (oder die Access-Hilfe zu rate ziehen)


----------



## sabine (28. November 2009)

Hallo,

bitte entschuldige meine späte Antwort. Ich werde versuche, deine Tipps heute oder morgen in die Tat umzusetzen. Über Erfolg bzw. Misserfolg werden ich berichten 

Liebe Grüße, Sabine


----------

