Ich programmiere in Access-VBA. Als Datenquele fürs Endlosformular habe ich eine Tabelle. Wenn man den Wert in der Zelle ändert und dann mit der Maustaste in eine andere Zeile springt, soll der Gesamtpreis automatisch berechnet werden, und dann soll in die Zeile reingesprungen werden, in die mit der linken Maustatse geklickt worden
ist.
Code:
private sub berechnen()
Dim rundung As Double
Dim letzt As String \* 1
Dim komma As Long
Dim rest1 As String
Dim rest2 As Long
Dim rest3 As Long
If feh5 = 0 Then
feh5 = 2
On Error GoTo we4
DoCmd.GoToRecord , , acNext
DoCmd.GoToRecord , , acPrevious
we4:
Set db1 = CurrentProject.Connection
rst1.Open "abfetikettenkunde" & benutzerid, db1, adOpenStatic, adLockPessimistic
If rst1.EOF = False Then rst1.MoveFirst
While rst1.EOF = False
daten.Value = rst1!ETI\_id
DoEvents
rst1!epreisk = rst1!vkbrutto / (100 + rst1!mwst) \* 100
rundung = Round(rst1!epreisk, 2)
If rst1!mwst = 7 Then rundung = rundung \* (100 + rst1!mwst) / 100
If rst1!mwst \> 7 Then rundung = rundung \* (100 + rst1!mwst) / 100
If rst1!mwst = 0 Then rundung = rundung
rundung = Round(rundung, 2)
letzt = Mid(CStr(rundung), Len(CStr(rundung)), 1)
komma = 0
komma = InStr(1, CStr(rundung), ",")
If komma = Len(CStr(rundung)) - 2 And komma \> 0 Then
If letzt 5 Then
rest1 = Mid(CStr(rundung), 1, Len(CStr(rundung)) - 2)
rest2 = CLng(Mid(CStr(rundung), Len(CStr(rundung)) - 1, 1))
If rest2 0 Then rst1!Aufschlag = Round(((rst1!epreisk - rst1!epreis) \* 100 / rst1!epreis), 0)
rst1!rohertrag = (rst1!epreis + (rst1!Aufschlag \* rst1!epreis / 100)) - rst1!epreis
rst1!eknettog = Round(rst1!Menge \* rst1!epreis, 2)
rst1!vknettog = Round(rst1!Menge \* rst1!epreisk, 2)
rst1!vkbruttog = Round(rst1!Menge \* rst1!vkbrutto, 2)
rst1.Update
rst1.MoveNext
Wend
rst1.Filter = ""
rst1.Close
db1.Close
ID = ETI\_id.Value
DoCmd.Requery
Set db1 = CurrentProject.Connection
rst1.Open "abfetikettenkunde" & benutzerid, db1, adOpenStatic, adLockPessimistic
'rst1.Filter = "aktiv = 1"
rst1.Sort = "bezeichnung, Topf, Höhe, Artikeltext"
'Öffnen der Tabelle
If rst1.EOF = False Then rst1.MoveFirst
DoCmd.GoToRecord , , acFirst
aid = 0
Do
aid = aid + 1
If rst1!ETI\_id = ID Then Exit Do
rst1.MoveNext
Loop Until rst1.EOF = True
'ID des Datensatzes ermitteln
DoCmd.GoToRecord , , acGoTo, aid
'Zum ausgewählten Artikel gehen
GoTo we8
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
we8:
rst1.Sort = ""
rst1.Close
db1.Close
'Schliessen der Tabelle und der Datenbank
Set db1 = CurrentProject.Connection
rst1.Open "abfetikettenkundesummep" & benutzerid, db1, adOpenStatic, adLockPessimistic
'Öffnen der Summenabfrage
summeeknetto.Value = 0
summevknetto.Value = 0
summevkbrutto.Value = 0
summerohertrag.Value = 0
If rst1.EOF = False Then
summeeknetto.Value = Round(rst1!eknettog, 2)
summevknetto.Value = Round(rst1!vknettog, 2)
summevkbrutto.Value = Round(rst1!vkbruttog, 2)
summerohertrag.Value = Round(rst1!vknettog - rst1!eknettog, 2)
End If
'Holen der Summen
rst1.Close
db1.Close
'Schliessen der Summenabfrage und der Datenbank
feh5 = 0
On Error GoTo fehler
If feh5 = 0 Then
If feh9 2 Then
'If feh9 = 6 Then Exit Sub
DoCmd.GoToRecord , , acNext
Else
DoCmd.GoToRecord , , acFirst
feh9 = 0
Aufschlagg.SetFocus
Exit Sub
End If
Aufschlag.SetFocus
End If
End If
Exit Sub
fehler:
Aufschlagg.SetFocus
end sub
[MOD] Pre-Tags eingefügt.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]