forTeesSake Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 hi, kennt jemand oder hat jemand eine funktion in vb/vba zur überprüfung ob eine eigegebene isbn nummer richtig ist? habe hier mal einige informationen zusammengeschrieben. is natürlich nicht das problem die funktion zu schreiben, aber das kostet einiges an zeit. und warum das rad nochmal erfinden? wäre toll wenn jemand was weiss. hier die infos: (bitte nicht selbst schreiben. möchte nur die info ob und wo es so eine funktion schon gibt. die funktion sollte nur diese u.g. dinge alle miteinbeziehen.) -------------------------------------------------------------------------------------------------------- Die ISBN hat folgendes Format, nicht alles müßte gestestet werdena-b-c-da = Länderkennzahl, ist einstelligb = Verlagskennzahl, ist 3-5 stelligc = Buchkennzahl, ist 3-5 stellig, wobei gilt: b+c = 8 (große Verlage mit großem Programm bekommen eine kleine Verlagsnummer, damit mehr Bücher möglich sind, wenn trotzdem voll, bekommen diese Verlage eine weitere Verlagsnummerd = Prüfziffer (0...9,X) wobei ich die Regel nicht kenne, nach der sie gebildet wird (Prommi kennt sie). Ich habe da was bei Google-Groups gefunden:Eine ISBN-Nummer kann auf ihre Gueltigkeit durch einen einfachen Algo- rithmus ueberprueft werden, der alle Ziffern einschliesst. ISBN 3 8 8 0 5 3 0 0 2 5 Multiplikator 10 9 8 7 6 5 4 3 2 1 --------------------------------------------- Ergebnis 30+72+64+ 0+30+15+ 0+ 0+ 4+ 5 = 220 Wenn das Ergebnis ohne Rest durch 11 dividiert werden kann, ist die ISBN-Nummer gueltig. Dem Zeichen "X" in der ISBN wird der Wert 10 zugeordnet. Zitieren
developer Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Habe nichts darüber gefunden. Ist aber doch ein einfacher Algorithmus. Warum in den fernen des Internets nach nem Schnipsel Code suchen, wenn man das selbst leicht hin bekommt? Das sind ne Handvoll Zeilen Code. ...und ich weiss, dass er keine Bugs hat Zitieren
forTeesSake Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 hast ja recht. dachte halt dass jemand schnell ne seite parat hat... hab im moment das problem dass zu grosse zahlen z.b. 6234567890 Modulo 11 einen überlauf verursachen.. Zitieren
Gast Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 Original geschrieben von forTeesSake ... hab im moment das problem dass zu grosse zahlen z.b. 6234567890 Modulo 11 einen überlauf verursachen.. Original geschrieben von forTeesSake Ich habe da was bei Google-Groups gefunden:Eine ISBN-Nummer kann auf ihre Gueltigkeit durch einen einfachen Algo- rithmus ueberprueft werden, der alle Ziffern einschliesst. ISBN 3 8 8 0 5 3 0 0 2 5 Multiplikator 10 9 8 7 6 5 4 3 2 1 --------------------------------------------- Ergebnis 30+72+64+ 0+30+15+ 0+ 0+ 4+ 5 = 220 Wenn das Ergebnis ohne Rest durch 11 dividiert werden kann, ist die ISBN-Nummer gueltig. Dem Zeichen "X" in der ISBN wird der Wert 10 zugeordnet. Mit der Methode aus Deinem ersten Post ist es nicht möglich eine 10stellige Zahl zu bekommen. Ich denke Du musst die Quersumme mod 11 nehmen. Zitieren
forTeesSake Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 die funktion habe ich nun endlich selbst geschrieben. wen es interessiert, hier sind die formeln. morgen werde ich dann noch meinen code in vb(a) posten. hab ich leider heute nich mehr geschafft. isbn gültigkeit danke an alle Zitieren
forTeesSake Geschrieben 10. Oktober 2003 Autor Geschrieben 10. Oktober 2003 wie verspochen die funktion: Public Function isISBN(tmpISBN) Dim i, tmpISBNNum Dim retVal: retVal = False Dim arAllNumbers(10), addedNumbers tmpISBN = Replace(tmpISBN, "-", "") tmpISBN = StrConv(tmpISBN, vbLowerCase) tmpISBNNum = Replace(tmpISBN, "x", "10") If IsNumeric(tmpISBNNum) Then If Len(tmpISBN) = 10 Then For i = 0 To Len(tmpISBN) - 1 arAllNumbers(i) = Replace(Mid(tmpISBN, i + 1, 1), "x", "10") Next For i = 0 To UBound(arAllNumbers) - 2 addedNumbers = addedNumbers + CInt(arAllNumbers(i)) * (i + 1) Next If CInt(addedNumbers) Mod 11 = arAllNumbers(UBound(arAllNumbers) - 1) Then retVal = True Else If MsgBox("Die ISBN ist ungültig. Trotzdem übernehmen?", vbYesNo) = 6 Then retVal = True End If Else If MsgBox("Die ISBN ist ungültig. Trotzdem übernehmen?", vbYesNo) = 6 Then retVal = True End If Else If MsgBox("Die ISBN ist ungültig. Trotzdem übernehmen?", vbYesNo) = 6 Then retVal = True End If isISBN = retVal End Function Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.