Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: guenterp am Februar 15, 2016, 09:23:17

Titel: For/Next Haupt- und Unterformular
Beitrag von: guenterp am Februar 15, 2016, 09:23:17
Guten Morgen,

mit diesem Code führe ich per Knopfdruck Berechnungen in allen Datensätzen im Hauptformular durch.
Wie springe ich nun in das Unterformular ab?
d.h. erster Datensatz Hauptformular, alle Daten des Unterformulars durchlaufen, nächster Datensatz im Hauptformular, ...

Private Sub ...()

     Dim i As Long
     Dim t As Long
     Dim dbs As DAO.Database, Rst As DAO.Recordset

Set dbs = CurrentDb
Set Rst = Me.Recordset

     DoCmd.GoToRecord , , acFirst
     t = Me.Recordset.RecordCount

         For i = 1 To t
             "Auslesen von Feldern im Hauptformular, die ich zur Berechnung im UF benötige"
             [color=red]"Wie springe ich hier zu den Daten im Unterformular ab?"[/color]
             Rst.MoveNext
         Next i
End Sub


Danke & VG
Güntre
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: MzKlMu am Februar 15, 2016, 09:43:59
Hallo,
im Regelfall macht man datensatzbezogene Berechnungen in Abfragen.
Dann braucht es keinen Code.
Was berechnest Du denn und wie hängen Hafo und Ufo zusammen ?
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: DF6GL am Februar 15, 2016, 10:17:16
Hallo,

Zitat"Wie springe ich hier zu den Daten im Unterformular ab?"

http://www.donkarl.com/?FAQ4.2
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: guenterp am Februar 15, 2016, 10:18:05
Hallo,

Beziehung 1:n mit ref. Integrität

Hauptformular:
Kunde
Filiale
EUR
Std pro Filiale

Unterformular:
Datum
Mitarbeiter
Stunden
Stundenlohn

Berechnung UF:
Die EUR aus dem HF auf alle Mitarbeiter im UF in Abhängigkeit von deren Stundenlohn und Stundenanzahl und der Summe aller Std pro Filiale aufteilen;
es kann vorkommen, dass zu einem Kunden/Filiale mehrere Datensätze vorhanden sind, da untersch. Tätigkeiten mit untersch. Mitarbeitern durchgeführt wurden,
d.h. die Summe der Std pro Filiale bestehen dann aus mehreren Datensätzen (es kann nicht die Stundensumme aus dem UF verwendet werden).

VG
Günter
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: MzKlMu am Februar 15, 2016, 10:41:27
Hallo,
das kannst Du ohne einen Buchstaben VBA Code direkt in einer Abfrage rechnen.
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: guenterp am Februar 15, 2016, 12:59:07
Hallo,

d.h. ich habe eine Abfrage, die auf dem Datensatz im UF steht.
Zusätzlich müsste ich in Abhängigkeit von Monat/Jahr den Stundensatz aus einer anderen Tabelle lesen und die Gesamtstunden nochmals aus einer anderen Abfrage lesen, also mind. 2 Abfragen in einer ...
Da erscheint mir der Weg über VBA übersichtlicher.
Dann stehe ich wieder am Anfang meiner Frage ...

Wie muss ich den Code erweitern, um auf die Daten des UF zu kommen? (evtl. in grün?)
Private Sub ...()

     Dim i As Long
     Dim t As Long
     [color=green]Dim i1 As Long[/color]
     [color=green]Dim t1 As Long[/color]
     Dim dbs As DAO.Database, Rst As DAO.Recordset, [color=green]Rst1 As DAO.Recordset[/color]

Set dbs = CurrentDb
Set Rst = Me.Recordset
[color=green]Set Rst1 = Me!Unterformular.Form.RecordSet[/color]

     DoCmd.GoToRecord , , acFirst
     t = Me.Recordset.RecordCount

         For i = 1 To t
             "Auslesen von Feldern im Hauptformular, die ich zur Berechnung im UF benötige"
             [color=green]t1 = Me!Unterformular.Recordset.RecordCount[/color]
[color=red]"wie springe ich jetzt auf den ersten Datensatz im UF?"[/color]
[color=green]For i1 = 1 to t1[/color]
[color=green]Berechnung[/color]
[color=green]Rst1.MoveNext[/color]
[color=green]Next i1[/color]
             Rst.MoveNext
         Next i
End Sub


VG
Günter
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: DF6GL am Februar 15, 2016, 13:02:07
Hallo,

ich habe Dir doch einen Link gepostet, der genau Deine Frage beantwortet.... Oder wo ist dann das Problem?    ::)

Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: guenterp am Februar 15, 2016, 13:35:16
Hallo,

mein Problem ist, wie ich den Bezug (wie in dem Link von Dir) in meinem Code (der Schleife) einbaue.

Danke & VG
Günter
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: MaggieMay am Februar 15, 2016, 13:54:58
Hallo,

das Durchlaufen der Datensätze macht mAn keinen Sinn, da du es tatsächlich "physisch" (=sichtbar) tun müsstest, damit die Datensätze im UF sich durch den Datensatzwechsel im HF aktualisieren. Ein einmaliges Initialisieren von rst1 ist demnach nutzlos, das müsste schon in der Schleife passieren. Hinzu kommt, dass Datensätze im Ufo zusammengefast werden müssen, wenn sie zur selben Firma gehören. Ich denke, hier müsste eine andere Lösung gewählt werden, für einen konkreten Vorschlag fehlen jedoch die Detailkenntnisse.
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: guenterp am Februar 15, 2016, 14:20:49
Hallo,

das Durchlaufen macht Sinn, denn mein Ziel ist es, den errechneten Wert in die Tabelle zu schreiben (auch wenn es nicht die feine Art ist) und auch im Unterformular anzuzeigen.
Somit muss nur einmal im Monat, oder bei Änderungen, die Aktualisierung durchgeführt werden.
Ich möchte vermeiden, anschl. in div. Berichten jedesmal den Wert zu ermittlen.

VG
Günter
Titel: Re: For/Next Haupt- und Unterformular
Beitrag von: DF6GL am Februar 15, 2016, 14:38:25
Hallo,

um es auch mal deutlich zu sagen: dieses Konzept ist Quatsch....

Lagere die Berechnung in eine Public Function aus, dann kann diese Funktion überall dort aufgerufen werden, wo sie gerade gebraucht wird.