Newsgroup: it.comp.appl.access
Titolo: gestione codici alternativi

ho una tabella principale che contiene l'anagrafica dei codici
 
alcuni di questi hanno codici "alternativi", che possono essere 
molteplici (oggi per alcuni casi sono arrivato a sei)
 
al momento la tabella "SameAs" (due campi: codice e raggruppato) è 
riempita a mano: ogni volta che la fabbrica se ne inventa uno si va ad 
aggiungere il nuovo codice nell'anagrafica principale, insieme alla sua 
alternativa, poi si va a modificare il campo "raggruppato" della 
tabella SameAsdove sono elencati tutte le alternative
 
esempio scritto, che vale più di mille parole
 
supponendo che i codici A, B e C siano alternativi l'un l'altro, il 
campo raggruppato, per ognuno di essi, contiene A-B-C
 
in questo modo quando esporto in excel la ragazza vede subito eventuali 
alternative nel caso che la giacenza del codice originale sia a zero
 
ora capita sempre più frequentemente che ai tre qui sopra se ne 
aggiunga un quarto: la fabbrica se ne esce con un semplice "D è lo 
stesso di A" per cui si va sulla tabella SameAs, si cerca A, si trova 
la sorpresa che ci sono già anche B e C e alla fine si vanno a 
modificare, sempre a mano, i 4 record A,B,C e D allineando il relativo 
campo raggruppato
 
finché era uno ogni tanto lo si faceva senza porsi problemi, ma adesso 
arrivano file excel con decine e decine di righe per cui la cosa 
diventa stressante e DEVE essere migliorata
 
l'idea è di creare una nuova tabella SameAs dove la chiave (il codice) 
non è più univoca come adesso ma può essere multipla, e il campo 
raggruppato non è più la concatenazione dei codici alternativi (incluso 
l'originale) ma semplicemente un codice alternativo, operazione da 
ripetere invertendo i codici; la query dovrà quindi leggere tutti i 
record di SameAs corrispondenti a quello in elaborazione, accodando i 
codici alternativi in un solo campo di testo
 
ecco infine la domanda:
- avete un'idea migliore?
 
 
per create la lista pensavo a qualcosa del genere, leggendo la tabella 
Principale (b):
 
@alternative = QUOTENAME(b.Code) + ','
 
SELECT @alternative += QUOTENAME(a.SameAsCode) + ','
FROM SameAs a
WHERE a.Code = b.Code
ORDER BY a.SameAsCode;
 
e alla fine toglere l'ultimo carattere
 
SET @alternative = LEFT(@alternative, LEN(@alternative) - 1)
 
 
 
Grazie in anticipo, nel frattempo vado a finire il lavoro "a mano" :-)
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

 
 
se ho ben capito
io userei una tabella con un solo campo
 
tabella CodiciEquivalenti
campo Codici testo
 
se A001 B001 e C001 sono tre codici equivalenti li salverei in questa 
tabella con questa formattazione #A001#B001#C001#  dove # è un simbolo 
vietato nella codifica degli articoli
 
se mi arriva un D001 equivalente...mi basta accodarlo
 
#A001#B001#C001#D001#
 
trovare tutti i codici equivalenti di un cod dato si risolve con un 
banale select codici from codiciequivalenti where codici like '%#' + 
codice da cercare + '#%'
 
pulendo il risulto con un replace di quel # con uno spazio o un trattino
 
 
l'accodamento di un nuovo codice Z001 equivalente esempio a B001 si fa 
velocemente con un
 
update codiciequivalenti set codici=codici + '#Z001#' where codici like 
'%#B001#%'
 
 
 
BFS


Io ho una situazione simile, però i codici alternativi sono un po' diversi tra loro.
Tipo che un cliente vuole che su ogni barattolo venga apposta un'etichetta particolare. 
Allora ho creato una tabella AnagraficaPers collegata all'Anagrafica.
Per ogni codice in Anagrafica in AnagraficaPers posso avere 10 righe.
AnagraficaPers ha tre campi Codice Pers Note. 
Per ogni codice di default creo una riga in AnagraficaPers 
Quindi diversamente da te in Anagrafica vedo la somma delle giacenze dei vari codici.
Nella commessa è possibile inserire sia il codice semplice che il codice pers che viene indicato come Codice-Pers.
Spero di essere stato chiaro...

 chiaro...
 
grazie a entrambi, vedrò di fare qualche prova
