Hoe application identifier door te geven naar txtVak

Status
Niet open voor verdere reacties.

HHunnekens

Gebruiker
Lid geworden
16 apr 2013
Berichten
63
Goedemorgen,

Graag zou ik in een tekstvak ( zeg genaamd txtSSCC code ) een EAN-bar-code voor een palletnummer willen afdrukken ( op een formulier of in een report ).

Als Application Identifier geldt dan (00), waarna het SSCC nummer van een pallet volgt ( een 18 cijferig nummer, laatste getal ervan zijnde een controlegetal ).

Voorbeeld ervan : (00)087178532700509541

Hierbij zou dus die (00) als application identifier moeten aangeven dat het dan volgende ( in dit geval het feitelijke SSCC nummer 087178532700509541 ) een palletnummer betreft. Let wel :
binnen EAN-128 kun je ook een hoop andere/alternatieve zaken (ook) opnemen, bijv. (01) voor de EAN13 van een doos op een pallet of (02) voor het aantal dozen op een pallet.

Ik kom wèl reeds zover dat ik bij "opmaak" voor zo'n tekst box er een font/lettertype aan kan hangen geschikt voor EAN128 ( bijv. het font "code 128" of het font "Code-128-DH" ). Hierna toont zo'n tekstvak zich uiterlijk wel al als barcode.

Als ik dan echter aangeef Me.txtSSCC = "(00)087178532700509541" dan krijg ik toch NIET de juiste BARcode afgedrukt ... Kennelijk wordt niet "opgepikt" dat ik nou juist die (00) wil hebben, zijnde de aanduiding voor een SSCC palletnummer.

Mijn concrete vraag derhalve :

"Hoe aan zo'n tekstvak aan te geven dat die 087178532700509541 ook feitelijk is bedoeld te zijn van het identifier type (00) ?"

Hopend dat de vraag duidelijk geformuleerd is en dat er iemand is die ervaring heeft met dit onderwerp ...

Bij voorbaat heel hartelijk dank !

Mvg,

HH
 
Niet echt duidelijk, vrees ik. Een tekstvak heeft een fonteigenschap, die bij jou blijkbaar EAN128 is. Dan wordt het hele tekstvak opgemaakt in dat font. Als het resultaat niet is wat je verwacht, is ofwel het font verkeerd, ofwel de inhoud.
 
What's wrong ?

Goedemorgen,

Hetgeen fout is, zal - naar mijn inschatting - de inhoud zijn.

Dit omdat ik niet weet hoe ik aan dat tekstvak kan duidelijk maken welk type informatie het betreft ( dus bijv. een SSCC nummer, dan met application identifier (00) ).

Ik had gehoopt dat het "simpelweg" plaatsen van (00) in de waarde voor het tekstvak dit zou doorgeven, echter, dit blijkt niet zo te zijn. Er moet dus "iets anders" zijn om dit aan te kunnen geven.

Vraag is : "wat dan wel ?".

Mvg,

HH
 
Leg eerst eens uit wat "fout" is. Wordt de barcode niet gescanned? Komt er een error? Is de informatie incompleet?

Het tekstvak heeft er verder niets mee te maken, het is de ontvangende kant die je opgegeven informatie moet verwerken en herkennen.

Mogelijk vreet je ontvangende kant de haakjes () niet. Ik vermoed dat hier het probleem zit. haakjes mogen namelijk niet voorkomen in de tekst.
 
Laatst bewerkt:
Hetgeen fout is ...

... staat in de oorspronkelijke vraag uitgelegd.

Het gaat om het zelf maken van een barcode in een tekstvak ( in een report of formulier ).

Dit kan in beginsel door het lettertype dat ik genoemd heb op te nemen in de opmaak van het tekstvak.

Vervolgens dient het tekstvak een waarde te krijgen die maakt dat de juiste EAN128 wordt afgedrukt, resp. het juiste EAN128 "type" ( bedoel met de juiste application identifier ).

Het is me niet duidelijk hoe ik dat tekstvak de juiste waarde zo kan geven die 'ie snapt dat ik een (00) bedoel ( dus een palletnummer ).

Wellicht dient een bepaalde string opmaak te worden gebruikt, iets waarnaar ik dus op zoek ben.

E.e.a. heeft dus beslist NIETS met een barcodescanner te maken.

Mvg,

HH
 
Voor het goede begrip ...

... er is géén sprake van een foutmelding.

Mijn constatering is dat de feitelijke inhoud van de barcode niet klopt ( wel streepjes, maar niet de goede ).

Met dank en vriendelijke groeten,

Hans
 
je begrijpt me niet. je barcode is gewoon:

00<18cijfers>

Dat is hoe het systeem werkt, er is niets speciaals / geheims / anders. om die code te geven moet je er alleen 00 voor zetten. Wat wel kan missen is de FNC1 en start en stopcodes. Hoe je de FNC1 en codes uitdrukt in het font dat je hebt gekozen moet je even uitzoeken. In mijn set is dat volgens mij "*" voor FNC1 en <> voor start / stop

in mijn tekstvak staat dan :

<*00123456781234567890?>

Het vraagteken moet vervangen worden door de checksum. DAN krijg je een barcode die je direct kan scannen. Geef eventueel aan welke font je gebruikt dan kan ik exacte gegevens geven
 
Het door mij gebruikte lettertype heet "Code 128"

Code 128

Het zou reuze zijn als e.e.a. zo zou kunnen werken.

Het exacte voorbeeld :

Me.txtSSCC=<*00087178532700509565>

levert bij mij - helaas - niet de juiste streepjes op.

Hierbij is dus :

00 de bedoelde application identifier
08717853270050956 het palletnummer
5 de check digit.

Hopend op die exacte gegevens.

Bvd, met vriendelijke groeten,

HH
 
Helemaal correct, maarre ...

Hoi,

Dat geeft inderdaad de juiste streepjes !

Echter, hoe krijg ik mijn "normalere" SSCC nummers dan zo vertaald dat e.e.a. de juiste ( voor mij vreemd uitziende ) string oplevert voor Me.txtSSCC ?

Bestaat daar "iets goeds" voor dat ik kan programmeren in VBA ?

Of kun je juist een exact ander lettertype noemen dat ik zou gebruiken op een eenvoudiger manier ( met benoeming van die manier ) ?

Bij voorbaat heel hartelijk dank !

Mvg,

HH
 
Het is niet zo heel moeilijk:

Í = startteken; heb je altijd nodig (code C tabel)
Ê = functioncode 1; heb je altijd nodig om aan te geven dat er GS1 code volgt (valt SSCC onder)
Î = stopteken; heb je altijd nodig

daartussen staat letterlijk je getallenreeks + checksum

00 (spatie)
08 (
71 g
78 n
53 U
27 ;
00 (spatie)
50 R
95 Ã
65 a
25 9 (checksum uitrekenen aan de hand van de andere codes)

Deze tekens komen allemaal uit een tabel die geleverd wordt bij de font-set. De meeste zijn 32+waarde = ascii code. de enige uitzonderingen zijn 95 en hoger die zijn 100+waarde

dit is een eerste probeersel op een simpel form:

Code:
Private Sub CommandButton1_Click()
    Dim invoer As String
    
    invoer = TextBox1.Text
    
    uitvoer = Chr(205) + Chr(202)
    cijfer1 = 100
    checksum = 207
    ctel = 2
    For i = 1 To Len(invoer)
        
        If cijfer1 = 100 Then
            cijfer1 = Val(Mid(invoer, i, 1))
        Else
            totaal = cijfer1 * 10 + Val(Mid(invoer, i, 1))
            If totaal < 95 Then
                uitvoer = uitvoer + Chr(totaal + 32)
            Else
                uitvoer = uitvoer + Chr(totaal + 100)
            End If
            cijfer1 = 100
            checksum = checksum + totaal * ctel
            ctel = ctel + 1
        End If
    Next i
    
    If checksum Mod 103 > 94 Then
        uitvoer = uitvoer + Chr((checksum Mod 103) + 100)
    Else
        uitvoer = uitvoer + Chr((checksum Mod 103) + 32)
    End If
    uitvoer = uitvoer + Chr(206)
    Label1.Caption = uitvoer
End Sub

hier moet je label1.caption vervangen door je SSCC-textbox en textbox1.text vervangen door je input veld
 
Laatst bewerkt:
Heel, heel ...

hartelijk dank hiervoor !

Zal d'r morgen gelijk mee aan de slag kunnen.

Ik zal die tabel d'r verder bij zoeken.

Again, thanks a lot !

Mvg,

Hans
 
De tabel staat op de site die ik eerder gelinkt heb, samen met het font. Mijn voorbeeldcode gebruikt de tabel al, dus heb je eigenlijk verder niet nodig, behalve voor eigen lering ende vermaeck :p

Wel even een punt van aandacht: mijn voorbeeldcode doet alleen "C" encoding. dat betekend: alleen cijfers en alleen EVEN aantallen cijfers. Er zijn GS1 codes die oneven aantal getallen (kunnen) leveren. in dat geval moet je een A of B encoding toevoegen (laat ik hier even buiten beschouwing). De meest gebruikte GS1 codes zijn echter altijd even aantallen en dan is er dus geen probleem. (SSCC is altijd 20 met de 00; GTIN altijd 16 etc.)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan