Hallo zusammen,
ich habe folgende Problemstellung: Ich habe eine 10-stellige Zahl (Auftragsnummer), welche auf ein anderes Gerät geschrieben und im weiteren Verlauf wieder gelesen werden muss. Die Nummer setzt sich zusammen aus den letzten zwei Ziffern des Jahres (aktuell 24) und der 8-stelligen eigentlichen Auftragsnummer. Das andere Gerät unterstützt allerdings nur 32bit. Damit wäre schon im Jahr 2021 Schluss gewesen.
Meine Idee wäre die erste Ziffer abzuschneiden, also aus 2400123456 würde 400123456 werden. In dem Moment, wo ich mir die Zahl wieder vom Gerät hole, würde ich die "2" bzw. "Zehnerstelle" wieder vorne anfügen, da ich mir das aktuelle Jahr über Now.ToString("yy") hole.
Das Problem dabei ist nur der Jahrzehnte-Sprung. Es kann also sein, dass ein Auftrag aus dem Jahr 2029 erst im Jahr 2030 oder sogar erst 2031 gefertigt wird. Wie würdet ihr das lösen?
Hier meine bisherigen geistigen Ergüsse :
ich habe folgende Problemstellung: Ich habe eine 10-stellige Zahl (Auftragsnummer), welche auf ein anderes Gerät geschrieben und im weiteren Verlauf wieder gelesen werden muss. Die Nummer setzt sich zusammen aus den letzten zwei Ziffern des Jahres (aktuell 24) und der 8-stelligen eigentlichen Auftragsnummer. Das andere Gerät unterstützt allerdings nur 32bit. Damit wäre schon im Jahr 2021 Schluss gewesen.
Meine Idee wäre die erste Ziffer abzuschneiden, also aus 2400123456 würde 400123456 werden. In dem Moment, wo ich mir die Zahl wieder vom Gerät hole, würde ich die "2" bzw. "Zehnerstelle" wieder vorne anfügen, da ich mir das aktuelle Jahr über Now.ToString("yy") hole.
Das Problem dabei ist nur der Jahrzehnte-Sprung. Es kann also sein, dass ein Auftrag aus dem Jahr 2029 erst im Jahr 2030 oder sogar erst 2031 gefertigt wird. Wie würdet ihr das lösen?
Hier meine bisherigen geistigen Ergüsse :
VB.NET-Quellcode
- Dim var1 As String = "900001234"
- Dim aktJahr As String
- Dim aktJahr2 As String
- Dim AuftragsJahr As Integer
- Dim Auftragsnummer As Long
- AuftragsJahr = CInt(var1.Substring(0, 1))
- aktJahr = "31" 'Now.ToString("yy")
- aktJahr2 = CInt(aktJahr.Substring(1, 1))
- If AuftragsJahr = aktJahr2 Then
- Auftragsnummer = CLng(aktJahr.Substring(0, 1) + var1)
- ElseIf AuftragsJahr > aktJahr2 Then
- Auftragsnummer = CLng(CStr(CInt(aktJahr) - 1) + var1.Substring(1, 8))
- ElseIf AuftragsJahr < aktJahr2 Then
- Auftragsnummer = CLng(aktJahr.Substring(0, 1) + var1)
- End If