Newsgroup: it.comp.appl.access
Titolo: [maschera] "pescare" dati da una tabella, incolonnarli e stamparli. come?

Ciao a tutti!
ho una domanda che credo sia di semplice risposta ma non riesco a
trovare una via d'uscita.
Ho una tabella con un elenco di macchine e per ciascuna macchina, dei
valori.
Vorrei avere una maschera sulla quale l'utente possa "creare" una nuova
tabella pescando i dati dalla tabella di cui sopra, possa aggiungere la
macchina selezionata, ripetere l'operazione tot volte e poi alla fine
stampare (e magari salvare in qualche modo) la nuova tabella con le
macchine che ha appena aggiunto. Se prima di stampare sulla maschera si
potesse visualizzare anche ad esempio la somma dei prezzi delle
macchine sarebbe il massimo.
Credo che sia abb. facile, ma come detto ho parecchia confusione sul
come e cosa fare...
Grazie 1000 per l'aiuto!
F

 ha scritto nel messaggio news:1157121953.0...@p79g2000cwp.googlegroups.com...

Con una o più tabelle temporanee che riempi e svuoti ad ogni scelta dell'operatore...
Ciao.
P.S. Non è sia proprio, semplice semplice...
-- 
Sergio MAZZA 

 Sergio MAZZA
grazie 1000!
F

 ha scritto nel messaggio 
news:1157356179.6...@h48g2000cwc.googlegroups.com...
Grazie per la risposta Sergio!
allora, "pensavo" a una cosa de genere:
-tab1 elenco macchine con tutti i dati
-tab2  vuota ma con gli stessi campi
-maschera basata su tab 1 che prende i dati e li mette in tab2, fa
ripetere l'operazione, stampa un report bastao su tab2 e poi svuota
tab2 (magari se riesco ad archiviare il contenuto di tab2 per poi
rivederlo in un secondo momento sarebbe ottimo).
posso fare tutto con macro VB?
[risposta]
Con macro no; ma con VBA sicuramente.
ecco appunto, olè... ;-(
Mi sapresti indicare dove posso trovare un esempio da cui trarre
ispirazione?
[risposta]
Di esempi non credo ne esistano, dovresti trovare qualcuno che ha avuto la 
tua stessa necessità e ha utilizzato questa soluzione. In effetti io ho 
fatto una cosa del genere ma è personalizzata per quella persona/problema; 
io posso indicarti in linea generale i passi per realizzarla.
grazie 1000!
F
[risposta]
La difficoltà più grande è la realizzazione della form che dovrà soddisfare 
le esigenze dell'utente per la ricerca (leggi: criterio per il fitro dei 
dati).
La form non necessariamente deve essere associata, anzi direi proprio di no; 
una volta definiti i controlli e le funzionalità con una query di 
cancellazione svuoti la tab2 e con una di accodamento la riempi...
Ciao.
-- 
Sergio MAZZA 


ho creato una maschera "Elenco macchine" che mi visualizza le macchine
come un elenco e tramite VBA, con caselle combinate e codice tipo
"SELECT ...FROM ..WHERE" riesco a ridurre l'elenco filtrando solo le
macchine che mi interessano, in base al tipo o altro.
Ora vorrei avere la possibilità, una volta selezionato il record che
mi interessa, di inserirlo in una tabella (che ha gli stessi campi
della tabella elenco macchine) e visualizzare questa tabella (Nuova
tab) nella maschera "Elenco macchine" (per es. alla fine). Come faccio,
creo una sottomaschera legata alla tabella "Nuova tab"e la inserisco
nella maschera "Elenco Macchine"? come faccio a dirgli di inserire
nella Nuova tab il record selezionato e visualizzarlo? E per
aggiungerne uno nuovo?
Spero di essermi spiegato,
Grazie 1000 per l'aiuto!!!
F

 ha scritto nel messaggio 
news:1157366540.4...@i42g2000cwa.googlegroups.com...
ho creato una maschera "Elenco macchine" che mi visualizza le macchine
come un elenco e tramite VBA, con caselle combinate e codice tipo
"SELECT ...FROM ..WHERE" riesco a ridurre l'elenco filtrando solo le
macchine che mi interessano, in base al tipo o altro.
Ora vorrei avere la possibilità, una volta selezionato il record che
mi interessa, di inserirlo in una tabella (che ha gli stessi campi
della tabella elenco macchine) e visualizzare questa tabella (Nuova
tab) nella maschera "Elenco macchine" (per es. alla fine). Come faccio,
creo una sottomaschera legata alla tabella "Nuova tab"e la inserisco
nella maschera "Elenco Macchine"? come faccio a dirgli di inserire
nella Nuova tab il record selezionato e visualizzarlo? E per
aggiungerne uno nuovo?
Spero di essermi spiegato,
Grazie 1000 per l'aiuto!!!
F
[risposta]
Aspé! Se hai già filtrato la sottomaschera utilizzando il metodo 
Filter/FilterOn e vuoi utilizzarlo per il report non fai altro che fare:
DoCmd.OpenReport "nomeReport",,,Me!nomeSottomaschera.Form.Filter
Ciao.
-- 
Sergio MAZZA 


Sergio, grazie per l'aiuto!
Allora mi spiego meglio:
ho una maschera  con cui faccio "una ricerca" tra i record di una
tabella...di 100 macchine filtro e, ad esempio, ne vedo 3 (18, 30, 58).
di queste tre vorrei selezionarne una  (es. macchina n18) e
passare/copiare/altro il record (cioè tutte le informazioni) in una
nuova tabella che vorrei anche visualizzare nella maschera principale
(uso una sottomaschera?) Questa tabella/maschera da vuota diventerà
con un record.
Poi vorrei ritornare all'elenco principale, fare una nuova ricerca
filtrando ancora le 100 macchine e riducendo il numero a 5 per es. Di
queste 5 sceglierne una (la 43) e con un tasto aggiungerla alla tabella
"ex vuota" che adesso ha 2 record (il 18 e il 43). E così via, per un
tot di volte. Quando ho finito di aggiungere i record, vorrei vedere ad
esempio la somma dei prezzi delle macchine che ho aggiunto in questa
tabella e poi stampare il tutto.
Pensavo di dover aggiungere una sottomaschera alla maschera principale
che mostri la tabella che da vuota si vede crescere con i record che
seleziono.
Poi poter stampare la sottomaschera.
Spero di essere stato più chiaro nello spigare quello che vorrei fare
:-)
Grazie 1000000!
F

 ha scritto nel messaggio 
news:1157370809.4...@b28g2000cwb.googlegroups.com...
Sergio, grazie per l'aiuto!
Allora mi spiego meglio:
ho una maschera  con cui faccio "una ricerca" tra i record di una
tabella...di 100 macchine filtro e, ad esempio, ne vedo 3 (18, 30, 58).
di queste tre vorrei selezionarne una  (es. macchina n18) e
passare/copiare/altro il record (cioè tutte le informazioni) in una
nuova tabella che vorrei anche visualizzare nella maschera principale
(uso una sottomaschera?) Questa tabella/maschera da vuota diventerà
con un record.
Poi vorrei ritornare all'elenco principale, fare una nuova ricerca
filtrando ancora le 100 macchine e riducendo il numero a 5 per es. Di
queste 5 sceglierne una (la 43) e con un tasto aggiungerla alla tabella
"ex vuota" che adesso ha 2 record (il 18 e il 43). E così via, per un
tot di volte. Quando ho finito di aggiungere i record, vorrei vedere ad
esempio la somma dei prezzi delle macchine che ho aggiunto in questa
tabella e poi stampare il tutto.
Pensavo di dover aggiungere una sottomaschera alla maschera principale
che mostri la tabella che da vuota si vede crescere con i record che
seleziono.
Poi poter stampare la sottomaschera.
Spero di essere stato più chiaro nello spigare quello che vorrei fare
:-)
Grazie 1000000!
F
[risposta]
La situazione è un po' cambiata.
Se vuoi trasferire un record per volta puoi utilizzare l'evento "su doppio 
clic" della (sotto)maschera, che si scatena quando fai doppio clic sul 
selettore del record; quindi se hai inibito la visualizzazione ripristinala.
Nell'evento ci scrivi il codice VBA:
'---
Dim strSQL as String
'--> se vuoi svuotarla
strSQL = "Delete * From tab2"
DoCmd.RunSQL strSQL
'<-- 
'--> aggiungi record doppiocliccato
strSQL = "Insert Into tab2 Select tab1.* From Tab1 Where id=" & me!id
Docmd.RunSQL strSQL
'<--
'---
Altrimenti se vuoi selezionare più record utilizza l'esempio:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=97
oppure con google:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/a2168a402e461737/7d979433fcfaaf5f?lnk=st&q=ciclare+record+selezionati+group%3Ait.comp.appl.access&rnum=5&hl=it#7d979433fcfaaf5f
Ciao.
-- 
Sergio MAZZA 

 '---
ottimo! grazie!
questo è il codice che mi serviva.
Lo uso non sul doppio click del record (non ho capito benissimo come lo
useresti tu; se parli di maschera o sotto maschera e cosa intendi per
inibire le visualizzazione) ma sul click di un pulsante: seleziono il
record e poi click sul pulsante "aggiungi" che aggiunge quel record
nella tab2.
Il problema adesso è che non riesco a fare in modo di vedere  "in real
time" questo cambiamento. La sottomaschera, (maschera inserita come
sottomaschera nella maschera principale dove c'è l'elenco e il
pulsante aggiungi) non si aggiorna. se chiudo e riapro vedo i record
aggiunti, ma vorrei riuscire ad ottenere la visualizzazione immediata
della modifica.
Hai qualche idea? cosa devo inserire nel codice del evento click del
pulsante aggiungi? come si fa il refresh?
Grazie!!!!
F


 ha scritto nel messaggio 
news:1157383549.4...@e3g2000cwe.googlegroups.com...
ottimo! grazie!
questo č il codice che mi serviva.
Lo uso non sul doppio click del record (non ho capito benissimo come lo
useresti tu; se parli di maschera o sotto maschera e cosa intendi per
inibire le visualizzazione) ma sul click di un pulsante: seleziono il
record e poi click sul pulsante "aggiungi" che aggiunge quel record
nella tab2.
Il problema adesso č che non riesco a fare in modo di vedere  "in real
time" questo cambiamento. La sottomaschera, (maschera inserita come
sottomaschera nella maschera principale dove c'č l'elenco e il
pulsante aggiungi) non si aggiorna. se chiudo e riapro vedo i record
aggiunti, ma vorrei riuscire ad ottenere la visualizzazione immediata
della modifica.
Hai qualche idea? cosa devo inserire nel codice del evento click del
pulsante aggiungi? come si fa il refresh?
Grazie!!!!
F
[risposta]
Non devi fare il refresh ma il requery della origine dati della 
sottomaschera (per info vedi help attivabile con ALT-F11 poi F1):
es.
...
Docmd.RunSQL strSQL
Me!nomeSottoMaschera.Form.Requery
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao Sergio!
Eccomi ancora qui... ora, con il tuo aiuto ci sono riuscito. Grazie!
Mi manca ancora una cosa, che probabilmente è la più complessa.
Ora come ora, creo una nuova tabella e la visualizzo andando a prendere
i record da una
tabella già esistente (con un elenco macchine).
Queste operazioni le faccio su una maschera:
- scorro l'elenco delle macchine e nel caso le filtro per fare una
ricerca agevolata
- seleziono il record e tramite un pulsante aggiungi metto il nuovo
record nella tabella
---------------------------------
Dim strSQL As String
strSQL = "Insert Into [macchine per scheda vuota] Select [macchine per
scheda].* From [macchine per scheda] Where [N macchina esaminata]=" &
Me!macchina_esaminata
DoCmd.RunSQL strSQL
Me!dati_scheda.Form.Requery
-----------------------------
- posso anche togliere un record o cancellarli tutti per ricominciare
da capo (a proposito, perchè l'ID nella tabella nuova non ricomincia
da 1 dopo aver cancellato tutto ma parte da quello successivo? es.
metto tre record nella nuova tabella e me li mostra con Id 1,2 e 3...se
cancello tutto e ricomincio ad aggiungere parte da 4 etc...)
ora, vorrei poter "salvare" questa tabella. mi spiego:
- pesco i record dalla tabella elenco macchine e li metto nella tabella
vuota, visualizzo il tutto, in automatico mi calcola la somma dei
prezzi delle macchine scelte
- vorrei adesso stampare e salvare questo calcolo o meglio la tabella e
i calcoli, dandogli un nome in modo da poterla richiamare in un secondo
momento senza dover rifare la procedura.
hai qualche suggerimento?
grazie 1000!
F

 ha scritto nel messaggio 
news:1157532062.1...@m73g2000cwd.googlegroups.com...


DoCmd.RunSQL strSQL
Me!dati_scheda.Form.Requery
-----------------------------

[risposta]
Nessuno ti vieta di poter cancellare i record; e secondo me in questa 
tabella, se vuoi mantenere una integrità logica con i dati della tabella 
originale, dovresti modificare il campo id da contatore a numerico intero 
lungo. Così i valori contenuti fanno sempre riferimento alla tabella 
originale.
(info) Il campo contatore, una volta che svuoti la tabella, per farlo 
ripartire da 1 devi ricompattare l'mdb.
ora, vorrei poter "salvare" questa tabella. mi spiego:
- pesco i record dalla tabella elenco macchine e li metto nella tabella
vuota, visualizzo il tutto, in automatico mi calcola la somma dei
prezzi delle macchine scelte
- vorrei adesso stampare e salvare questo calcolo o meglio la tabella e
i calcoli, dandogli un nome in modo da poterla richiamare in un secondo
momento senza dover rifare la procedura.
hai qualche suggerimento?
[risposta]
L'utilizzo del Metodo CreateTableDef (vedi help) e query di accodamento...
grazie 1000!
F
[risposta]
Ciao.
-- 
Sergio MAZZA 


ciao!
se ho capito un pò di quello che c'è scritto nell'help questo comando
crea una nuova tabella e io la userei di volta in volta.
poichè le "schede" da salvare/stampare sarebbero decine pensavo ad una
soluzione del genere:
sulla maschera di cui sopra, quella che mi permette di scegliere le
macchine e immetterle nella tabella vuota, vorrei avere la possibilità
di mandare queste macchine (i rispettivi record) in una tabella più
grande aggiungendo ai record in un campo apposito un numero e un nome
di riconoscimento.
Per capire: io scelgo le macchine (diciamo 6) dalla tabella elenco
macchine e le metto nella tabella vuota;voglio considerare questo
gruppo come il gruppo 1; vorrei poter copiare questi record in un'altra
tabella aggiungendo la voce "gruppo 1" in un apposito campo. Così poi,
la prossima serie di macchine che andrei a scegliere, le
caratterizzerei con "gruppo 2", e così via. In questo modo costruirei
una mega tabella con tutti i "gruppi" di macchine e potrei creare una
maschera/report che, con un filtro opportuno, mi mostri/stampi i
singoli gruppi. Come la vedi?
Adesso nella maschera in cui seleziono le macchine per crearne un
gruppo ho messo una casella di testo in cui l'utente può immettere il
nome del gruppo: come faccio a fare in modo di copiarele macchine (i
record selezionati) in una nuova tabella dando al campo "gruppo" il
valore che l'utente digita nella casella di testo?
Spero di essere stato chiaro e che sia fattibile!!!
Grazie per il supporto!
F

 ha scritto nel messaggio 
news:1157640660.4...@m73g2000cwd.googlegroups.com...
ciao!
se ho capito un pň di quello che c'č scritto nell'help questo comando
crea una nuova tabella e io la userei di volta in volta.
[risposta]
Sě;
poichč le "schede" da salvare/stampare sarebbero decine pensavo ad una
soluzione del genere:
sulla maschera di cui sopra, quella che mi permette di scegliere le
macchine e immetterle nella tabella vuota, vorrei avere la possibilitŕ
di mandare queste macchine (i rispettivi record) in una tabella piů
grande aggiungendo ai record in un campo apposito un numero e un nome
di riconoscimento.
Per capire: io scelgo le macchine (diciamo 6) dalla tabella elenco
macchine e le metto nella tabella vuota;voglio considerare questo
gruppo come il gruppo 1; vorrei poter copiare questi record in un'altra
tabella aggiungendo la voce "gruppo 1" in un apposito campo. Cosě poi,
la prossima serie di macchine che andrei a scegliere, le
caratterizzerei con "gruppo 2", e cosě via. In questo modo costruirei
una mega tabella con tutti i "gruppi" di macchine e potrei creare una
maschera/report che, con un filtro opportuno, mi mostri/stampi i
singoli gruppi. Come la vedi?
[risposta]
non male;
Adesso nella maschera in cui seleziono le macchine per crearne un
gruppo ho messo una casella di testo in cui l'utente puň immettere il
nome del gruppo: come faccio a fare in modo di copiarele macchine (i
record selezionati) in una nuova tabella dando al campo "gruppo" il
valore che l'utente digita nella casella di testo?
[risposta]
stessa query di accodamento ma con in piů un campo calcolato:
es.
nomeGruppo: Forms!nomeForm!gruppo
Spero di essere stato chiaro e che sia fattibile!!!
Grazie per il supporto!
F
[risposta]
Ciao.
-- 
Sergio MAZZA 


Uso questo codice ma non riesco ad ottenere nulla:
------------------------
strsql = "Insert Into [tab vuota] Select [tab elenco].*, Forms![tab
vuota]!Testo21 As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
DoCmd.RunSQL strsql
----------------------
quando esegue la query prima si apre una finestrelle che chiede di
immetere il valore del parametro Forms![tab vuota]!Testo21 e andando
avanti dà errore dicendo che  "il numero dei valori della query non
corrisponde a quello dei campi di destinazione"
non capisco...
F

 ha scritto nel messaggio 
news:1157646023....@i42g2000cwa.googlegroups.com...
Uso questo codice ma non riesco ad ottenere nulla:
------------------------
strsql = "Insert Into [tab vuota] Select [tab elenco].*, Forms![tab
vuota]!Testo21 As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
DoCmd.RunSQL strsql
----------------------
[risposta]
Cambiala in:
...
strsql = "Insert Into [tab vuota] Select [tab elenco].*, '" & Forms![tab
vuota]!Testo21 & "' As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
...
Occhio alla Where, il campo è numerico?
quando esegue la query prima si apre una finestrelle che chiede di
immetere il valore del parametro Forms![tab vuota]!Testo21 e andando
avanti dà errore dicendo che  "il numero dei valori della query non
corrisponde a quello dei campi di destinazione"
non capisco...
F
[risposta]
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Grazie 1000!
F


credo che il problema fosse che la casella di testo Testo21 l'avevo
messa nella sottomaschera e il comando così non andava...ho fatto
un'altra casella di testo nella maschera principale e messo
'" & Forms![maschera principale]!Testo
così la prende ed è ok!!!
Sai mica dirmi eventualmente come si può fare la stessa cosa ma con
appunto una casella che si trova nella sottomaschera?
Grazie!!!
F

 ha scritto nel messaggio news:1157727253.0...@m73g2000cwd.googlegroups.com...
credo che il problema fosse che la casella di testo Testo21 l'avevo
messa nella sottomaschera e il comando cosě non andava...ho fatto
un'altra casella di testo nella maschera principale e messo
'" & Forms![maschera principale]!Testo
cosě la prende ed č ok!!!
Sai mica dirmi eventualmente come si puň fare la stessa cosa ma con
appunto una casella che si trova nella sottomaschera?
Grazie!!!
F
[risposta]
Mi sto un po' perdendo.
Il codice che hai inviato se viene eseguito in una maschera principale e vuoi far riferimento a dei controlli inseriti nella 
sottomaschera devi indicare tutto il percorso:
es.
Me!nomeSottoMaschera!nomeControllo
se invece il codice lo esegui nella sottomaschera il riferimento č diretto:
es.
Me!nomeControllo
Ora tu cosa vuoi fare? E sopratutto, da dove lo devi fare?
Ciao.
-- 
Sergio MAZZA 


tutto ok! volevo riferirmi ad una casella di testo nella sottomaschera
e il codice che avevo era per una casella di testo della maschera
principale. Ho messo tutto a posto, adesso posso scegliere a quale
controllofare riferimento e in quale maschera (principale o
sottomaschera).
ora funziona, grazie infinite!!!
F