Newsgroup: it.comp.appl.access
Titolo: Aggiornamento sottomashera

Buongiorno a tutti
A2003+Win XP
ho la seguente funzione che mi modifica i campi di un record di una 
sottomaschera.
facendo click su un pulsante eseguo:
Public Function CalcolaPrezzo(Prz1 As Double)    'Prz1 č il prezzo di 
listino
'as double perchč numero con virgola altrimenti arrotonda
Forms!FrmOk!MaskDettOrdi!TxtPrzPietanzaOrdiListino = Prz1
'questo mi serve per calcolarela differenza fra il totale listino e il 
totale
'scontato sullo scontrino
 'se non applico lo sconto in frmok allora
If IsNothing(Forms!FrmOk!TxtPercSconto) Then
    Forms!FrmOk!MaskDettOrdi!TxtPrzPietanzaOrdi = Prz1 '=prezzo listino
     Else 'applico lo sconto sul prezzo
        Forms!FrmOk!MaskDettOrdi!TxtPrzPietanzaOrdi = Round(Prz1 * _
        ((100 - Forms!FrmOk!TxtPercSconto) / 100), 2)
        Forms!FrmOk!TxtImportoSconto = 
Forms!FrmOk!MaskDettOrdi.Form!TxtSommaOrdineListino - _
        Forms!FrmOk!MaskDettOrdi.Form!TxtSommaOrdine
End If
Forms!FrmOk!TxtImportoPagato = 
(Forms!FrmOk!MaskDettOrdi.Form!TxtSommaOrdine)
End Function
E mi modifica i campi di un record in una sottomaschera.
Fin qui  tutto OK ma la mia intenzione č di applicare la modifica a tutti i 
record della sottomaschera ma non ci riesco
Ho fatto anche delle ricerche anche in internet ma non ho c'ho capito molto.
Se qualcuno mi potesse spiegare come fare gliene sarei grato.
Grazie
Maurizio 

 Maurizio
Secondo me dovresti applicare la routine nella query(cioe' nella parte
SQL) origine del sottoform.Piu' in semplicita' io rivedrei il calcolo
in una query di selezione origine dati della sottomaschera.
Se invece vuoi tenere l'impostazione sopra riportata io proverei ad
abbinare una Qr di aggiornamento.
Fammi sapere
Dino

...
Invece di fare gli aggiornamenti nella sottomaschera sarebbe
meglio di farlo in una query di aggiornamento che contiene
e aggiorna ad un colpo tutti record presenti nella sottomaschera.
Di solito il collegamento alla maschera principale determina
i record della sottomaschera. Se p.e. il collegamento č
fatto tramite un campo "Id" nella query puoi usare:
Forms!FrmOk!Id
come criterio nel campo Id.
La query puo contenere anche la tabella della maschera principale
per avere presente gli altri valori per l'aggiornamento senza
ulteriori riferimenti alla maschera.
La query puoi eseguire da codice nella tua sezione Else:
Currentdb.Execute "NomeQuery", dbfailonerror
Del resto: Round() non serve per l'arrotondamento commerciale.
Vedi:  
www.donkarl.com/it?FAQ2.1
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

Grazie per i vostri suggerimenti
a livello aggiornamento sottomaschera credo che sia il caso di cambiare 
l'origine dati della sottomaschera in quanto questo mi consente di inserire 
dei nuovi record con i parametri aggiornati,mentre con una query credo che i 
nuovi inserimenti non avrebbero i parametri aggiornati.O NO ???
Spiego a cosa serve questo mio quesito.
il programma serve a gestire le ordinazioni per i pasti alla sagra paesana 
con relative stampe e statistiche.
alcune volte viene applicato uno sconto sulle ordinazioni in caso di 
comitive o famiglie numerose.
normalmente se viene applicato uno sconto allora all'inizio dell'odrine vine 
cliccato su un check che abilita uno sconto percentuale su ogni piatto,la 
percentuale e la stessa per tutti i piatti.
succede in molti casi che il cliente si accorga a metà ordine che ha diritto 
allo sconto e allo  stato attuale se abilito lo sconto me lo fa solo sui 
piatti corrente e successivi.
dovrebbe invece modificare i precedenti e inserire i successivi con lo 
sconto.
Grazie grazie grazie
Una domanda a KARL
se Del resto: Round() non serve per l'arrotondamento commerciale.
Vedi:  
www.donkarl.com/it?FAQ2.1
mi puoi spiegare per piacere cosa guadagno(prestazioni,scrittura codice,oo 
altro )con la funzione da te suggerita ?
Calcola che ho più passione che conoscenza.....
Grazie
Ciao a tutti
Maurizio 

 ...
Guadagni nessuna di queste cose.
Come già scritto qui e più dettagliato nell'articolo, la funzione
Round() di VBA non arrotonda in senso commerciale e in
questo senso dà risultati falsi.
Se invece il tuo programma non ha bisogno di un
arrotondamento commerciale corretto puoi usare Round().


 ha scritto nel messaggio 
news:8bllum...@mid.individual.net...

Grazie KARL per il chiarimento e la risposta.
Comunque scusami ,hai ragione,è gia tutto dettagliato nell'articolo.
Se prima di scrivere leggessi ............
Peccatuccio veniale,sono perdonato ?
Maurizio 

 Peccatuccio veniale,sono perdonato ?
Solo per la prima volta. ;-)
Ignoranza ripetuta invece in teoria è imperdonabile anche se
la gente qui risponde lo stesso, come si vede continuamente.
-- 
:-)


 ha scritto nel messaggio 
news:8bl1t1...@mid.individual.net...

Buonasera a tutti
Per karl
non vorrei fare la figura dell'alunno somaro(forse un po ci sono),ma sono 
qui che provo e ho cercato anche in giro ma non ho capito una mazza su come 
fare la query di aggiornamento sottomaschera che mi hai consigliato di fare.
Finora sono riuscito solo a fare query aggiornamento tabella.
il collegamento tra le due maschere č fatto tramite il campo IdOrdine che 
sulla tabella della FORM principale č un campo contatore e sulla 
sottomaschera č un campo numerico.
Se mi puoi spiegare come fare sta query aggiornamento maschera ti ringrazio 
in anticipo.
Naturalmente se me lo puň spiegare qualcun altro ringrazio in anticipo pure 
lui.
In ogni caso buona serata e(per chi le sta facendo)buone ferie a tutti.
Maurizio