Hallo zusammen,
wir bekommen von unseren Lieferanten eine größere Stückzahl an Teilen die einer einzigen Chargennummer zugeordnet sind.Zur Rückverfolgung der verschiedenen Mitarbeiter im Rahmen der Teilebearbeitung wird die Losgröße auf die definierten Verpackungseinheiten gesplittet und jedem Karton eine eigene Chargennummer zugewiesen.Die Verpackungseinheiten sind in der Tabelle „Artikelstammdaten“ über die Datenfelder „Artikelnummer“ und „Verpackungsmenge“ pro Karton festgelegt.
Die Teile vom Lieferanten werden in einem Datensatz mit den Datenfeldern:
„ Artikelnummer“ „Menge“ „Chargennummer“
In die Tabelle „Fertigungsaufträge“ manuell eingegeben.
Durch eine Schaltfläche wird das Makro Modul 1 gestartet.
Die Erstellung der eigenen „Chargennummer“ erfolgt in der Tabelle „Chargen“.
Public Sub createCharges()
Dim db As DAO.Database
Dim rs As DAO.Recordset, rs1 As DAO.Recordset
Dim lngAnzahl As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Fertigungsaufträge WHERE erledigt = 0;")
If rs.RecordCount = 0 Then
MsgBox "Keine zu bearbeitenden Lieferungen gefunden.", vbInformation
GoTo cleanUp
End If
Do While Not rs.EOF
Set rs1 = db.OpenRecordset("SELECT Verpackungsmenge FROM Artikelstammdaten WHERE Artikelnummer = '" & rs.Fields("Artikelnummer") & "';")
If rs1.RecordCount = 0 Then
MsgBox "Zur Lieferung" & vbCrLf & vbCrLf & _
rs.Fields("ID") & " | " & rs.Fields("Artikelnummer") & " | " & rs.Fields("Menge") & " | " & rs.Fields("Chargennummer") & vbCrLf & vbCrLf & _
"wurden keine Stammdaten gefunden.", vbInformation, "Überspringe Lieferung"
GoTo cleanUp
Else
Dim lngMenge As Long
Dim lngVerpackungsmenge As Long
Dim lngCount As Long
lngMenge = rs.Fields("Menge")
lngVerpackungsmenge = rs1.Fields("Verpackungsmenge")
Do While lngMenge > 0
Select Case lngMenge
Case Is >= lngVerpackungsmenge
db.Execute ("INSERT INTO Chargen (Artikelnummer, Menge) VALUES ('" & rs.Fields("Artikelnummer") & "', " & lngVerpackungsmenge & ");")
Case Is < lngVerpackungsmenge
db.Execute ("INSERT INTO Chargen (Artikelnummer, Menge) VALUES ('" & rs.Fields("Artikelnummer") & "', " & lngMenge & ");")
End Select
lngCount = lngCount + 1
lngMenge = lngMenge - lngVerpackungsmenge
Loop
End If
db.Execute ("UPDATE Fertigungsaufträge SET erledigt = -1 WHERE ID = " & rs.Fields("ID") & ";")
rs.MoveNext
Loop
MsgBox "Verarbeitung erfolgreich, es wurden " & lngCount & " Chargen erstellt.", vbInformation
cleanUp:
If Not rs1 Is Nothing Then Set rs1 = Nothing
If Not rs Is Nothing Then Set rs = Nothing
If Not db Is Nothing Then Set db = Nothing
End Sub
Aktuell werden in der Tabelle „Chargen“ auf Basis der Verpackungsmenge die entsprechende Anzahl von Datensätzen (inklusive einer Restmenge bei unvollständiger Packeinheit) erstellt
Ein Datensatz enthält die Datenfelder:
„Autowert = eigene Chargennummer“ „Menge“ „Artikelnummer“
Zur Erstellung eines Druckauftrages möchte ich jedoch die Datensätze in der Tabelle „Chargen“ über das Feld „ InterneLieferscheinnummer“ filtern.Das Makro erstellte mir freundlicher weise ein netter Teilnehmer im VBA Forum. Leider fehlen mir die Kenntnisse um das Makro „Modul1“ so zu erweitern, dass die Daten im Datenfeld „ InterneLieferscheine“ aus der Tabelle „ Fertigungsaufträge“ in jeden Datensatz in die Tabelle „Charge“ in das Datenfeld „InterneLieferscheinnummer“ automatisch mit übertragen werden.
Für eure Hilfe bedanke ich mich schon jetzt.
|