Newsgroup: it.comp.lang.visual-basic
Titolo: codici a barre

Salve a tutti, ho un problema con i codici a barre.
Una volta inseriti i dati letti da un codice a barre in una
casella di testo,  vorrei che il programma automaticamente
elaborasse i dati del prodotto.
Se uso Text1_Change(), il programma mi si inchioda
dato che mi scrive il primo e poi non mi fà più niente.
 Ho provato a limitare la lunghezza  a 12 caratteri,
ma esistono codici anche da 5 e da 8 come
posso fare. Grazie in anticipo Alberto.

Non so come funzionino i lettori di codici a barre nel senso che non ho 
mai provato a usarli in un mio programma. Ma so che tramite seriale (o 
forse anche parallela?) invia dei dati al programma.
Ora... insieme al codice ti viene anche inviato un carattere finale che 
indica che il codice è terminato?
Cioè hai un modo per capire quando hai ricevuto tutte le cifre del 
codice a barre? Se hai modo per saperlo allora puoi sfruttare quel 
momento per richiamare una funzione che elabori il prodotto.
Comunque, il fatto che il programma si inchiodi sull'evento Change della 
textbox mi insospettisce: evita, una volta che ti trovi nell'evento 
change o in una funzione richiamata dall'evento chamge, di scrivere 
ulteriormente qualcosa in quella casella di testo.
Cioè se assegni un valore alla proprietà Text della tua casella di 
testo, si genera l'evento text.
Tu in quell'evento fi sicuramente qualche operazione di dati da un database.
Però dopo aver letto i dati, non devi scrivere niente nella casella di 
testo perchè in quel modo provocheresti ancora l'evento change, che a 
suoa volta ri-leggerebbe dei dati dal db e ri-scriverebbe qualcosa nella 
casella di testo, e così via all'infinito.
Oppure, in linea di massima, setta un flag in modo che all'ingresso 
nella funzione TextBox_Change tu esegua il controllo:
Sub TextBox_Change()
   If Flag Then
     ...
     Leggo dal DB
     Scrivo i dati
     ....
   End If
End Sub
In questo modo, settando il flag su False, quando viene richiamato il 
metodo change non viene eseguito il codice che potrebbe portarti al loop 
fatidico.
-- 
Quando noi ignoranti eravamo di più, tutto era più bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

 ha scritto nel messaggio
news:t_gsd.456107$
35.19...@news4.tin.it

Premesso che è quasi sempre meglio usare un lettore seriale che puoi controllare meglio, ti
consiglio di non utilizzare l'evento change, ma di impostare un carattere finale sul lettore (ad
esempio un Invio) e poi utilizzare l'evento Keypress della textbox
bye
-- 
"Seminate Linux, che Windows si pianta da sè...." (Antico Adagio)
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.nicolaottomano.it/public/sinapsi.htm
email spamtrap: 
spam...@nicolaottomano.it
Velocipedi Equestri su
http://www.nicolaottomano.it/velocipedi_equestri.htm

Si avete ragione tutto sta ad impostare un carattere finale che mi avverte 
che il codice è terminato.
E' difficile impostare questo carattere, o meglio ancora il carattere Invio 
? (non ho sottomano il lettore)


Se il lettore e' ad emulazione tastiera il carattere invio lo manda subito
dopo il codice ,di default .
Ciao

 Ciao
Adesso provo Grazie Mille.

 ha scritto nel messaggio
news:JKhsd.253260$
b5.12...@news3.tin.it

O comunque è tutto scritto sul manuale del lettore (di solito sono dei codici a barre da leggere i
quali configurano il lettore)
