Neuigkeiten:

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

Mobiles Hauptmenü

For/Next Haupt- und Unterformular

Begonnen von guenterp, Februar 15, 2016, 09:23:17

⏪ vorheriges - nächstes ⏩

guenterp

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

MzKlMu

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 ?
Gruß Klaus

DF6GL

Hallo,

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

http://www.donkarl.com/?FAQ4.2
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

guenterp

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

MzKlMu

Hallo,
das kannst Du ohne einen Buchstaben VBA Code direkt in einer Abfrage rechnen.
Gruß Klaus

guenterp

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

DF6GL

Hallo,

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

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

guenterp

Hallo,

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

Danke & VG
Günter

MaggieMay

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.
Freundliche Grüße
MaggieMay

guenterp

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

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access