2011-01-02 34 views
0

Ich habe drei FelderSumme in ms-access

field1 = Anzahl,
field2 = Anzahl,
field3 = Anzahl

Nun, wie eine Summe nehmen?

Zum Beispiel:

field3 = sum(field1,field2) 

oder

Default Value = field1+field2 
+0

Sind diese Felder Teil einer Tabelle oder eines Teils eine Anfrage? – froeschli

+0

= field1 + field2 + field3 –

+0

@froeschli: Teil einer Tabelle – underLine

Antwort

0

Sie müssen wahrscheinlich DSum verwenden. Dies ist für Access 2003, aber es sollte noch gelten und hoffentlich helfen: http://office.microsoft.com/en-us/access-help/calculate-the-sum-of-the-values-in-a-field-HP001100425.aspx

+0

Warum sollte man eine Domain-Aggregatfunktion verwenden, um Daten in der aktuellen Zeile zu summieren? –

+0

Ich schlug DSum vor, weil ich dachte, das war VBA-Code für ein Formular oder Makro, keine Abfrage. Es sieht so aus, als ob der OP-Kommentar zu @MitchWheat zeigt, dass dies der Fall war. – tcnolan

0

Wenn Sie meinen, wie ich für eine ganze Tabelle aktualisiere:

UPDATE yourTable 
SET field3 = field1 + field2 
+0

keine Abfrage.Ich schreibe mit Access Functions – underLine

0

Wenn Sie ein Formular haben und wünschen eine Steuerung aktualisieren auf das Ergebnis der zwei anderen Steuerelemente, können Sie die Steuerquelle zu (http://office.microsoft.com/en-us/access-help/create-an-expression-HA001181384.aspx) gesetzt:

=[Control1]+[Control2] 

Control1 und Control2 können Field1 und Field2, indem Sie die Steuerquelle für die jeweils mit dem entsprechenden Feldnamen jedoch gebunden sein, , Sie können nicht binden dass Control3 zu Field3, weil es bereits festgelegt ist. Wenn Sie Field3 in einem Formular auf diese Weise aktualisieren möchten, müssen Sie Code in einem Ereignis verwenden, das Ereignis Nach Update von Control1 und Control2 kann passen. Es ist gegen Normalisierungsregeln, Berechnungen zu speichern, also müssen Sie überlegen, ob Sie das tun möchten. In Access 2010 können Sie eine caluclated Feld (Spalte) erstellen, die eine andere Sache ist, dass sie Pflege ihrer eigenen Aktualisierung nimmt: http://msdn.microsoft.com/en-us/library/ff945943.aspx

Wie für Standardwerte, es gibt ein paar Dinge zu beachten:

  • Sie können den Standardwert in einer Tabelle gesetzt, AFAIK, auf Field1 + Feld2
  • die Default Eigenschaft nur angewendet, wenn Sie einen neuen Datensatz hinzufügen. Wenn Sie die Eigenschaft DefaultValue ändern, wird die Änderung nicht automatisch auf vorhandene Datensätze angewendet
  • Wenn sich die Steuerelemente im selben Formular befinden, muss das Steuerelement, das die Quelle des Standardwerts ist, in der Tabulatorreihenfolge früher angezeigt werden als das Steuerelement mit Ausdruck.

Beachten Sie auch, wenn Sie verwenden:

=Field1 + Field2 

Sie sind in der Tabelle auf die darunter liegenden Felder Bezug genommen wird, und dies zu Problemen führen kann, wenn Field1 und Field2 auch auf dem Formular angezeigt und aktualisiert werden können . Es wäre besser zu verwenden:

Me.MyControl.DefaultValue=Control1+Control2 

Wo die Steuerelemente an Field1 und Field2 gebunden sind. In VBA, bedeutet dies, dass der Standardwert auf das Ergebnis der Berechnung festgelegt werden, was unwahrscheinlich ist, zu sein, was Sie wollen, mehr wahrscheinlich wollen Sie:

Me.MyControl.DefaultValue="=Control1+Control2" 
+0

Beachten Sie, dass das Hinzufügen von zwei Werten Null erzeugt, wenn einer von zwei Null ist. Eine vernünftige Verwendung von Nz() kann hilfreich sein. –