Newsgroup: it.comp.appl.access
Titolo: Lavorazioni sequenziali

Ciao a tutti, ho delle commesse che presentano una sequenza di
trattamenti. Vorrei poter gestire la sequenza dei trattamenti in modo
tale che se non ho eseguito il primo non posso passare al secondo, se
non ho eseguito il secondo, non posso eseguire il terzo, ecc.,
soltanto quando tutti i trattamenti saranno stati eseguiti la commessa
sarà considerata evasa (Campo CHIUSO= True). Nel mio caso il campo
Trattamenti contiene quali siano i trattamenti da eseguire, il campo
TotLavorazioni mi dice quanti siano i trattamenti, mentre TR contiene
il primo trattamento, TR1 il secondo e via dicendo. Ho inserito Campi
InTR e FinTR (boolean) per poter gestire l'inizio e la fine del
trattamento, 1) ma supponendo che FinTR del primo trattamento sia
false come faccio ad impedire il passaggio al secondo trattamento? 2)
se FinTr del primo Trattamento = true , come fare per passare al
secondo? 3) Se Tutti i FinTr (che corrisponderebbero al
TotLavorazioni) della commessa sono  = true allora il campo
CHIUSO=VERO. Risulta essere quindi una sequenza di operazioni con
verifica ma non so proprio che pesci prendere. Grazie
Num	Trattamenti     TotLavorazioni     InTR	TR         FinTR   InTR1
TR1   FinTR1
481	ZE/VP/ 	            2	                Si	ZE	No     no
VP       no
501	ZE/VP/ 	            2          	No	ZE	No     no         VP      NO
502	ZC/PU/PR/            3	                No	ZC	No     NO
PU      NO


La formattazione della tabella lascia molto a desiderare, riprovo:
Num	Trattamenti	TotLavorazioni	InTR	TR	FinTR	InTR1	TR1	FinTR1
481	ZE/VP/ 	                  2	             No	ZE	No	No	VP	No
501	ZE/VP/ 	                  2	             No	ZE	No	No	VP	No
502	ZC/PU/PR/	    3	            No	ZC	No	No	PU	No

 - Mostra testo tra virgolette -
Nessuna risposta, come mai?

 - Mostra testo tra virgolette -
aiutoo!

 - Mostra testo tra virgolette -
C'è nessuno?

 C'è nessuno?
Forse nessuno sa risponderti, non si è trovata una soluzione da darti.
Del resto hai spedito la richiesta da meno di due giorni.
Sicuro di voler gestire così questa situazione? Quanti campi TR hai in
tabella? 10? E quando arriverà una lavorazione che ne richiede 12?
Forse sarebbe meglio riprogettare la struttura dati e inserire i
trattamenti in una tabella a parte, un record per trattamento con un
numero sequenziale. Quando hai bisogno di inserire un nuovo trattamento
vai a cercare l'ultimo inserito, verifichi se è stato chiuso e ne
inserisci uno nuovo aumentando il progressivo, altrimenti mandi un msgbox
"Non puoi inserire altri trattamenti finché non viene chiuso l'ultimo.".
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 - Mostra testo tra virgolette -
Grazie e scusate per l'insistenza, ma ho il mio responsabile che mi
pressa ed io con le mie sole forze non riesco a trovare una soluzione.
Chiedo se è possibile trasformare (magari con una query) le righe in
colonne in modo da ottenere:
Commessa    Trattamento   Ntrat
481                  ZE               1
481                  VP               2
501                 ZE                1
501                 VP                2
502                 ZC                 1
502                 PU                2
502                 PR                3
Quindi trasformare la tabella da orizzontale a verticale ed aggiornare
il campo Ntrat come un progressivo di trattamento per quella commessa
(es. commessa 481 ha due trattamenti, ed in campo Ntrat li numera
progressivamente, commessa 502 ha tre trattamenti che vengono
riportati rispettivamente in campo Trattamento ed il campo NTrat
dovrebbe numerarli progressivamente).
Grazie e scusate di nuovo, ma sono veramente alle strette.

dottce...@iol.it
 ha scritto:




Il mio era solo un consiglio, se vuoi puoi anche tenere le cose così come
stanno, controllare che il trattamento precedente sia chiuso è ancora più
semplice perchè non ti serve recuperare il valore dell'ultimo record, ce
l'hai già sulla maschera.
Resta però il problema del limite nel numero massimo dei trattamenti.
Se scegli di normalizzare la tabella, trattandosi di un lavoro da fare
una-tantum puoi crearti una query di accodamento ed eseguirla più volte
accodando alla tabella prima i trattamenti del campo 1, poi quelli del 2,
ecc...
Per la numerazione progressiva se non hai tanti record puoi numerarli a
mano, altrimenti devi scriverti una piccola sub, vedi su
www.sitocomune.com
 o cerca con google groups "numerazione progressiva" o
simili.
In alternativa puoi incollare i dati in excel, incolonnarli, numerarli e
poi ricopiarli in access.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 - Mostra testo tra virgolette -
Grazie Marco, come realizzare  una query di accodamento ed eseguirla
più volte
accodando alla tabella prima i trattamenti del campo 1, poi quelli del
2. puoi mostrarmi l'esempio con i miei dati?

 2. puoi mostrarmi l'esempio con i miei dati?
Prima crei la nuova tabella vuota.
Crei una normale query di selezione che prenda i 3 campi InTR TR FinTR che
non sono vuoti (criterio Is Not Null).
La apri per assicurarti che selezioni i dati corretti.
Poi la cambi (menù Query) in query di accodamento.
Ti chiede a che tabella vuoi accodare i record, gli dai il nome della
nuova tabella.
Compare una nuova riga "Accoda a " in cui inserirai i nomi dei campi in
cui devono finire i vari dati.
Esegui con il punto esclamativo rosso, o da menù Query -> Esegui.
Verifichi che abbia inserito i record nella nuova tabella.
Torni in struttura query e sostituisci i campi InTR TR FinTR con InTR1 TR1
FinTR1, riesegui e riverifichi che abbia accodato i record alla tabella.
Ripetere per InTR2 TR2 FinTR2, InTR3 TR3 FinTR3, ecc....
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Ma devo fare tutto questo, o è possibile farlo con un ciclo?

 Ma devo fare tutto questo, o č possibile farlo con un ciclo?
E' possibile farlo con un ciclo ma se lo devi fare una volta sola stai
meno a farlo a mano.
Da VBA componi la stringa SQL:
SQL="INSERT INTO Tabella1 ([nome campo], [nome campo], ...) SELECT ([nome
campo], [nome campo], ...) FROM Tabella2;"
e la esegui:
currentdb.execute SQL
Se non hai pratica con l'SQL crea la query col generatore e poi vai a
leggerlo, o usa l'help <F1>.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 - Mostra testo tra virgolette -
ok grazie