|
|
|
BIC-Code. Access Makro zur Berechnung der Prüfziffer
Transport Management Systeme TMS und Frachtenbörsen: Die besten Tipps und Tricks für den erfolgreichen Einsatz von Frachtenbörsen im Logistik- und Transportwesen. Maximieren Sie die Effizienz Ihrer Logistik- und Transportprozesse mit dem richtigen Transport Management System (TMS). Erfahrungsaustausch zum richtigen Einsatz von Transport Management Systemen TMS und FrachtenbörsenGehe zu Seite 1, 2 Weiter
Hain |
Geschrieben am 21 Mai 2008
|
Dabei seit 21 Mai 2008 9 Beiträge
|
Hallo und Guten Tag,
ich suche ein Makro bzw. Code um die Prüfziffer von Ladeeinheiten zu prüfen. Bsp. TFGU 411222 [7] wobei die 7 das Ergebnis der Prüfzifferberchnung sein soll.
Kann mir hierbei jemand helfen?
|
|
|
|
|
|
CARGOFORUM PARTNER
|
|
DanielNoetzel |
Geschrieben am 21 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Wenn du mir sagst, wie die 7 sich errechnet dann kann ich dir nen VB-Code basteln.
Gruß
Daniel
|
|
|
|
|
|
Hain |
Geschrieben am 21 Mai 2008
|
Dabei seit 21 Mai 2008 9 Beiträge
|
na klar sage ich dir das bzw. hänge ich eine Excel - Datei an, in der die Prüfziffer berechnet wird. Schade Excel - Dateien kann man nicht anhängen.
Kann ich dir die die Excel - Datei auch anders zukommen lassen?
Gruß Hain
|
|
|
|
|
|
Michael |
Geschrieben am 21 Mai 2008
|
Dabei seit 24 Februar 2005 674 Beiträge
|
Moin Daniel,
die Prüfziffer läßt sich recht einfach berechnen.
Zunächst wird den Buchstaben des Prefixes ein definierter Zahlenwert zugeordnet:
A -> 10
B -> 12
C -> 13
D -> 14
E -> 15
F -> 16
G -> 17
H -> 18
I -> 19
J -> 20
K -> 21
L -> 23
M -> 24
N -> 25
O -> 26
P -> 27
Q -> 28
R -> 29
S -> 30
T -> 31
U -> 32
V -> 34
W -> 35
X -> 36
Y -> 37
Z -> 38
Durch diese Zuordnung ist die gesamte Containernummer in Zahlen umgewandelt worden.
Im Beispiel wäre das:
TFGU 4112227 -> 31 16 17 32 4 1 1 2 2 2 (die Prüfziffer entfällt, sie soll ja errechnet werden)
Die Zahlen werden nun der Reihe nach mit 2^0 bis 2^9 multipliziert und anschließend addiert:
31 * 2^0 + 16 * 2^1 + 17 * 2^2 + ... + 2 * 2^9
= 31 + 32 + 68 + ... + 1024
= 2339
Die Summe, die sich hier ergibt, wird durch 11 dividiert, der ganzzahlige Anteil des Ergebnisses wiederum mit 11 multipliziert:
2339 : 11 = 212,6...
212 * 11 = 2332
Das Ergebnis aus dieser Operation wird nun von der Summe weiter oben subtrahiert, das Ergebnis ist die Prüfziffer:
2339 - 2332 = 7
Gruß,
Michael
|
|
|
|
|
|
DanielNoetzel |
Geschrieben am 26 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Hi Leute,
nachm langen Wochenende bin ich wieder da - werde mich heute abend mal hinsetzen und mich an nem kleinen Programm hierzu versuchen - sollte nicht so schwierig werden... Statt nem Access Makro, darf es auch ne EXE-Datei sein, bzw. könnte ich dir eventuell auch den Code hier reinstellen...
Gruß,
Daniel
|
|
|
|
|
|
Hain |
Geschrieben am 26 Mai 2008
|
Dabei seit 21 Mai 2008 9 Beiträge
|
Moin Daniel,
danke für deine Mühe. Für mich wäre der Code sehr wichtig.
Habe von deinem Vorhaben, eine Anwendung zu erstellen, gelesen.
Super Sache!!
Da kann man die Prüfzifferberechnung ja auch verwenden?!
Gruß
Hain
|
|
|
|
|
|
DanielNoetzel |
Geschrieben am 26 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Kann man mit einbauen, wenn ich den Code schon hab werde ich das dann auch tun :-D
Ich schau mal das ich den Code asap fertig bekomme, würde ihn dann hier reinposten.
|
|
|
|
|
|
DanielNoetzel |
Geschrieben am 26 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Michael wrote: |
Zunächst wird den Buchstaben des Prefixes ein definierter Zahlenwert zugeordnet:
|
Sind die Prefixes konstant oder werden die von Zeit zu Zeit geändert, je nach dem muss ich den Aufbau gestallten. (Denke jedoch konstant)
|
|
|
|
|
|
Hain |
Geschrieben am 26 Mai 2008
|
Dabei seit 21 Mai 2008 9 Beiträge
|
ein prefix ist immer vorhanden, es besteht aus 4 Buchstaben, der letzte ist immer ein "U" (Außerdem wird noch verwendet das „J“ für abnehmbare Anbauteile für Container, das „Z“ für Containerchassis),die andern 3 Buchstaben können jeweils immer zwischen "A-Z " frei gewählt sein
z.B. EXFU; BIDU; ALTU; TFGU etc.
|
|
|
|
|
|
Michael |
Geschrieben am 26 Mai 2008
|
Dabei seit 24 Februar 2005 674 Beiträge
|
Moin Daniel,
DanielNoetzel wrote: |
Michael wrote: |
Zunächst wird den Buchstaben des Prefixes ein definierter Zahlenwert zugeordnet: |
Sind die Prefixes konstant oder werden die von Zeit zu Zeit geändert, je nach dem muss ich den Aufbau gestallten. (Denke jedoch konstant) |
ich sehe das wie Du: die Zuordnung dürfte konstant sein (ist sie doch eine Voraussetzung für das Funktionieren der Berechnung der Prüfziffer).
Gruß,
Michael
|
|
|
|
|
|
DanielNoetzel |
Geschrieben am 27 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Hallo liebe Leute,
der Code sollte heute abend fertig sein, habe gestern die ganze rechen arbeit gemacht, nun muss er nur noch überprüfen ob die Prüfziffer korrekt ist - da hatte ich gestern einfach keine böcke mehr dazu. Werde den fertigen Code - geschrieben in Visual Basic, somit leicht zu konvertieren für jede MS Anwendung - hier reinstellen.
Gruß
Daniel
|
|
|
|
|
|
DanielNoetzel |
Geschrieben am 27 Mai 2008
|
Dabei seit 05 Oktober 2006 459 Beiträge
|
Code:: |
Class Form1
'Dieses Programm wurde geschrieben von Daniel Nötzel
'Bei Fragen und Anregungen zum Code mailto:daniel.noetzel@googlemail.com
'Hinweise zum Programmcode:
'Das Formular läuft aktuell unter dem Namen Form1 - dieser kann im Code problemlos modifiziert werden
'Folgende Textboxes werden benötigt:
'a1, a2, a3, a4 -> für die Zeichen,
'n1, n2, n3, n4, n5, n6 -> für die nummerische Eingabe
'an1, an2, an3, an4 -> für die Umwandlung der Zeichen in nummerische Werte
'pruef -> Eingabe der Prüfziffer
'rechnen, runden -> Werden zur Berechnung benötigt
'sämtliche Boxes sind so definiert das sie zum Teil nicht eingeblendet (rechnen, runden, an1-an4) bzw.
'sämtliche Eingabe Boxen sind so definiert das nach der Eingabe zur nächsten Eingabe gesprungen wird
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Folgende Commands blenden die "überflüssigen" TextBoxes aus
an1.Visible = False
an2.Visible = False
an3.Visible = False
an4.Visible = False
rechnen.Visible = False
runden.Visible = False
End Sub
Private Sub a1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles a1.TextChanged
'Dieser Code-Abschnitt übersetzt das Alpha Feld a1 in das Alphanummerische Feld an1
'Groß- und Kleinschreibung ist deaktiviert
If a1.Text.ToUpper = "A" Then
an1.Text = 10
Else
End If
If a1.Text.ToUpper = "B" Then
an1.Text = 12
Else
If a1.Text.ToUpper = "C" Then
an1.Text = 13
Else
If a1.Text.ToUpper = "D" Then
an1.Text = 14
Else
If a1.Text.ToUpper = "E" Then
an1.Text = 15
Else
If a1.Text.ToUpper = "F" Then
an1.Text = 16
Else
If a1.Text.ToUpper = "G" Then
an1.Text = 17
Else
If a1.Text.ToUpper = "H" Then
an1.Text = 18
Else
If a1.Text.ToUpper = "I" Then
an1.Text = 19
Else
If a1.Text.ToUpper = "J" Then
an1.Text = 20
Else
If a1.Text.ToUpper = "K" Then
an1.Text = 21
Else
If a1.Text.ToUpper = "L" Then
an1.Text = 23
Else
If a1.Text.ToUpper = "M" Then
an1.Text = 24
Else
If a1.Text.ToUpper = "N" Then
an1.Text = 25
Else
If a1.Text.ToUpper = "O" Then
an1.Text = 26
Else
If a1.Text.ToUpper = "P" Then
an1.Text = 27
Else
If a1.Text.ToUpper = "Q" Then
an1.Text = 28
Else
If a1.Text.ToUpper = "R" Then
an1.Text = 29
Else
If a1.Text.ToUpper = "S" Then
an1.Text = 30
Else
If a1.Text.ToUpper = "T" Then
an1.Text = 31
Else
If a1.Text.ToUpper = "U" Then
an1.Text = 32
Else
If a1.Text.ToUpper = "V" Then
an1.Text = 34
Else
If a1.Text.ToUpper = "W" Then
an1.Text = 35
Else
If a1.Text.ToUpper = "X" Then
an1.Text = 36
Else
If a1.Text.ToUpper = "Y" Then
an1.Text = 37
Else
If a1.Text.ToUpper = "Z" Then
an1.Text = 38
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
If Len(a1.Text) = 1 Then a2.Focus()
End Sub
Private Sub a2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles a2.TextChanged
'Dieser Code-Abschnitt übersetzt das Alpha Feld a2 in das Alphanummerische Feld an2
'Groß- und Kleinschreibung ist deaktiviert
If a2.Text.ToUpper = "A" Then
an2.Text = 10
Else
End If
If a2.Text.ToUpper = "B" Then
an2.Text = 12
Else
If a2.Text.ToUpper = "C" Then
an2.Text = 13
Else
If a2.Text.ToUpper = "D" Then
an2.Text = 14
Else
If a2.Text.ToUpper = "E" Then
an2.Text = 15
Else
If a2.Text.ToUpper = "F" Then
an2.Text = 16
Else
If a2.Text.ToUpper = "G" Then
an2.Text = 17
Else
If a2.Text.ToUpper = "H" Then
an2.Text = 18
Else
If a2.Text.ToUpper = "I" Then
an2.Text = 19
Else
If a2.Text.ToUpper = "J" Then
an2.Text = 20
Else
If a2.Text.ToUpper = "K" Then
an2.Text = 21
Else
If a2.Text.ToUpper = "L" Then
an2.Text = 23
Else
If a2.Text.ToUpper = "M" Then
an2.Text = 24
Else
If a2.Text.ToUpper = "N" Then
an2.Text = 25
Else
If a2.Text.ToUpper = "O" Then
an2.Text = 26
Else
If a2.Text.ToUpper = "P" Then
an2.Text = 27
Else
If a2.Text.ToUpper = "Q" Then
an2.Text = 28
Else
If a2.Text.ToUpper = "R" Then
an2.Text = 29
Else
If a2.Text.ToUpper = "S" Then
an2.Text = 30
Else
If a2.Text.ToUpper = "T" Then
an2.Text = 31
Else
If a2.Text.ToUpper = "U" Then
an2.Text = 32
Else
If a2.Text.ToUpper = "V" Then
an2.Text = 34
Else
If a2.Text.ToUpper = "W" Then
an2.Text = 35
Else
If a2.Text.ToUpper = "X" Then
an2.Text = 36
Else
If a2.Text.ToUpper = "Y" Then
an2.Text = 37
Else
If a2.Text.ToUpper = "Z" Then
an2.Text = 38
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
If Len(a2.Text) = 1 Then a3.Focus()
End Sub
Private Sub a3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles a3.TextChanged
'Dieser Code-Abschnitt übersetzt das Alpha Feld a3 in das Alphanummerische Feld an3
'Groß- und Kleinschreibung ist deaktiviert
If a3.Text.ToUpper = "A" Then
an3.Text = 10
Else
End If
If a3.Text.ToUpper = "B" Then
an3.Text = 12
Else
If a3.Text.ToUpper = "C" Then
an3.Text = 13
Else
If a3.Text.ToUpper = "D" Then
an3.Text = 14
Else
If a3.Text.ToUpper = "E" Then
an3.Text = 15
Else
If a3.Text.ToUpper = "F" Then
an3.Text = 16
Else
If a3.Text.ToUpper = "G" Then
an3.Text = 17
Else
If a3.Text.ToUpper = "H" Then
an3.Text = 18
Else
If a3.Text.ToUpper = "I" Then
an3.Text = 19
Else
If a3.Text.ToUpper = "J" Then
an3.Text = 20
Else
If a3.Text.ToUpper = "K" Then
an3.Text = 21
Else
If a3.Text.ToUpper = "L" Then
an3.Text = 23
Else
If a3.Text.ToUpper = "M" Then
an3.Text = 24
Else
If a3.Text.ToUpper = "N" Then
an3.Text = 25
Else
If a3.Text.ToUpper = "O" Then
an3.Text = 26
Else
If a3.Text.ToUpper = "P" Then
an3.Text = 27
Else
If a3.Text.ToUpper = "Q" Then
an3.Text = 28
Else
If a3.Text.ToUpper = "R" Then
an3.Text = 29
Else
If a3.Text.ToUpper = "S" Then
an3.Text = 30
Else
If a3.Text.ToUpper = "T" Then
an3.Text = 31
Else
If a3.Text.ToUpper = "U" Then
an3.Text = 32
Else
If a3.Text.ToUpper = "V" Then
an3.Text = 34
Else
If a3.Text.ToUpper = "W" Then
an3.Text = 35
Else
If a3.Text.ToUpper = "X" Then
an3.Text = 36
Else
If a3.Text.ToUpper = "Y" Then
an3.Text = 37
Else
If a3.Text.ToUpper = "Z" Then
an3.Text = 38
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
If Len(a3.Text) = 1 Then a4.Focus()
End Sub
Private Sub a4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles a4.TextChanged
'Dieser Code-Abschnitt übersetzt das Alpha Feld a4 in das Alphanummerische Feld an4
'Groß- und Kleinschreibung ist deaktiviert
If a4.Text.ToUpper = "A" Then
an4.Text = 10
Else
End If
If a4.Text.ToUpper = "B" Then
an4.Text = 12
Else
If a4.Text.ToUpper = "C" Then
an4.Text = 13
Else
If a4.Text.ToUpper = "D" Then
an4.Text = 14
Else
If a4.Text.ToUpper = "E" Then
an4.Text = 15
Else
If a4.Text.ToUpper = "F" Then
an4.Text = 16
Else
If a4.Text.ToUpper = "G" Then
an4.Text = 17
Else
If a4.Text.ToUpper = "H" Then
an4.Text = 18
Else
If a4.Text.ToUpper = "I" Then
an4.Text = 19
Else
If a4.Text.ToUpper = "J" Then
an4.Text = 20
Else
If a4.Text.ToUpper = "K" Then
an4.Text = 21
Else
If a4.Text.ToUpper = "L" Then
an4.Text = 23
Else
If a4.Text.ToUpper = "M" Then
an4.Text = 24
Else
If a4.Text.ToUpper = "N" Then
an4.Text = 25
Else
If a4.Text.ToUpper = "O" Then
an4.Text = 26
Else
If a4.Text.ToUpper = "P" Then
an4.Text = 27
Else
If a4.Text.ToUpper = "Q" Then
an4.Text = 28
Else
If a4.Text.ToUpper = "R" Then
an4.Text = 29
Else
If a4.Text.ToUpper = "S" Then
an4.Text = 30
Else
If a4.Text.ToUpper = "T" Then
an4.Text = 31
Else
If a4.Text.ToUpper = "U" Then
an4.Text = 32
Else
If a4.Text.ToUpper = "V" Then
an4.Text = 34
Else
If a4.Text.ToUpper = "W" Then
an4.Text = 35
Else
If a4.Text.ToUpper = "X" Then
an4.Text = 36
Else
If a4.Text.ToUpper = "Y" Then
an4.Text = 37
Else
If a4.Text.ToUpper = "Z" Then
an4.Text = 38
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
If Len(a4.Text) = 1 Then n1.Focus()
End Sub
Private Sub n1_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n1.TextChanged
If Len(n1.Text) = 1 Then n2.Focus()
End Sub
Private Sub n2_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n2.TextChanged
If Len(n2.Text) = 1 Then n3.Focus()
End Sub
Private Sub n3_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n3.TextChanged
If Len(n3.Text) = 1 Then n4.Focus()
End Sub
Private Sub n4_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n4.TextChanged
If Len(n4.Text) = 1 Then n5.Focus()
End Sub
Private Sub n5_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n5.TextChanged
If Len(n5.Text) = 1 Then n6.Focus()
End Sub
Private Sub n6_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles n6.TextChanged
If Len(n6.Text) = 1 Then pruef.Focus()
End Sub
Private Sub pruef_TextChanged(ByVal sender As System.Object, ByVal k As System.EventArgs) Handles pruef.TextChanged
'Dieser Teil berechnet die Prüfziffer; die Textbox runden kann ausgeblendet werden
runden.Text() = (an1.Text * 2 ^ 0 + an2.Text * 2 ^ 1 + an3.Text * 2 ^ 2 + an4.Text * 2 ^ 3 + n1.Text * 2 ^ 4 + n2.Text * 2 ^ 5 + n3.Text * 2 ^ 6 + n4.Text * 2 ^ 7 + n5.Text * 2 ^ 8 + n6.Text * 2 ^ 9) / 11
runden.Text = Conversion.Int(runden.Text)
rechnen.Text = (an1.Text * 2 ^ 0 + an2.Text * 2 ^ 1 + an3.Text * 2 ^ 2 + an4.Text * 2 ^ 3 + n1.Text * 2 ^ 4 + n2.Text * 2 ^ 5 + n3.Text * 2 ^ 6 + n4.Text * 2 ^ 7 + n5.Text * 2 ^ 8 + n6.Text * 2 ^ 9) - runden.Text * 11
If pruef.Text = rechnen.Text Then
MsgBox("Prüfziffer ist korrekt")
Else
MsgBox("Prüefziffer ist nicht korrekt. Prüfziffer muss " & rechnen.Text & " ergeben.")
End If
End Sub
End Class
|
Bei Fragen bitte per MSN oder PN ;-)
Code ist OpenSource und darf frei verwendet werden :-)
Geschrieben in Visual Basic 2008
Grüßle Daniel
|
|
|
|
|
|
MagNet-99 |
Geschrieben am 27 Mai 2008
|
Dabei seit 16 Juni 2006 2708 Beiträge
|
Hut ab wenn ich einen auf hätte ;-)
|
|
|
|
|
|
Hain |
Geschrieben am 28 Mai 2008
|
Dabei seit 21 Mai 2008 9 Beiträge
|
Hallo,
ich werde den Code einbauen und probiern ob ich ihn (den Code) in ein Access - Modul ans laufen bekomme.
Für deine Mühe und Arbeit danke ich dir recht herzlich.
Gruß
Hain
|
|
|
|
|
|
Log2002 |
Geschrieben am 28 Mai 2008
|
Dabei seit 02 Oktober 2007 239 Beiträge
|
www.prefixlist.com bzw. ein Partner bietet auch ein Programm zum errechnen der Prüfziffer an. Die Website ist übrigens auch so sehr interessant, man kann sehen auf wen welcher Ct zugelassen ist.....
|
|
|
|
|
|
Seite 1 von 2
|
Deutschlands
führendes Transport & Logistik Forum. Alles Wichtige zu Themen wie Spedition, Speditionsforum, Logistik, Logistikforum, Transport, Ausbildung, Studium, Karriere, Weiterbildung, Binnenschifffahrt, Existenzgründung, Transportforum, Luftfracht, Bahnfracht, Bahncargo, Seefracht, Schifffahrt, LKW, Güterkraftverkehr, Maut, Ladungssicherung, Gefahrgut, Charter, Eisenbahn, KEP, Kurier, Express, Paket, Multimodal, kombinierte Verkehre, Transportrecht, Transportversicherung, Zoll, Zollforum, RFID, Lagerlogistik, Warehouselogistik, AWB, Luftfrachtbrief, Container, Frachtflugzeug, Güterzug, Spediteure, Verlader, Fracht, Frachtforum, Transporte |
© eine Onlinepublikation der VOCA media carsten vollenbroich | |
|