omzetten van huidige datum in lotnummer en houdbaarheidsdatum

Status
Niet open voor verdere reacties.

blueberry013

Gebruiker
Lid geworden
23 mei 2011
Berichten
111
Beste,

ik zit met een zwaar probleem.
Voor creatie van etiketten gebruiken we bartender, gekoppeld aan het systeem van de firma.
Met behulp van VB worden houdbaarheidsdatum en lotcode automatisch gegenereerd.

Hiervoor gebruikten we deze code :


THT = dateadd ("d",Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"),Date)
PTHT = Datepart ("d", dateadd ("d",Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"),Date))
ProdDag = right(Format.NamedSubStrings("Lotnr").Value,2)


If CInt(PTHT)-1 > CInt(ProdDag) Then
Value = Dateserial(year (THT),Month(THT)+1,day(16))
Else
If CInt(ProdDag) < 16 Then
Value = Dateserial(year (THT),Month(THT),day(16))
Else
Value = Dateserial(year (THT),Month(THT),day(29))
End If
End If

Probleem zit hem nu in het volgende :

1. deze regels houden geen rekening met het schrikkeljaar... Hierdoor klopt dus de THT (die ofwel 16 of wel 28ste dag van de maand is)
2. 1 januari viel op een vrijdag. Hierdoor zet hij de weeknummer pas op vrijdag ipv maandag.

Kan iemand met de juiste inzichten en intelligentie hier een antwoord op vinden? want ik word er stilletjes aan moedeloos van.

Ik heb deze code reeds geprobeerd, maar een beetje tevergeefse moeite vrees ik....

LotDag = right (Field("Tbl_Temp_Label_Bartender.Lotnr") ,2) 'Laatste 2 cijfers van Lotnummer
Week = mid(Field("Tbl_Temp_Label_Bartender.Lotnr") ,3,2) '3de en 4de cijfer van Lotnummer (week van het jaar)
PJaar = mid(Field("Tbl_Temp_Label_Bartender.Lotnr") ,5,2) '5de en 6de cijfer van Lotnummer (jaartal)
PWeek = DateAdd("ww",Week ,DateSerial(Year(Date()),1,1)) 'Datum weergeven in welke week de productie is. 1 januari jaar Lotnummer + aantal weken
PDag = DateSerial (year (PWeek),month(PWeek), day (LotDag)+1) 'Weergave van de productiedatum adhv lotnr


If Datepart ("ww", PDag) <> Week then
Pdag = DateSerial (year (PWeek), month (PWeek)-1, day (ProdDag)+1)
End If


THT = CLng (dateadd ("d",Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"),PDag))
PTHT = Datepart ("d", THT)

If CLng(PTHT) > CLng(LotDag) Then
Value = "Ja" 'Dateserial(year (THT),Month(THT)+1,day(16))
Else
If CInt(PTHT) < 16 Then
Value = Dateserial(year (THT),Month(THT),day(16))
Else
Value = Dateserial(year (THT),Month(THT),day(29))
End If
End If

Alvast heel hard bedankt voor jullie hulp!
Voor degene die me kan helpen staat er alvast ook een mooi pakket klaar!

mvg
Wim
 
Geef een voorbeeld waarbij je de gebruikte waarden die een onjuiste uitkomst geven ook laat zien en vertel daar bij waarom de uitkomst niet correct is en wat het zou moeten zijn.

Gebruik tevens codetags en juiste inspringpunten als je code plaatst, zoals dit:
Code:
THT = dateadd ("d",Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"),Date)
PTHT = Datepart ("d", dateadd ("d",Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"),Date))
ProdDag = right(Format.NamedSubStrings("Lotnr").Value,2)

If CInt(PTHT)-1 > CInt(ProdDag) Then
    Value = Dateserial(year (THT),Month(THT)+1,day(16))
Else
    If CInt(ProdDag) < 16 Then
        Value = Dateserial(year (THT),Month(THT),day(16))
    Else
        Value = Dateserial(year (THT),Month(THT),day(29))
    End If
End If
 
Laatst bewerkt:
Goeie avond!

Ik ga het probleem zo goed mogelijk proberen uit leggen aan de hand van een voorbeeldje....

De vervaldatum wordt gecreeerd op basis van een lotnr. : vb 11181626 waarbij

11 = ploeg (deze is niet nodig voor de berekening van de THT)

18 = week van het jaar
16 = laatste 2 letters van het jaar
26 = dag van de maand

Mogelijke houdbaarheidstermijnen zijn 300 - 366 - 427 - 488 (Field("Tbl_Temp_Label_Bartender.Houdbaarheidsduur"))

Met de code die ik momenteel heb geeft hij bv. voor creatiedatum 25/04/2017 een THT van 26/06/2017 (houdbaarheid = 427) (komt waarschijnlijk door het schrikkeljaar??)

Eigenlijk zou het in dit geval 28/06/2017 moeten zijn.

Onze THT dient steeds afgerond te worden naar ofwel de 15de ofwel de 28ste van de maand.

Stel dat ik etiketten moet maken voor inpak binnen 3 weken (18 mei), baseert hij zich nog steeds op de datum van vandaag.
Ook pakt hij steeds vrijdag als nieuwe week (aangezien 1 januari op een vrijdag viel) en eigenlijk zou dit maandag moeten zijn.


Wat zou het moeten zijn dan....

Hij zou eigenlijk uit zijn lotnummer (= dag van de productie of inpak) (in het geval van het voorbeeld Lot 11181626 en houdbaarheid 427 dagen)
als THT 28/07/2017 moeten berekenen.
Is de dag van inpak voor de 15de van de maand zou dit 15/../.. moeten worden.

Ik hoop het zo duidelijk genoeg uitgelegd gekregen te hebben, maar moest u nog een vraag hebben bij de uitleg mag u deze uiteraard sturen.

Alvast enorm bedankt voor de hulp

Groetjes
Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan