Newsgroup: it.comp.appl.access
Titolo: Sostituire un carattere in immissione

Salve, non so per quale motivo il barcode che ho creato utilizzando il 
modulo di James Isle Mercanti viene "letto" male, ovvero stampo un valore
Re05/00001 e viene letto dalla pistola come Re05-00001. Posso nella text
che riceve il barcode fare in modo mche quel trattino sia sostituito dal
giusto carattere?
1000 grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 giusto carattere?
Nell'evento "Su Pressione" della textbox aggiungi:
Private Sub TuaTextBox_KeyPress(KeyAscii As Integer)
     If KeyAscii = Asc("-") Then KeyAscii = Asc("/")
End Sub
La conversione forzata potrebbe dipendere dal codice a barre usato: il 
Code 128 ha la "/" sia nella codifica A che nella B (la C è quella coi 
numeri da 00 a 99 accoppiati, la "/" in A e B usa la stessa sequenza di 
"15" nella C), mentre se non sbaglio è assente nel Code 3/9 e magari il 
componente (che non conosco) ha messo una pezza.
Tieni anche conto che alcuni scanner necessitano di essere impostati 
correttamente facendogli leggere le sequenze che di solito trovi sul 
manuale e senza le quali potrebbero utilizzare un set di caratteri non 
idoneo.
IG

 1000 grazie
Essendo abbastanza semplice e funzionale come sistema, ecco il codice da
inserire in un modulo 
Option Compare Database   'Use database order for string comparisons
Option Explicit
'
' barcode39.mdb
'
' Barcode Generator for Code 3 of 9, Code 39, and Mil-spec Logmars.
'
' version 2.0 (updated for MsAccess 97)
'
' (c) 1993-1999 James Isle Mercanti, Cocoa Beach, FL 32931  USA
' Permission granted for public use and royalty-free distribution.
' No mention of source or credits is required. All rights reserved.
'
' TO USE THIS CODE:
'
'   1 - Create Report with a TextBox control. (example named Barcode)
'       Make sure the Visible property is set to "No".
'   2 - Set On-Print property of section to [Event Procedure]
'       by clicking on the [...] and selecting "Code Builder"
'   3 - Confirm that the following code matches yours...
'
'      Sub Detail1_Print (Cancel As Integer, PrintCount As Integer)
'
'         Result = MD_Barcode39(Barcode, Me)
'
'      End Sub
'
'   4 - NOTE: The name of the section is "Detail1" for example only!
'       Your section might show a different name. Ditto for "Barcode".
'
'   5 - NOTE: To use on sub-forms, the Report name should be hard-coded
'       into the function. i.e. Rpt = Reports!MainForm!SubForm.Report.
'       The easy method is to just avoid using sub-forms and sub-reports.
'
Function MD_Barcode39(Ctrl As Control, Rpt As Report)
 
    On Error GoTo ErrorTrap_BarCode39
 
    Dim Nbar As Single, Wbar As Single, Qbar As Single, NextBar As Single
    Dim CountX As Single, CountY As Single, CountR As Single
    Dim Parts As Single, Pix As Single, Color As Long, BarCodePlus As
Variant
    Dim Stripes As String, BarType As String, Barcode As String
    Dim Mx As Single, my As Single, Sx As Single, Sy As Single
    Const White = 16777215: Const Black = 0
    Const Nratio = 20, Wratio = 55, Qratio = 35
 
    'Get control size and location properties.
    Sx = Ctrl.Left: Sy = Ctrl.Top: Mx = Ctrl.Width: my = Ctrl.Height
 
    'Set handle on control.
    Barcode = Ctrl
 
    'Calculate actual and relative pixels values.
    Parts = (Len(Barcode) + 2) * ((6 * Nratio) + (3 * Wratio) + (1 *
Qratio))
    Pix = (Mx / Parts):
    Nbar = (20 * Pix): Wbar = (55 * Pix): Qbar = (35 * Pix)
 
    'Initialize bar index and color.
    NextBar = Sx
    Color = White
 
    'Pad each end of string with start/stop characters.
    BarCodePlus = "*" & UCase(Barcode) & "*"
 
    'Walk through each character of the barcode contents.
    For CountX = 1 To Len(BarCodePlus)
 
        'Get Barcode 1/0 string for indexed character.
        Stripes = MD_BC39(Mid$(BarCodePlus, CountX, 1))
        For CountY = 1 To 9
 
            'For each 1/0, draw a wide/narrow bar.
            BarType = Mid$(Stripes, CountY, 1)
 
            'Toggle the color (black/white).
            If Color = White Then Color = Black Else Color = White
            Select Case BarType
 
                Case "1"
                    'Draw a wide bar.
                    Rpt.Line (NextBar, Sy)-Step(Wbar, my), Color, BF
                    NextBar = NextBar + Wbar
 
                Case "0"
                    'Draw a narrow bar.
                    Rpt.Line (NextBar, Sy)-Step(Nbar, my), Color, BF
                    NextBar = NextBar + Nbar
 
            End Select
        Next CountY
 
        'Toggle the color (black/white).
        If Color = White Then Color = Black Else Color = White
 
        'Draw intermediate "quiet" bar.
        Rpt.Line (NextBar, Sy)-Step(Qbar, my), Color, BF
        NextBar = NextBar + Qbar
 
    Next CountX
 
Exit_BarCode39:
    Exit Function
ErrorTrap_BarCode39:
    Resume Exit_BarCode39
End Function
Function MD_BC39(CharCode As String) As String
 
    On Error GoTo ErrorTrap_BC39
    ReDim BC39(90)
    BC39(32) = "011000100" ' space
    BC39(36) = "010101000" ' $
    BC39(37) = "000101010" ' %
    BC39(42) = "010010100" ' * Start/Stop
    BC39(43) = "010001010" ' +
    BC39(45) = "010000101" ' |
    BC39(46) = "110000100" ' .
    BC39(47) = "010100010" ' /
    BC39(48) = "000110100" ' 0
    BC39(49) = "100100001" ' 1
    BC39(50) = "001100001" ' 2
    BC39(51) = "101100000" ' 3
    BC39(52) = "000110001" ' 4
    BC39(53) = "100110000" ' 5
    BC39(54) = "001110000" ' 6
    BC39(55) = "000100101" ' 7
    BC39(56) = "100100100" ' 8
    BC39(57) = "001100100" ' 9
    BC39(65) = "100001001" ' A
    BC39(66) = "001001001" ' B
    BC39(67) = "101001000" ' C
    BC39(68) = "000011001" ' D
    BC39(69) = "100011000" ' E
    BC39(70) = "001011000" ' F
    BC39(71) = "000001101" ' G
    BC39(72) = "100001100" ' H
    BC39(73) = "001001100" ' I
    BC39(74) = "000011100" ' J
    BC39(75) = "100000011" ' K
    BC39(76) = "001000011" ' L
    BC39(77) = "101000010" ' M
    BC39(78) = "000010011" ' N
    BC39(79) = "100010010" ' O
    BC39(80) = "001010010" ' P
    BC39(81) = "000000111" ' Q
    BC39(82) = "100000110" ' R
    BC39(83) = "001000110" ' S
    BC39(84) = "000010110" ' T
    BC39(85) = "110000001" ' U
    BC39(86) = "011000001" ' V
    BC39(87) = "111000000" ' W
    BC39(88) = "010010001" ' X
    BC39(89) = "110010000" ' Y
    BC39(90) = "011010000" ' Z
 
    MD_BC39 = BC39(Asc(CharCode))
Exit_BC39:
    Exit Function
ErrorTrap_BC39:
    MD_BC39 = ""
    Resume Exit_BC39
End Function


    BC39(47) = "010100010" ' /
Ok, la barra è presente (non mi ricordavo proprio: per il codice 3/9 ci sono 
in giro i font gratuiti e non m'era mai venuto in mente di generarmelo a 
mano, come invece ho fatto a suo tempo per il 128, che necessita di un crc 
alla fine), quindi probabilmente è lo scanner che lo interpreta male.
IG

 1000 grazie
Il tuo scanner parla inglese.
Se hai il manuale segui la procedura di inizializzazione.
MAssimilaino