Rivedendo il tutto:
in una maschera è presente una text box dove, tramite un lettore barcode, viene sparato il codice a barre dei prodotti e sull'evento after update vengono estratti i dati del barcode e popolate le caselle relative a lotti e scadenze; successivamente il focus si sposta su una combobox dove viene scelto il tipo di prodotto.
quindi non si tratta di carico/scarico ma di prelievo per lavorazione. il form è una scheda di lavorazione e trasformazione da materia prima a prodotto finito.
Ora, la domanda è ( e potrà essere anche banale!!!) visto che nel barcode è presente anche il codice relativo al prodotto, e lo stesso codice è presente in una colonna della combobox, è possibile popolare automaticamente la combobox prendendo il dato dalla casella di testo?
in pratica batti l'ean128 ed estrapoli ean13 più altre informazioni.
visto che la combo punta su questa tabella:
punto 1) tblmatrice{id ;codice ;prodotto in uscita; prodotto lavorato; chiaveesterna; ean13; chiavegs1}
e considerato che scrivi anche
punto 2)
estrae tutti i dati perfettamente ma non riesco ad assegnare il valore alla combobox, che per capirci ha origine dati da una tabella (la chiamo tabellaA) con: idprodotto, codiceprodotto, ean13.
significa che la combo attinge da tabellaA vedi punto 2.
ma poi scrivi che la combo è legata alla tabella tblmatrice vedi punto 1...
e che la combo ha un campo che identifica il tipo di lavorazione vedi punto 3
punto 3)
codice: (testo) è un codice interno che distingue univocamente i prodotti (esempio "me" = mele, "ba"= banane, "pa" = pane, "pa4" = pane a fette", ecc)
della tabella tblmatrice alla quale è collegata la combo...
secondo me, posso anche sbagliarmi, hai fatto confusione.
chiarito quanto sopra, se stai creando il foglio di lavorazione (distinta base) e vuoi partire dalle info della materia prima allora devi:
- avere una textbox indipendente dove battere l'ean
- estrapolare i dati che servono
- creare la sql per la combo
- inserire un nuovo record
- precaricare i dati estratti dall'ean
a questo punto, faccio un'osservazione: esplodendo l'ean 128 perchè non metti le info ricavate su delle variabili? non si pagano...
Var_EAN13 = Mid(ean128, 4, 12)
Var_LOTTO = Mid(ean128, 37, 8)
Var_scadenza = CDate(Mid(ean128, 33, 2) & "/" & Mid(ean128, 31, 2) & "/" & Mid(ean128, 29, 2))
Var_pesogrammi = Mid(ean128, 21, 6)
ricavate le info ti serve che la combo mostri tutte le trasformazioni che puoi fare da quella materia prima ma non è chiaro se la tabella collegata, ammesso che sia la tabella "tblmatrice " e' in insert, visto che l'ean128 ancora non esiste, o sia in edit.
credo che la combo si deve collegare ad una tabella, chiamiamola "tipoditrasformazione" che contenga l'elenco dei codici del punto 3.
a sua volta la colleghi con "tblmatrice".
ricapitoliamo:
se hai un ean128 ricavi i dati e vai in insertmode con la tabella "tblmatrice " preinserendo i dati estrapolati. il dato codice lo prendi dalla combolookup inserendo l'id ma mostrando il testo "me, ba, ecc.."
prodotto in uscita è quello dell'ean13 estrapolato, prodottolavorato sarà un id del prodotto finito, l'ean sarà l'ean del prodotto finito e chiave gs1 il nuovo ean128 in etichetta al prodotto finito.
Ora, la domanda è ( e potrà essere anche banale!!!) visto che nel barcode è presente anche il codice relativo al prodotto, e lo stesso codice è presente in una colonna della combobox, è possibile popolare automaticamente la combobox prendendo il dato dalla casella di testo?
devi popolare la combo, o per meglio dire, devi estrapolare i dati da associare alla combo, con una query.
se alla tabellaA) con: idprodotto, codiceprodotto, ean13. aggiungi il campo id e il campo codice (quello con me, ba, ecc..) allora puoi associatlo alla combo.
tabellaA
id idprodotto codiceprodotto ean13 codice
1 1 a234 xxxx me
2 1 b234 xxxx ba
3 1 x234 yyyy me
4 1 j234 yyyy ba
ecc...
la combo la popoli con id prodotto (non so se ean si riferisce alla materia prima)
select * from tabellaA where codiceprodotto=[var_ean13]
tornando all'inizio, se non hai l'ean128 iniziale dal quale estrapoli tutto:
se textbox=''
apri form mateiaprima
selezioni materiaprima,
ti riporti l'ean su Var_EAN13,
apri tabella lottidisponibili e ti riporti il lotto su Var_LOTTO, ecc..
e riprendi l'esecuzione come dopo aver battuto l'ean128 (magari lo ricostruisci in textbox=ean13 + '(10)' + lotto ecc... e rifai l'after update... che stavolta non sarebbe Textbox='' e avvia tutto l'ambaradan e se non esiste ean13 forzalo a 1234567890128 facendo attenzione che se ean=1234567890128 allora ean=null nel momento del carico e lavorare su id_articolo).