Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!
ZitatIch habe Variante gewählt, weil ich zum einen nicht jeden Tag hunderte neue Datensätze erzeugen möchteMeine Version erzeugt nicht mehr DS warum auch ?
Zitatund zum anderen auch neben dem Lagerbestannd so auch immer den richtigen Waenwert bekomme. Schließlich varriieren die Einkaufspreise in Zeiten wie diesen.Für den Warenwert spielen die Einkaufspreise eigentlich keine Rolle. Der Warenwert ergibt sich aus dem aktuellen Preis. Wenn Du 10 Aktien zu 100.-€ kaufst und die Aktie dann auf 110.-€ steigt, sind Deine Aktien 1100.-€ wert und keine 1000.-€.
Do While Anzahl > rs!Differenz
rs.Edit
rs!Rest = rs!Anzahl
Anzahl = Anzahl - rs!Differenz
rs.Update
rs.MoveNext
Loop
If Anzahl then
rs.Edit
rs!Rest = rs!Rest + Anzahl
rs.Update
end if
Option Compare Database
Option Explicit
Public Sub Miss_var()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Fehlende_Werte As Integer
Dim i As Integer
Dim Miss As Integer
Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "SELECT check_fit_ID, Spinning , Lunges , Squats , Fehlende_Werte FROM tblcheck_fit", CurrentProject.Connection, adOpenStatic, adLockOptimistic
Do While Not rs.EOF
Miss = 0
For i = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields(i)) Then
Miss = Miss + 1
End If
rs!Fehlende_Werte = Miss
Next i
Debug.Print rs!check_fit_ID, rs!Fehlende_Werte
rs.MoveNext
Loop
End Sub
Option Compare Database
Option Explicit
Public Sub Miss_var()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Miss As Integer
Dim i As Integer
Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM tblcheck_fit ", CurrentProject.Connection, adOpenStatic, adLockOptimistic
Do Until rs.EOF
' Hier die benötigen Felder der Tabelle zur ID
'und hier ist mein Problem, wie kann ich die Felder die es betrifft, in der For Schleife durchsuchen
For i = 'benötigte Felder die ich durchsuchen möchte'
If IsNull(rs(i)) = True Then
Miss = Miss + 1
rs! Fehlende_Werte = Miss
Debug.Print rs! check_fit_ID, rs!Fehlende_Werte
End If
Next
rs.MoveNext
Loop
End Sub
ZitatIrgendwas stimmt noch nichtWenn ich nur die Situation betrachte: Einem Lagerort sollte nur die Differenz Anzahl - Rest zubuchbar sein. Also müsste die Gesamtzubuchung sequentiell aufgeteilt werden (mit offenen Ausgang für den am frühesten belegten Lagerort).
Zitat von: markusxy am März 24, 2023, 17:12:43Zitat von: Will1974 am März 24, 2023, 14:27:57rs!Rest = rs!Rest + rs!Differenz
...
Anzahl = Anzahl - rs!Rest[/quote]
Also der Fehler ist recht offensichtlich.
Bei Rest steht ja schon mal der Wert 4.
Den Wert ziehst du dann einfach von der Anzahl ab, obwohl die ja gar nicht zurückgegeben wurden.![]()
Abgesehen davon prüfst du gar nicht, ob Differenz > ist als die Rückgabe.
Den Code solltest du noch mal durchdenken.
...
If rs!Rest + Anzahl < 0 Then
stueck(i) = rs!Rest
zugangnr(i) = rs!LagerID
Anzahl = Anzahl + rs!Rest
rs!Rest = 0
rs.Update
rs.MoveNext
Else
rs!Rest = rs!Rest + Anzahl
stueck(i) = Anzahl
zugangnr(i) = rs!LagerID
Anzahl = 0
rs.Update
...