Avatar billede joggeren Nybegynder
04. januar 2005 - 15:16 Der er 8 kommentarer og
1 løsning

Generering af stregkode

Jeg vil gerne have en funktion der generer en EAN kode udfra visse regler.

Den skal i tabellen "Etiket" tage den højeste EAN kode ud fra dette kriterie: Like "5705524******"

Eksempel på maks: 5705524132286

Derefter skal den generere næste EAN kode.. i dette tilfælde: 5705524132293

Funktionen skal ske ved afkrydsning af Ja/Nej feltet "Opret ean". Koden skal ind i feltet "ean kode". Alt sammen i tabellen "Etiket".

Evt. henvisning til udarbejde af EAN koder:

http://www.eksperten.dk/spm/514916

Har denne kode.. som blev brugt til at generere kontrolcifret:
Option Compare Database
Option Explicit
Public Function strEAN(strFirst12 As String) As String
  Dim intLoop As Integer, lngDummy As Long, strDummy As String
  strDummy = Right("000000000000" & strFirst12, 12)
  For intLoop = 1 To 11 Step 2
    lngDummy = lngDummy + 1 * Mid(strDummy, intLoop, 1)
    lngDummy = lngDummy + 3 * Mid(strDummy, intLoop + 1, 1)
  Next
  If lngDummy Mod 10 = 0 Then
    strEAN = strDummy & "0"
  Else
    strEAN = strDummy & 10 - (lngDummy Mod 10)
  End If
End Function
Avatar billede hnteknik Novice
04. januar 2005 - 15:31 #1
Kan du ikke bruge noget fra dengang jeg lavede løbende skadenr per dato:

Private Sub nytskadenr_Click()
   
Dim db As Database, rst1 As Recordset
Dim Qrylbnr As QueryDef
Set db = CurrentDb()
Set Qrylbnr = db.QueryDefs("qry-dagenmaxlbnr")
Set rst1 = Qrylbnr.OpenRecordset()
    'opret en ny post
    DoCmd.GoToRecord , , acNewRec
    ' hent nyt skadenr
        Me.skadenr = Format$(Now(), "yymmdd") & "-" & Format$(Val(NullTilNul(rst1!lbnr)) + 1, "000")
    'gem posten
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    'luk ned igen
    rst1.close
    db.close  'henrik
    Me.LkUpSkadenr.Requery
End Sub

qry-dagenmaxlbnr:

SELECT Max(Right([skadenr],3)) AS lbnr
FROM T02
WHERE (((Left([skadenr],6))=Format(Now(),"yymmdd")));

Der er i princippet det samme du skal igennem.
Udskift dato med EAN '5705524'
Henrik
Avatar billede joggeren Nybegynder
04. januar 2005 - 15:48 #2
hmm..måske.. men det kan jeg ikke lige finde ud af..
Avatar billede hnteknik Novice
04. januar 2005 - 16:06 #3
Jo du skal tage tallet ud af EAN - kontrolnummer. Noget i retning af dette:

SELECT Max(Midt([EANnr],7,12)) AS lbnr
FROM Tabeleannr
WHERE (Left([EANnr],7)="5705524"); ' altså hvis du har flere startnumre

.....
Me.EANNR= "5705524"& Format$(Val(NullTilNul(rst1!lbnr)) + 1, "000000000000")
Avatar billede hnteknik Novice
04. januar 2005 - 16:08 #4
Ups pas lige på at vi skal have sat kontrolnr i enden
Avatar billede hnteknik Novice
04. januar 2005 - 21:13 #5
har du fået det til at funke. Havde noget funktionelt kørende inden lukketid.
Avatar billede joggeren Nybegynder
05. januar 2005 - 08:36 #6
Har selv lavet en løsning. Tak for indsatsen...
Avatar billede hnteknik Novice
05. januar 2005 - 12:14 #7
Ok - men jeg syntes lige du skal have min løsning:

forespørgsel trækker det sidste nr frem:

SELECT Max(Mid([EANnr],8,12)) AS lbnr
FROM tblprodukt
WHERE (((Left([EANnr],7))="5705524"));

En knap på en formular danner det næste EAN nr i rækken ved en klikfunktion:

Private Sub NytEANnr_Click()
Dim db As dao.Database, rst1 As dao.Recordset
Dim Qrylbnr As dao.QueryDef, StregNr As String
Set db = CurrentDb()
Set Qrylbnr = db.QueryDefs("QRYMaxLbnr")
Set rst1 = Qrylbnr.OpenRecordset()
    'opret en ny post
    DoCmd.GoToRecord , , acNewRec
    ' hent nyt skadenr
        StregNr = Format$(Val(NullTilNul(rst1!lbnr)) + 1, "000000000000")
        Me.EANNR = "5705524" & strEAN(StregNr)
    'gem posten
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    'luk ned igen
    rst1.Close
    db.Close  'henrik
   
End Sub
Function NullTilNul(xEnhverVærdi As Variant) As Variant
' Parametre:    en værdi af typen Variant
' Formål:      Konverterer Null-værdien til nul.
' Returnerer:  Nul eller en værdi, der ikke er Null
' Reference:    Henrik Nielsen

    If IsNull(xEnhverVærdi) Then
        NullTilNul = 0
    Else
        NullTilNul = xEnhverVærdi
    End If


End Function

Hav en god dag
Avatar billede joggeren Nybegynder
05. januar 2005 - 14:09 #8
tak..
Avatar billede hnteknik Novice
05. januar 2005 - 14:22 #9
Takker selv - der var lige en udfordring, der skulle afprøves.
Det kunne jo være, at man engang fik brug for sligt stregkode.
Så magler vi lige noget, der kan lave stregkoden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester