Newsgroup: it.comp.appl.access
Titolo: [AIUTO] Dovrei fare... questo!

Ciao a tutti! Devo assolvere un piccolo incarico. Ma non ho molto chiaro se
sto usando lo strumento giusto ( Access ) e, evventualmente, non ho chiaro
come farlo praticamente.
Praticamente devo "costruire" un piccolo questionario da STAMPARE. Il
questionario rimarra praticamente identico tranne che per alcune cose.
Esempio: Ogni pagina del questionario dovra essere numerata. Quindi io dovrò
fare 200 copie dello stesso foglio, solo che per ogni foglòio ci dovrà
essere stampato un progressivo diverso. Credo che per fare questo si possano
usare i report di ACCESS... ma come far cambiare ogni numero per stampa?
Questo è il problema 1.
Problema 2, credo di piu facile soluzione, è fare in modo che io abbia una
maschera dove creare il questionario. Mi spiego meglio. La struttura del
foglio è sempre la stessa, però, prima di andare in stampa dovrei inserire
il nome dell'intestatario del Questionario ( farò una tabella anagrafica per
questo ), poi, siccome l'intestatario della del questionario avrà
un'autovettura in dotazione, selezionare una targa e vedere automaticamente
complilati i campi del questionario relativo alla macchina ( farò anche in
questo caso un'anagrafica autovetture ).
Cerco di fare uno schema del questionario qui sotto per far capire meglio.
Nome "titolare questionario": ( selezionabile con menu a tendina )
Data: _ / _ /____ ( da far compilare A MANO dal titolare questionario )
Numero foglio: ( da 1 a 200 - nel senso che ogni foglio deve avere un
progressivo diverso mentre tutto il resto deve essere ugale! Non posso
mettermi a cambiare ogni volta il record e poi lanciare la stampa...
sopratutto se devo farlo 200 volte per 10 persone diverse!!)
Km partenza: ( da lasciare in bianco da far compilare )
Km arrivo: ( da lasciare in bianco da far compilare )
Automezzo: ( da compilare automaticamente con la selezione TARGA )
TARGA: ( selezionare targa da menu a tendina, e relativo 
agg.to
 del campo
automezzo )
CLIENTE: da lasciare in bianco
CITTA: Lasciare in bianco
NOTE: da lasciare in bianco
Questo dovrebbe essere il prodotto finale a cui dovrei arrivare. Le parti
relative all'automezzo e alla targa possono essere momentaneamente
tralasciate.
Ho pensato a ACCESS anche per poter pensare in un prossimo futuro ad una
elaborazione dei dati raccolti... insomma per poterli facilmente inserire
nel DB secondo già una struttura conosciuta per una post elaborazione.
Ho fatto lo stesso questionario anche con EXCEL... proprio per avere la mera
stampa del questionario nel frattempo che capisco se posso usare ACCESS...
ma non sò come dire ad EXCEL di cambiarmi numero progressimo di foglio per
ogni stampa. Ho provato ad incollare il contenuto della prima pagina di
stampa nella seconda... ma siccome le righe non sono tutte alte uguali,
nella copia mi si è "sballato" tutto... ed anche in questo caso non posso
mettermi a correggiere riga per riga per 200 pagine...
Grazie a chi volesse consigliarmi e aiutarmi!
Marco
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:151Z36Z79Z205Y1...@usenet.libero.it...

Accoda tutto ad una tabella di appoggio che conterrà oltre ai campi del
questionario l'elenco dei clienti con città e note.
Nella tabella prevedi un campo Numerazione e durante l'accodamento dei
record lo incrementi di uno.
Sarà questa tabella ad alimentare il report che a questo punto conterrà
tutte le pagine da stampare.
Ciao, Carlo

 ha scritto nel messaggio
news:151Z36Z79Z205Y1...@usenet.libero.it...
Dovresti scrivere un subject più significativo!!!
Antonio

 tutte le pagine da stampare.
Ok... ma come faccio a farlo? :(( Praticamente intendo!
Marco

 ha scritto nel messaggio
news:asq6ql$tfe9o$1...@ID-48897.news.dfncis.de...

Siccome non è chiaro il quesito, ti ho dato delle indicazioni di massima.
Il questionario va stampato uguale per ogni cliente? In quante copie per
ogni cliente?
Se devi stampare 200 volte lo stesso questionario ma con il cliente sempre
diverso allora una soluzione è quella di accodare in una tabella, che abbia
tutti i campi propri del questionario anche un campo per il cliente, il
numero di record che ti servono.
Questo lo puoi fare da codice o, dipende come hai strutturato il db, con una
query di accodamento.
E' chiaro che prima di accodare i dati dovrai svuotare la tabella dai dati
eventualmente presenti. Questo lo puoi fare da codice o con una query di
eliminazione.
Per il numero di copie uguali leggiti il metodo PrintOut dell'oggetto DoCmd
che simula in tutto e per tutto le istruzioni di stampa. Bisogna prima
aprire il report. Tieni presente che è anche possibile stampare le maschere.
Per spiegazioni più dettagliate dovresti fornire bene la finalità, cosa ti
aspetti di ottenere.
Ciao, Carlo

Allora incomincio imprecando perche ho scritto per 20 min e poi mi si è
perso tutto il mex per una mia distrazione!
Dicevo. auff. Sarò piu breve.
In poche parole il risultato che vorrei ottenere è simile a quello che avrei
stampando 200 pagine uguali da word con la funziona numera pagine attivata.
Solo che con il mio DB vorrei accedere ad una maschera che mi chiedesse, il
nome del cliente: Tizio, ( il numero di copie magari... ma cmq và bena anche
un numero fisso = 200 ). Evventualmente la targa del mezzo. Date queste
informazioni mi dovrebbe partire una stampa di 200 fogli, tutti uguali,
eccezion fatta per il numero di pagina, con stampati Nome ( TIZIO ) e poi
una serie di stazi vuoti da compilare a mano dal cliente.
Per adesso ho trovato una soluzione, che non lo è però, che consiste nel
creare una tabella da 200 record, di cui un campo si chiama NOME dove
all'interno copio e incollo ( per 200 volte!!! ) il nome del cliente. Ma non
è accettabile come soluzione.
Io non sono molto pratico di ACCESS... cosa servono le tabelle accodamento
di cancellazione ecc ecc che hai menzionato? Adesso andrò a vedere sull'help
in linea anche... comunque non ho neanche ben capito qualè il meccanismo
pratico che vuoi usare... cioe non ho capito che vuoi fare in parole povere!
:(


 di cancellazione ecc ecc che hai menzionato?
Se non sei pratico come dici tu, usa semplicemente una query di
aggiornamento sull'evento afterupdate.
ciao MAssimiliano


 aggiornamento sull'evento afterupdate.
Mmm... query di aggiornamento sull'evento afterupdate? Potresti essere piu
chiaro?
Cosa fà questa query? Nel senso... che cosa auto aggiorna?
Io ho una tabella di questo tipo:
ID
ID_Nome
poi ho una tabella con l'anagrafica dei nomi
ID_Nome
Nome
Giusto?
Tutti gli altri campi dici che li devo mettere? In fondo saranno sempre
VUOTI. Potrei creare bordi ed etichette mentre mi faccio il layout del
report... tanto serviranno solo per far capire dove scrivere con la cara
vecchia penna una volta fatte le stampe.
A questo punto... dove và a lavorare la query?
Ciao e grazie
Marco


Adesso ho idea un pochino piu chiara di come funziona una query di
aggiornamento.
Prima ho fatto una tabella con 40 record( non avevo voglia di arrivare a 200
per questa volta ).
Poi ho creato una query di 
agg.to
 è ho messo in aggiorna a: il valore
"pluto". Mi ha aggiornato tutti i record indicati alla tabella Conta campo
Nome.
Poi ho creato una seconda tabella. Chimata Nome, con dentro un contatore e
un campo Nome.
Ho modificato la query e ho scritto in agg. a: [nome].[nome] ... ha
funzionato. tutti i record sono stati cambiati.
Poi ho creato ancora un terza tabella. Anagrafica_nomi. con dentro un
contatore e tutti i nomi che mi servono ( pippo, pluto, minni, e marco! ).
Sono andato in Tabella nome e alla voce nome ho fatto una "ricerca" in modo
da poter selezionare automaticamente i nomi da una lista ( quella di
anagrafica_nomi ) ... a questo punto però la query non funziona piu. Perche?
Non gli piace lo script di ricerca associato al nome che dovrebbe usare per
fare il cambio?
Sto procedendo nel modo giusto?


 contatore e tutti i nomi che mi servono ( pippo, pluto, minni, e marco! ).
quest aci serve.
Creati una maschera "maschera1" non associata, inserisci una casella
combinata "cas0" che ha come origine questa tabella.
Creati una query di aggiornamento che ha come criterio di aggiornamento
Forms!maschera1!cas0
sull'evento afterupdate lanci la query (un suggerimento spiccio:
l'autocomposizione ti fa eseguire una query associando ad un pulsante -
copia l'istruzione e applica all'evento che ti interessa)
fai un requery della tua tabella aggiornata.
FAtto
Fammi sapere, ci starņ ancora per un'oretta poi parte il mi week end.
ciao MAssimiliano


 ha scritto nel messaggio
news:151Z36Z79Z205Y...@usenet.libero.it...

A causa di un B.O. della mia ADSL posso risponderti solo ora.
Crea una tabella CLIENTI con un campo contatore (ID) ed un campo GENERALITA
(di tipo testo con 100 caratteri) e non NOME che per Access è parola
riservata. In questa tabella (CLIENTI) potresti aggiungere anche la targa
del mezzo. Se pensi che le targhe possano essere più di una devi creare una
seconda tabella che contenga un campo ID, un campo Cliente (numerico) e un
campo Targa. Magari puoi aggiungere un campo TipoMezzo. Il campo ID della
tabella Clienti sarà legato al campo Cliente della tabella MEZZI con un join
di tipo uno a molti.
Avrai creato anche una tabella QUESTIONARIO con i campi che ti servono.
Questa non è indispensabile visto che con delle caselle di testo inserite in
un report hai raggiunto lo scopo e visto che le voci del questionario sono
sempre uguali.
Il report che dovrai stampare si alimenterà da una query realizzata dalla
tabella Clienti e che nella colonna ID ha nei criteri, il valore che avrai
selezionato dalla combo dalla maschera di scelta del cliente.
Ovviamente nella maschera di scelta del cliente avrai inserito una combo che
si alimenta dalla tabella Clienti e che ha la colonna associata alla colonna
ID.
Fatto questo hai fatto il grosso.
La stampa.
Sull'evento click di un pulsante della maschera scrivi questo codice:
DoCmd.OpenReport "NomeDelTuoReport", acViewPreview
DoCmd.SelectObject acReport, NomeDelTuoReport
DoCmd.PrintOut acPrintAll, 1, 1, acLow, 200, True
DoCmd.Close acReport, "NomeDelTuoReport"
Se tutto è stato fatto come descritto il report verrà stampato 200 volte.
Molte sono le modifiche che si possono fare. Per esempio al posto di 200
potresti inserire il valore derivato da una InputBox in modo da specificare
meglio il numero di pagine da stampare. Oppure lo stesso valore lo puoi far
scrivere all'utente in un controllo della maschera. In questo caso
l'istruzione DoCmd.PrintOut acPrintAll, 1, 1, acLow, 200, True diventa
DoCmd.PrintOut acPrintAll, 1, 1, acLow, Me.NumeroCopie, True
Leggi nella guida il metodo PrintOut.
Per il momento penso possa bastare.
Ciao, Carlo

Ho letto in questo istante i tuoi consigli ( grazie intanto )... non ho
ancora avuto modo di metterli in atto, o almeno provarci, comunque più o
meno credo di aver capito. :)
Questo pomeriggio provo e ti faccio sapere se è andato tutto ok!
Marco

 DoCmd.Close acReport, "NomeDelTuoReport"
Per curiosità ho scritto anche il codice onClick... alla riga due ti
sei dimenticato le "virgolette"? Comunuqe mi dava un'errrore anche
alla riga tre ( una volta aggiunte le virgolette )... ma comunque di
questo, se vuoi, ne parleremo quando sarò sicuro che la struttura
tabella maschera query sia corretta!
Grazie
Marco

 Forms!maschera1!cas0
Mi creo un query di 
agg.to
 alimentata da quale tabella? NOME o
ANAGRAFICA_CLIENTI? In questo caso il criterio di 
agg.to
 và riferito alla
collonna ID od ad altra colonna?
Oltre questo non sono ancora arrivato perche mi sono fermato a quello che ho
appena detto!
Grazie
p.s. Per chiarezza ti faccio un piccolo schema di come sono adesso le due
tabelle principali... a scanso di equivoci!
Allora:
NOME
[ ID ][ NOME ]
[ 1 ][ Pippo ]
[ 2 ][ Pippo ]
ecc ecc ecc
[ 200][ Pippo ]
ANAGRAFICA_CLIENTI
[ ID ][ ANAGRAFICA ]
[ 1 ][ Pippo ]
[ 1 ][ Pluto ]
[ 1 ][ Minni ]
[ 1 ][ Marco ]
Marco
