Ciao buongiorno,
Chiedo cortesemente il Vs aiuto per mia manifesta incapacità.....
Ho creato un programma con access per effettuare delle operazioni di scarico materiale in un reparto.
La DistintaBase sulla quale si base il programma ha i seguenti campi estratti da SAP:
- IdDettDistintaBase: Codice progressivo ed univoco
- IdMateriale: Codice Padre comune a tutta la distinta di quel prodotto
- IdMaterialeFiglio: Sotto Componente del codice padre, che può essere un'assemblato o codice acquisto
- Livello: Livello di componente / sotto componente
- Phantom: Codice non gestito a sistema come magazzino, traatsi di sub-assieme. Se campo impostato a -1 è un phantom
Gli operatori scaricano codici gestiti a sistema (Phantom 0 e codici Phantom -1) sulla tabella "Scarichi" così composta:
IDScarico
DataScarico
IDMateriale
IDMaterialeFiglio
Quantità
Causale
Ho la necessità di accodare nella Tabella "DaProcessare" (che ha gli stessi della tabella "Scarichi") i dati Phantom 0 come caricati ed i Phantom -1 rielaborati riportando solo i sotto livelli sucessivi che lo costituiscono.
Esempio di distinta:
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
1 1 1 0 0
2 1 21367 1 -1
3 1 21342 2 0
4 1 21470 3 -1
5 1 21471 4 0
6 1 21589 5 0
7 1 15000 6 0
8 1 21729 5 0
9 1 21312 6 0
10 1 10500 4 0
11 1 11500 4 0
12 1 21658 3 0
13 1 21640 4 0
14 1 2647 4 0
15 1 21606 2 0
16 1 21634 2 0
17 1 21699 2 0
18 1 21700 2 0
19 1 21709 2 0
20 1 21710 2 0
21 1 21478 1 -1
22 1 21338 2 0
23 1 21472 3 -1
24 1 21473 4 0
25 1 21589 5 0
26 1 15000 6 0
27 1 21730 5 0
28 1 21311 6 0
29 1 10500 4 0
30 1 11500 4 0
31 1 21658 3 0
32 1 21640 4 0
33 1 2647 4 0
34 1 2403 2 0
35 1 21691 2 0
36 1 221 3 0
37 1 2529 2 0
38 1 21536 1 0
39 1 21537 2 0
40 1 242 3 0
41 1 2643 2 0
42 1 2644 2 0
43 1 2349 1 0
44 1 2357 1 0
45 1 21616 1 0
46 1 21618 1 0
47 1 21673 1 0
48 1 2206 2 -1
49 1 2382 3 0
50 1 2383 4 0
51 1 2378 5 0
52 1 2569 3 0
53 1 2582 3 0
54 1 21596 2 0
55 1 21597 3 0
56 1 21593 4 0
57 1 2338 2 0
58 1 2340 2 0
59 1 2576 2 0
60 1 2577 2 0
61 1 2467 1 0
62 1 2471 1 0
63 1 21698 1 0
64 1 2533 1 0
65 1 2540 1 0
66 1 25 2 0
Esempio:
Se operatore scarica il codice:
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
2 1 21367 1 -1
Il sistema non deve fare nulla e riportarmi la stesso codice in quanto Phantom 0
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
22 1 21338 2 0
Se viene scaricato il codice
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
2 1 21367 1 -1
Deve estrapolare i sotto livelli sucessivi con Phantom 0, vedi tratteggio vicino:
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
3 1 21342 2 0 ---------
4 1 21470 3 -1
5 1 21471 4 0
6 1 21589 5 0
7 1 15000 6 0
8 1 21729 5 0
9 1 21312 6 0
10 1 10500 4 0
11 1 11500 4 0
12 1 21658 3 0
13 1 21640 4 0
14 1 2647 4 0
15 1 21606 2 0 ---------
16 1 21634 2 0 ---------
17 1 21699 2 0 ---------
18 1 21700 2 0 ---------
19 1 21709 2 0 ---------
20 1 21710 2 0 ---------
è possibile che se viene scaricato un codice Phantom (-1) possa avere a sua volta un'altro codice Phantom -1 nel suo sotto livello, si dovrà scendere di livello e considerare quello sucessivo.
Esempio se nella tabella sopra un codice livello 2 era Phantom -1, solo per quel codice si doveva riportare il livello 3.
Un componente in distinta ha un'intervallo che va dal suo livello (esempio "1") al sucessivo livello uguale
IdDettDistintaBase IdMateriale IdMaterialeFiglio Livello Phantom
2 1 21367 1 -1
3 1 21342 2 0
4 1 21470 3 -1
5 1 21471 4 0
6 1 21589 5 0
7 1 15000 6 0
8 1 21729 5 0
9 1 21312 6 0
10 1 10500 4 0
11 1 11500 4 0
12 1 21658 3 0
13 1 21640 4 0
14 1 2647 4 0
15 1 21606 2 0
16 1 21634 2 0
17 1 21699 2 0
18 1 21700 2 0
19 1 21709 2 0
20 1 21710 2 0
21 1 21478 1 -1 -------------- Codice successivo
Spero di essere stato sufficientemente chiaro.
Ringrazio anticipatamente per l'aiuto
Grazie