Google Answers Logo
View Question
 
Q: BooklandEAN <--> ISBN Conversion for MS Access ( No Answer,   5 Comments )
Question  
Subject: BooklandEAN <--> ISBN Conversion for MS Access
Category: Computers > Programming
Asked by: oh_one_one-ga
List Price: $20.00
Posted: 24 Sep 2004 14:42 PDT
Expires: 29 Sep 2004 09:48 PDT
Question ID: 405981
I am an intermediate user of Access but don't have the patience to
learn VB. I need a very simple Access function (or piece of VBAccess
code, if you can show me how to plug it in) that will simply convert:

Bookland EAN <==> ISBN

bidirectionally. I'd basically like to plug, for example, a flat file
of EANs into the db and be able to run a query that spits out the EAN
and its corresponding ISBN. And vice versa. Code abounds on the
internet that shows how this can be done, and the math isn't too
complicated, but I can't find it scripted in VB for Access.

Tip for a complete answer by 9/27.
Answer  
There is no answer at this time.

Comments  
Subject: Re: BooklandEAN <--> ISBN Conversion for MS Access
From: donessive-ga on 28 Sep 2004 18:28 PDT
 
Well, here's one side of the conversion in VBA.  I'm a VB expert and
not an Access expert but was able to run this in VB and confirm the
conversion.  I also pasted it into Access to confirm the code is
valid:

Public Function ISBN2EAN13(ByVal sISBN As String) As String

    Dim iLoop As Integer
    Dim iEvenChkSum As Integer
    Dim iOddChkSum As Integer
    Dim sEAN As String
    Dim sChar As String
    Dim iChkSum As Integer
    
    sEAN = "978"
    
    If Len(sISBN) > 0 Then
        
        
        'Append the ISBN to the EAN-13 removing any dashes
        For iLoop = 1 To Len(sISBN) - 1
            sChar = Mid(sISBN, iLoop, 1)
            If IsNumeric("-" & sChar) Then
                sEAN = sEAN & sChar
            End If
        Next iLoop
        
        'Calculate the EAN-13 checksum digit
        If Len(sEAN) = 12 Then
            For iLoop = 1 To Len(sEAN)
                If iLoop Mod 2 = 1 Then
                    iOddChkSum = iOddChkSum + Int(Mid(sEAN, iLoop, 1))
                Else
                    iEvenChkSum = iEvenChkSum + Int(Mid(sEAN, iLoop, 1))
                End If
            Next iLoop
            
            iChkSum = (iEvenChkSum * 3) + iOddChkSum
            iChkSum = 10 - (iChkSum Mod 10)
            If iChkSum = 10 Then iChkSum = 0
        
            sEAN = sEAN & CStr(iChkSum)
                    
            ISBN2EAN13 = sEAN

        Else
            'Error here - length is not correct
        End If
        
    Else
        'Error here - ISBN is blank
    End If
    
End Function
Subject: Re: BooklandEAN <--> ISBN Conversion for MS Access
From: donessive-ga on 28 Sep 2004 18:29 PDT
 
I'll post the other conversion later.  Hope this at least helps you.
Subject: Re: BooklandEAN <--> ISBN Conversion for MS Access
From: donessive-ga on 28 Sep 2004 18:44 PDT
 
Here's the other conversion!  Enjoy!

Private Function EAN2ISBN(ByVal sEAN As String) As String

    Dim iLoop As Integer
    Dim sISBN As String
    Dim iChkSum As Integer
    
    If Len(sEAN) = 13 Then
         
        'Get the ISBN core 9 digits
        sISBN = Mid(sEAN, 4, 9)
        
        'Calc the ISBN checksum digit
        For iLoop = 1 To Len(sISBN)
            iChkSum = iChkSum + (Int(Mid(sISBN, iLoop, 1)) * iLoop)
        Next iLoop
        
        'If checksum mod is 10 then append an X otherwise the digit
        iChkSum = iChkSum Mod 11
        If iChkSum = 10 Then
            sISBN = sISBN & "X"
        Else
            sISBN = sISBN & CStr(iChkSum)
        End If
        
        EAN2ISBN = sISBN
        
    Else
        'EAN length error!
    End If
        


End Function
Subject: Re: BooklandEAN <--> ISBN Conversion for MS Access
From: oh_one_one-ga on 29 Sep 2004 08:30 PDT
 
Awesome, thanks, I'll test them out. Did you write these from scratch
or were you able to find them somewhere?
Subject: Re: BooklandEAN <--> ISBN Conversion for MS Access
From: oh_one_one-ga on 29 Sep 2004 09:48 PDT
 
Awesome, thank you so much, this is really useful for me and totally
works well in my database. donessive, I owe you one!

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy