Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Automatische Anzeige mit DomWert

Begonnen von Magixg23, August 27, 2010, 12:04:18

⏪ vorheriges - nächstes ⏩

Magixg23

Hallo zusammen,

ich habe ein Formular erstellt und möchte mir zusätzliche Informationen zu den Kunden anzeigen lassen (gesammte Bestellmenge o.ä.).

Access 2007

Ich nutze hierzu die Funktion DomWert oder DomSumme. Berechnet wird es auch richtig NUR....die Werte werden nicht automatisch angezeigt sondern erst nachdem ich in das Feld klicke...kann ich irgendwo die Berechnung/Anzeige erzwingen?

Danke für eure Ratschläge... ;D

Gruß
Tino

Kiui

Servus Tino,

meine Empfehlung hierzu: per VBA beim Öffnen bzw. Anzeigen des entsprechenden Formulars (so die Domwerte aus den Daten eines Unterformulars gebildet werden solllen, natürlich aus diesem Unterformular)...in VBA dann aber bitte mit den richtigen Ausdrücken (mit DomSumme oder DomWert funktionierts da nicht)

Bsp. für Code im "Beim Anzeigen"-Ereignis des Formulars:

Private Sub Form_Current()
Me.MeinFeld = DLookup("[Wert]","MeineTabelle")
End Sub

bzw.

Private Sub Form_Current()
Me.MeinFeld = DSum("[Wert]","MeineTabelle")
End Sub

...wobei "MeinFeld" das Feld in deinem Formular ist, in welchem die gewünschten Ergnisse angezeigt werden sollen; zu DSum und DLookup solltetst du per F1-Taste mal den Hilfetext anschauen; damit müsstest Du Dir dann den passenden Code zusammenstricken können.

Gruß aus Berlin
Pat
verwendete Access-Versionen: zumeist Access 2007 (gezwungenermaßen)

Kenntnisse VBA: passabel (find ich zumindest)
Kenntnisse SQL: naja...geht so

Sanner

Danke für die Antwort..werde das in der Form mal versuchen...hoffe ich bringe das zusammen. Ansonsten melde ich mich noch mal... ;D


database

#3
Hallo,

...wobei zu beachten ist, dass in den genannten Beispielen ...

Zitat
Private Sub Form_Current()
Me.MeinFeld = DLookup("[Wert]","MeineTabelle")
End Sub

bzw.

Private Sub Form_Current()
Me.MeinFeld = DSum("[Wert]","MeineTabelle")
End Sub


KEINE, wie auch immer geartete Einschränkung auf EINEN BESTIMMTEN Kunden realisiert ist!  :-\  ???

Der Code ...
Me.MeinFeld = DLookup("[Wert]","MeineTabelle")

...bringt in der Form lediglich den ersten Eintrag im Feld 'Wert' der Tabelle 'MeineTabelle' >:(

Me.MeinFeld = DSum("[Wert]","MeineTabelle")

...hingegen summiert ALLE Einträge im Feld 'Wert' der Tabelle 'MeineTabelle' >:(

In der Annahme, dass in einem bestimmten Feld auf deinem Formular die Kundennummer ersichtlich ist,
KANNST du den Code so abändern, dass nur Entsprechungen zur aktuell angezeigten Kundennummer geliefert werden:

In etwa so ...

If Not IsNull(Me!KDNR) Then
    Me.MeinFeld = DLookup("Wert","MeineTabelle","Kundennummer=" & Me!KDNR)
End If

bzw. ...

If Not IsNull(Me!KDNR) Then
    Me.MeinFeld = DSum("Wert","MeineTabelle","Kundennummer=" & Me!KDNR)
End If


...wenn in der Tabelle 'MeineTabelle' ein Feld namens 'Kundennummer' enthalten ist und das Kundennummer-Feld auf deinem Formular KDNR heißt.
Die If-Bedingungen sind von Vorteil um Fehlerausgaben zu vermeiden, wenn das Feld KDNR keinen Wert enthält.

Siehe zur Verwendung von DLookup / DSumm ... bitte auch in der Onlinehilfe von Access mit dem Suchbegriff 'Domänenaggregat' !

Da du in deiner Originalanfrage angegeben hast, DomWert und DomSumme zu verwenden, hast du die Datenherkunft der entsprechenden Felder im Entwurfsmodus auf diese so eingestellt und abeitest nicht mit der Zuweisung der Feldinhalte per VBA. Auch hier kannst du natürlich die Einschränkungen bekanntgeben indem du die Datenherkunft wie folgt beschränkst:


=Wenn(Nicht [KDNR] Ist Null; DomWert("DeinTabellenFeld";"DeineTabelle";"Kundennummer=" & [KDNR]); Null)


Die Wenn ... Bedingung wird in dem Fall benötigt um den Eintrag '#Fehler' im Feld zu vermeiden, wenn keine Kundennummer im Feld KDNR eingetragen ist.
Analog dazu die Summen-Funktion:

=Wenn(Nicht [KDNR] Ist Null; DomSumme("DeinTabellenFeld";"DeineTabelle";"Kundennummer=" & [KDNR]); Null)


HTH
Peter