• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Artikelnummer prüfen mit jscript??

Stoned

New member
High!

Ich bin noch Anfänger und brauch die Prüfung einer 7 stelligen Artikelnummer!

Ich kann leider nur vba brauch aber die Prüfung in eines asp eingebaut und da scheint j-script die beste Möglichkeit!(glaub ich;))

Fragen:
1: Wie lese ich die einzelnen Stellen aus?
2: Kann ich ganz normal mit den Variablen rechnen?

hier mein vba script:

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim f As Integer
Dim Prüfziffer As Integer
Dim Produktzahl As Long
Dim aufgerundeteProduktsumme As Integer
Dim PrüfzifferErrechnet As Integer
Dim intQS As Integer
Dim intCT As Integer
Dim strAN As String
Dim intAL As Integer

'Ziffern auslesen und Gewichtung zuführen


a = Val(Mid(Trim([Artikelnummer]), 1, 1))
b = Val(Mid(Trim([Artikelnummer]), 2, 1)) * 2
c = Val(Mid(Trim([Artikelnummer]), 3, 1))
d = Val(Mid(Trim([Artikelnummer]), 4, 1)) * 2
e = Val(Mid(Trim([Artikelnummer]), 5, 1))
f = Val(Mid(Trim([Artikelnummer]), 6, 1)) * 2
Prüfziffer = Val(Mid(Trim([Artikelnummer]), 7, 1))

Produktzahl = a & b & c & d & e & f 'Produktzahl zusammenführen

Rem Quersumme errechnen

strAN = Trim(Produktzahl)
intAL = Len(strAN)
intQS = 0
If intAL >= 1 Then
For intCT = 1 To intAL
intQS = intQS + Val(Mid((strAN), intCT, 1)) 'Mid(string, start[, length])
Next intCT
End If

aufgerundeteProduktsumme = Int((intQS + 9) / 10) * 10 'Produktsumme aufrunden auf nächsten Zehner

PrüfzifferErrechnet = aufgerundeteProduktsumme - intQS

If Prüfziffer <> PrüfzifferErrechnet Then MsgBox "Falsche Artikelnummer!!"

Wenn irgendjemand irgendwas darüber weiß, und mir ein bißchen weiterhelfen kann wäre ich sehr dankbar!!!

Thx
Stoned
 
Ich verstehe meinerseits von VBA nicht viel und kann Deinem Listing somit nur lückenhaft folgen, aber Du kannst in JavaScript eine vom User eingegebene Zeichenkette in seine Teile zerlegen und in Variablen speichern und kannst dann die Variablen zusammenführen und auch eine Prüfziffer errechnen. JavaScript ist zu allen möglichen Rechenarten in der Lage.

Den letzten Block Deines Listings verstehe ich leider garnicht.

Warum soll jemand eine Artikelnummer von hand eingeben in einer Website? Hat mit Bestellen wohl nix zu tun. Dreht es sich um ein Online Eingabe Inteface?
 
High!

jou es geht um eine online eingabemaske in eine kleine Datenbank!

beim letzen block errechnet er einfach die Quersumme der Produktzahl!

Frage:
1. Ok jetzt weiß ich, dass das funzt aber wie? Mit ein paar kleinen Befehlen zum auslesen von einzelnen Stellen und oder mit einer kleinen Quersummenfunktion wär mir schon sehr sehr geholfen! Das Feld heißt Artikelnummer hat 7 Stellen: an der letzten stelle steht die Prüfziffer!

plz help!
thx
stoned
 
nur mal so als denkansatz, ich bin net so der javascript-experte :D
du splittest die zahl auf in ein array. das array hat dann n elemente.
anschliessend zählst du in einer schleife alle elemente zusammen, bis die anzahl der additionen gleich n ist. dann hast du deine quersumme.

bye,
mo
 
Hi Stoned (Hoffe Du machst Deinem Namen keine Ehre)!

hier der eine kleine Funktion bis zu dem Punkt wo die ersten 6 Stellen addiert sind. Wie solls den dann weitergehen. Wenn Quersumme größer 9 soll dann nur die erste Stelle der Quersumme zur Prüfziffer werden oder wie willst Du das?

<html>
<head>
<script language="JavaScript">
<!--
function validate()
{
var x=document.f1.textfeld.value //variable x erhält den Eingabewert
if (isNaN(x)) //ist x keine Zahl -> Fehlermeldung
{
alert("Eingabe ist keine gültige Zahl");
return false;
}
else if(x.length != 7) //hat x nicht 7 Stellen -> Fehlermeldung
{
alert("Eingabe hat eine ungültige Länge");
return false;
}
else if (x.indexOf(".")!=-1) // hat sich ein Punkt in die Zahl eingeschlichen - Fehlermeldung
{
alert("Eingabe ist keine gültige Zahl");
return false;
}
parsethis(x)
}

function parsethis(wert)
{
var summe = 0
var Einzelzahlen = new Array() //Ein Array für die einzelnen Zahlen der Eingabe
for (var i=0;i<7;i++) //Schleife füllt das Array mit den 7 einzeln ausgelesenen Ziffern
{
Einzelzahlen = wert.slice(i,i+1)
}
for (var i=0; i<6; i++) //Schleife summiert die ersten 6 Zahlen
{
summe += Number(Einzelzahlen)
}
alert(summe); //gibt die Summe zur Prüfung auf den Bildschirm
}
// -->
</script>
<title>Split Integer</title>
</head>
<body>
<form name="f1" action="" method="post">
<input type="text" name="textfeld" size="7">
<input type="button" name="knopf" value="Prüfen" onClick="validate()">
</form>
</body>
</html>
 
High!

Keine Angst das Stoned hat was mit meinem Namen zu tum;)

erst mal big thx für die Mühe! (mod und besonders PROWAG!!!!) WAHNSINN!!!!!

ok jetzt noch ein paar kleinigkeiten;)
(Es tut mir leid dass ich so genau fragen muss aber das ist mein erster Versuch mit j-script!)

Die Prüfroutine:
Artikelnummer: hat 8 Stellen: 1 Stelle ist ein Buchstabe
2,3,4,5,6,7 Stellen werden ausgelesen
die 8. Stelle ist die Prüfziffer

Bsp : A6751788 (das ist die Artikelnummer) die 8 ist die Prüfziffer


Berechnung:
3.Stelle mal 2 = 14
5. Stelle mal 2 = 2
7. Stelle mal 2 = 16

Das ergibt die Produktzahl(die Zahlen werden einfach aneinandergefügt)(Buchsabe is jetzt egal):
6 14 5 2 7 16

Von dieser Produktzahl wird die quersumme gebildet: 6+1+4+5+2+7+1+6=32
jetzt wird die Quersumme auf den nächsten zehner aufgerundet=40
Prüfziffer ist die aufgerundete Quersumme(40) minus der Quersumme(32)
d.h: die Prüfziffer ist 8

Mein Problem: ich muss vorher die einzelnen stellen auslesen dann die Berechnung ausführen
diese Zahl muss man dann wieder zusammenführen und die Quersumme bilden

Die Produktzahl hat dann aber mehr stellen!
Sollte ich zwei arrays bilden?
Ganz schön kompliz huch;)

Für alles konstruktive dankbar!!

Thx
Stoned

(und noch mal big big thx an PROWAG)
 
Gut für das Stoned, aber warum dann "High" an Stelle von "Hi"?

Weiter im Kontext.

Ich werde mich morgen mal etwas näher damit beschäftigen. Aber wenn die Artikelnummer einen Buchstaben beinhaltet, der mit eingegeben wird, dann kannst Du die die erste Funktion "validate()" rausschmeißen, weil die in ihrer momentanen Form einen Buchstaben nicht zulassen würde.

Verstehe ich das nun richtig?

- Die eingegebene Artikelnummer hat immer 8 Zeichen
- Das erste ist immer ein Buchstabe
- Das achte die Prüfziffer
- Mit der 2. - 7. Stelle wird gearbeitet
- Daraus wird Produktnummer erstellt und draus Prüfziffer errechnet.

Was dann????

Soll dann nur noch die Letzte Stelle der Eingabe mit der errechneten Prüfziffer verglichen werden und bei Okay gehts irgendwie weiter oder muß mit der Produktzahl noch irgendwas gemacht werden?

Gib mal das Gesamtkonzept, denn die nun vorliegenden Daten verändern das obige Script nicht unerheblich.


Nun erstmal gute Nacht. ;)
 
Hallo;);)

Ja genau die letzte Stelle wird mit der errechneten Prüfziffer verglichen und wenns passt soll das script einfach nix mehr machen wenn die Zahlen nicht ident sind soll ned Fehlermeldung kommen!

Frage: Wann genau wird das script ausgeführt bzw. an welches Ereignis ist es gebunden?
Welche Ereignisse gibt es: zb: onEntry,LostFocus oder so???

Thx,Thx,Thx

Stoned
 
So, nun aber.

Habe mir Mühe gegeben einen sauberen und übersichtlichen Code zu schreiben, der Nachvollziehbar ist.

Sicherlich wird der eine oder andere Crack diesen Code noch verkürzen können - ich bin halt auch noch Anfänger ;)

Aber es funktioniert. Downloaden und in den Browser Laden. (Habe nur im IE5.5 geprüft). Die "Condensed Version" ist ohne remarks und halt platzsparender und unübersichtlicher.

EventHandler gibt es eine Menge. Hier habe ich es über eine Button mit OnClick gelößt. Du kannst es auch mit onBlur machen (wenn das Feld verlassen wird) oder wenn das Formular über Action="BLABLA" verschickt wird kann es mit onSubmit gemacht werden.

War jedenfalls ne gute Übung ;)

Viel Spaß.
 

Anhänge

  • artikelnr.zip
    1,8 KB · Aufrufe: 7
Jo funzt super!

Halli Hallo!

Big thx das script funzt super:)

jetzt muss ich es nur noch an meine asp anfügen und ein paar kleinigkeiten regeln

Aber dank deiner Hilfe bin ich jetzt schon fast fertig!

BIG BIG THX AN PROWAG!!!!!!!!


Stoned
 
Gern geschehen, Stoned!

Bei ASP kann ich leider garnicht helfen.....
Wenn noch Fragen sind zum Aufruf, kleinen Änderungen etc feel free to post your query.

Prowag
 
Zurück
Oben