alles muterern

Status
Niet open voor verdere reacties.

jo geuens

Gebruiker
Lid geworden
13 feb 2010
Berichten
190
hoi ik zou geraag een mutatie willen doe van alle tooling van de ene naar een andere plaats .
1 item per keer kukt me wel maar niet alles samen
deze had ik tot nu
Code:
Private Sub Boekalles_Click()
If IsNull(Me.Locatie) Or IsNull(Me.KeuzelijstLocatieNaar) Then
    MsgBox "Vul alle gegevens in", vbCritical, "Foutmelding"
    Exit Sub
End If

If Me.KeuzelijstLocatieNaar = Me.Locatie Then
    MsgBox "De locaties mogen niet gelijk zijn", vbCritical, "Foutmelding"
    Exit Sub
End If

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT ToolingID, Sum(Toolingmutatie) AS VRD FROM Toolingmutatie GROUP BY ToolingID, ToolingID HAVING (Sum(Toolingmutatie.Toolingmutatie)>0 AND ToolingID=" & Me.Locatie & ")")

While Not rs.EOF
    Call BoekMut(rs!ToolingID, Me.Locatie, rs!VRD * -1, "Interne overboeking")
    Call BoekMut(rs!ToolingID, Me.KeuzelijstLocatieNaar, rs!VRD, "Interne overboeking")
    rs.MoveNext
Wend

rs.Close

Me.KeuzelijstLocatieVan = Null
Me.KeuzelijstLocatieNaar = Null

MsgBox "De mutaties zijn verwerkt", vbInformation, "Verwerkt"

End Sub
Code:
Sub BoekMut(Artikel As Long, Asset As Long, Locatie As Long, Stuks As Integer, Wisselartikel As Long, Oms As String)
    DoCmd.RunSQL "INSERT INTO Toolingmutatie(ToolingID,LocatieID,Asset,Toolingmutatie,wisselartikel,Omschrijving) VALUES(" & Artikel & "," & Asset & "," & Locatie & "," & Stuks & "," & Wisselartikel & ",'" & Oms & "')"
End Sub
dit is een voorbeeldje van de tabel toolingmutatie


toolingmutatie.png
voorbeeldje lukt me weer niet na inpakken nog 1.5mb
 
Dat het niet werkt lijkt mij niet onlogisch gezien het feit dat je de tabel [Toolingmutatie] opent, en vervolgens in een andere functie diezelfde tabel wilt muteren. Dat gaat clashen. Sowieso kun je een recordset die in GroupBy is geopend niet bijwerken, dus dat gaat ook al fout. Je kunt eens proberen om de Totaalquery op te slaan in een tijdelijke tabel, vervolgens de tabel te sluiten en dan vanuit de tijdelijke tabel te vullen.
Schrijf je code ook kort op de volgende keer, want van dat scrollen word ik ook niet vrolijk ;)
Code:
Function BoekMut(Artikel As Long, Asset As Long, Locatie As Long, Stuks As Integer, Wisselartikel As Long, Oms As String)
Dim strSQL2 As String
strSQL2 = "INSERT INTO Toolingmutatie(ToolingID,LocatieID,Asset,Toolingmutatie,wisselartikel,Omschrijving) " _
    & "VALUES(" & Artikel & "," & Asset & "," & Locatie & "," & Stuks & "," & Wisselartikel & ",'" & Oms & "')"
    CurrentDb.Execute strSQL2, dbFailOnError
End Function
 
hallo

nog wat aan het zoeken geweest maar kom er nog niet uit
het gaat mis als ik de velden Asset en wisselartikel toevoeg

Code:
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT ToolingID,[COLOR="#FF0000"]asset,wisselartikel[/COLOR], Sum(Toolingmutatie) AS VRD FROM Toolingmutatie GROUP BY LocatieID, ToolingID,[COLOR="#FF0000"][/COLOR][COLOR="#FF0000"]asset,wisselartikel[/COLOR] HAVING (Sum(Toolingmutatie.Toolingmutatie)>0 AND LocatieID=" & Me.KeuzelijstLocatieVan & ")")

While Not rs.EOF
    Call BoekMut(rs!ToolingID, rs!Asset, Me.KeuzelijstLocatieVan, rs!VRD * -1, rs!Wisselartikel, "Interne overboeking")
    Call BoekMut(rs!ToolingID, rs!Asset, Me.KeuzelijstLocatieNaar, rs!VRD, rs!Wisselartikel, "Interne overboeking")
    rs.MoveNext
Wend

rs.Close
daar geeft die de melding: ongeldig gebruik van nul op voor de velden asset en wisselartikel hoe moet ik deze ophalen

Code:
Function BoekMut(Artikel As Long, Asset As Long, Locatie As Long, Stuks As Integer, Wisselartikel As Long, Oms As String)
Dim strSQL2 As String
strSQL2 = "INSERT INTO Toolingmutatie(ToolingID,LocatieID,Asset,Toolingmutatie,wisselartikel,Omschrijving) " _
    & "VALUES(" & Artikel & "," & Asset & "," & Locatie & "," & Stuks & "," & Wisselartikel & ",'" & Oms & "')"
    CurrentDb.Execute strSQL2, dbFailOnError
End Function
 
Blijkbaar heb je de velden zó ingesteld dat ze geen null waarden mogen bevatten. In dat geval moet je er voor zorgen dat er, als het veld leeg is, een 0 in gezet wordt, bijvoorbeeld door het veld met Nz om te zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan