PDA

Vollständige Version anzeigen : Tabelleneintrag Addieren


Pascal Vögeli
24.09.2001, 07:35
Wenn ich jetzt in meinem Formular einen Artikel auswähle und bei dem Feld "Menge" eine Zahl eingebe, wird diese in der Tabelle gespeichert, ganz schön und net, ABER ich möchte jetzt, wenn ich den gleichen artikel nochmal auswähle, das es mir die Zahl in der Tabelle, welche ich vorher eingegeben habe nicht ersetzt, sondern Addiert, bitte helft mir....

kama
24.09.2001, 09:32
Das geht


Nur mit VBA

wenn du es willst melde dich noch mal

Pascal Vögeli
24.09.2001, 09:37
ja, aber du musst mir fasst schritt für schritt erklären..

cu Päscu

kama
24.09.2001, 10:15
Also
Step bei Step und du hast Post

feld anklicken
Eigenschaften Ereignis
BeimHingehen anklicken mit dem Pfeil Ereignisprozedur wählen
auf die drei... drücken
du befindest dich nun im Code editor
Trage oberhalb des Wortes 'Private' folgendes ein
Public AlterWert As Double

Unterhalb des Wortes Private traägst du folgendes ein
AlterWert = Me![DeinFeld] ' Alten wert speichern
schließe das code Fenster
gehe nun auf nach aktualieserung
ereignisprozedur/drei...

Der courser steht schon an der richtigen
stelle

Me![DeinFeld] = Me![DeinFeld] + AlterWert

Eintragen
Das ganze sollte so aussehen


Option Compare Database
Option Explicit
Public AlterWert As Double 'Variable öffentlich machen


Private Sub DeinFeld_GotFocus()
AlterWert = Me![DeinFeld] ' Alten wert speichern
End Sub


Private Sub DeinFeld_AfterUpdate()
Me![DeinFeld] = Me![DeinFeld] + AlterWert ' Neuen und alten Wertspeichern
End Sub

Pascal Vögeli
27.09.2001, 07:52
Ich glaube, das scheint zu funtzen, danke viel mal, aber wenn was nicht geht schreib ich wieder, danke für Ihr Verständnis...


cu

Päscu

Pascal Vögeli
27.09.2001, 08:58
Wenn ich jetzt in das Formular gehe, und aus meiner list eine Produkt auswähle wird immer der wert,den ich beim letzten Produkt im feld menge eingegeben habe, angezeigt. gibt es einen code, der beim start des Formulars automatisch das feld menge löscht, so das nichts angezeigt wird????

Danke im voraus...

cu Päscu

kama
27.09.2001, 11:03
Erweiter deinen code um folgende codezeile
Private Sub DeinFeld_GotFocus()
AlterWert =Me![DeinFeld]' Alten wert speichern
Erase Me![DeinFeld]
End Sub

Ps: Hier wird sich im allgemeinen geduzt, also ' ICH VERWARNE IHNEN' ;)

Pascal Vögeli
27.09.2001, 11:22
Hallo Kama...

Erstens danke das du dich meinem Problem widmest. Ich habe die Zeile erweitert, aber das scheint nicht zu funzen, ich habe natürlich immer alles gespeichert, und danach geschlossen. Als ich es wieder geöffnet habe war es immer noch da...

cu Päscu

kama
27.09.2001, 12:25
Nobody is perfekt,
aber das ist getestet:
Me![zahlen] = Empty

Aber vielleicht habe ich dein Problem nicht richtig verstamden. Soll diese Funktion sich auf das feld beziehen beim dem die automatische Addition erfolgen soll?

PS.: Ein Thema ein Beitrag, das solltest du die wirklich zu herzen nehmen.

Pascal Vögeli
27.09.2001, 12:41
Es gibt immer noch ein fehler, schau dir mal den code an.....


cu Päscu

Option Compare Database
Option Explicit
Public AlterWert As Double 'Variable öffentlich machen

Private Sub Form_Open(Cancel As Integer)
Me![Menge] = Empty
End Sub

Private Sub Menge_GotFocus()
AlterWert = Me![Menge] ' Alten wert speichern
End Sub

Private Sub Menge_AfterUpdate()
Me![Menge] = Me![Menge] + AlterWert ' Neuen und alten Wertspeichern
End Sub

kama
27.09.2001, 12:59
Hallo Pascal
nicht schlecht aber...
Private Sub Form_Open(Cancel As Integer)
Dieses Ereignis triit während des öffnen des Formulars ein, felder exsistieren also noch nicht!
Richtig ist..

Private Sub Form_Load()

aber das macht er ja nur einmal auf dem aktuellen Datensatz

Richtig wäre m. E.
Private Sub Menge_GotFocus()
AlterWert = Me![Menge] ' Alten wert speichern
Me![zahlen] = Empty
End Sub
Beim Focuserhalt wird der alte Wert gespeichert und das feld geleert

Pascal Vögeli
27.09.2001, 13:09
Option Compare Database
Option Explicit
Public AlterWert As Double 'Variable öffentlich machen


Private Sub Menge_GotFocus()
AlterWert = Me![Menge] ' Alten wert speichern
Me![zahlen] = Empty
End Sub

Private Sub Menge_AfterUpdate()
*Me![Menge] = Me![Menge] + AlterWert ' Neuen und alten Wertspeichern*
End Sub

In dieser Zeile mit den Zwei sternen habe ich jetzt noch ein Problem (die sterne habe ich gesetzt, damit du weist welche Zeile....)

cu Päscu

kama
27.09.2001, 13:18
Me![Menge] = Empty
Solltest du verbessern
Zahlen ist mein Feldname beim testen

Die Zeile dürfte keine Probleme machen und das hat sie ja in der Beispieldatenbank auch nicht gemacht!
Also wie äußert sich das Problem?

Pascal Vögeli
27.09.2001, 13:26
Doch diese Zeile macht Problem, gib mal deine Zeile, es kommt der Fehler: Laufzeitfehler 13 Typen unverträglich...

Es ist ja nicht viel Code, aber der macht noch Probleme...

cu Päscu

Option Compare Database
Option Explicit
Public AlterWert As Double 'Variable öffentlich machen


Private Sub Menge_GotFocus()
AlterWert = Me![Menge] ' Alten wert speichern
Me![Menge] = Empty
End Sub

Private Sub Menge_AfterUpdate()
Me![Menge] = Me![Menge] + AlterWert ' Neuen und alten Wertspeichern
End Sub

kama
27.09.2001, 13:46
Kann es sein das das Feld in der zugrundeliegenden Tabelle als Text deklariert ist. Veränder das dann zu zahl. Mach dir vorher eine Sicherungskopie.
man kann ein feld vom typ Text nicht so ohne weiteres mit einer Zahl (>>Alterwert) addieren.

Denn das sagt die fehlermeldung

Wenn du darauf bestehst text mit Zahl zu addieren dann versuch mal das

Me![Menge] = Val(Me![Menge]) + AlterWert

Ich glaube deine datenbank ist von der struktur sehr schlecht aufgebaut. Man verändert nicht ständig einen datensatz um etwas aufzuaddieren, sondern sammelt eigentlich alle Einträge und läßt sich dann eine zusammenfassung (Summe) zeigen.

Pascal Vögeli
27.09.2001, 13:54
soll ich sie dir mal schicken, sie ist recht klein....


cu päscu

kama
27.09.2001, 13:59
Ja kannst du machen und ist glaube ich am besten
Schreib mir was du damit vorhast
Gruß Klaus

Pascal Vögeli
27.09.2001, 14:14
Ich denke, das du das sofort sehen wirst.
Also, wie lautet dein email...

cu päscu

kama
27.09.2001, 14:17
kama@freenet.de

Pascal Vögeli
27.09.2001, 14:41
und was meinst du dazu??? Es ist nicht eine komplizierte Datenbankm oder???


cu Päscu