Newsgroup: it.comp.appl.access
Titolo: eseguire un operazione solo sui record che riespettano una certa condizione

utilizzo
    Me.Filter = CostruisciFiltro
    Me.FilterOn = True
dvove costruisci filtro imposta le condizioni di visualizzazione dei record
vorrei da codice vba avere un recordset per poi fare un operazione (esempio
aggiungere 5 al campo totale) solo sui record che attulmente sono visibili
nella form perchè è stato applicato il filtro.
spero di essere stato chiaro. Grazie.

Arold ha scritto:

Se hai un totale nella maschera o sottomaschera puoi usare quello:
(Me.Totale + 5)
O puoi prendere i dati dalla tabella o query con DSum sfruttando il
criterio già pronto:
DSum("nomecampo","nometabella",Me.Filter) + 5
O se stai imparando e vuoi fare esperienza con i recordset, te ne puoi
aprire uno, scorrerlo e farci i totali, subtotali e qualsiasi altro
calcolo ti venga in mente.
Ciao.
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio

Non tanto.
con "aggiungere" intendi "sommare" o "impostare"?
Comunque non devi fare altro che una query di aggiornamento:
Currentdb.execute "UPDATE TuaTabella SET TuoCampo=TuoCampo+5 WHERE "&
CorstruisciFiltro
Sib

 Namor
Se non ho capito male le cose stanno diversamente.....!
Mi pare che voglia filtrare in base ad alcuni criteri
il Recordset origine della Form e, sui Records Filtrati
applicare la modifica al campo Totale di ogni singolo Record...!
In effetti però non è chiaro, ma a prescindere ciò non è
bello farlo, solitamente se vuoi fare una cosa simile devi
eseguire una QRY_UPDATE nella quale inserisci i Criteri
tramite la condizione WHERE e nella quale imposti nell'istruzione
SET la variazione voluta.
Chiedo scusa se ho frainteso la questione.
Saluti.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 calcolo ti venga in mente.
Non cerdo che intendesse parlare di totali nel senso di somma di campi,
credo intendere un nome di campo qualsiasi.
Sib

Sib ha scritto:


Eh, già, rileggendo potrebbe essere questa l'interpretazione corretta, nel
qual caso le query di aggiornamento che avete proposto risolvono
egregiamente il problema.
Saluti.


"Arold" <> utilizzo

Basta utilizzare il "recordsetclone" della Form.
Ciao.


mi spiego meglio pensavo che l'esempio che ho fatto calzasse ma ora penso di
no, possiedo 10 record nella tabella io filtro i record nella form con
me.filter e ne ottengo solo 5
siccome ho aggiunto un controllo texttospeak per far leggere al pc il testo
in italiano, vorrei che il pc leggesse i 5 record in sequenza e non tutti e
10
devo fare un ciclo for sui soli record che sono a video nella form e ad ogni
iterazione del for fagli leggere il testo corrente
es:
for i 1 = to numrecordfiltrati
    textspeak1.speak "questo è il messaggio" & i
next i
Grazie.

 next i
Appunto, e io che ho detto?
With me.recordsetclone
     do
            <quello che devi fare>
            .movenext
    loop until .eof()
end with


Ma sai, spesso chi posta ha il problema chiaro in testa e pensa che sia
chiaro anche per gli altri, quindi ho sviluppato un sesto senso per leggere
tra le righe e capire cosa vogliano fare le persone che chiedono aiuto.
Sib
--
http://www.sitocomune.com


si grazie, ho fatto cosi
TextToSpeech1.Initialized = 1
TextToSpeech1.LanguageID (&H410) ' x LA PRONUNCIA ITALIANA
With Me.RecordsetClone
     Do
        TextToSpeech1.Speak "In data" & Me.data & " alle ore " & Me.ora & ",
" & Me.IMPEGNO
        .MoveNext
    Loop Until .EOF()
End With
però continua a leggermi il primo record selezionato nella form anzichè
leggerli di seguito tutti e 5.
mi sai dire cosa sbaglio?

 " & Me.IMPEGNO
Devi fare riferimento ai campi del recordsetclone:
!data
!ora
!Impegno
Saluti.

 Saluti.
ho fatto come dici
TextToSpeech1.Initialized = 1
TextToSpeech1.LanguageID (&H410) ' x LA PRONUNCIA ITALIANA
With Me.RecordsetClone
     Do
        TextToSpeech1.Speak "In data" & Me!data & " alle ore " & Me!ora & ",
" & Me!IMPEGNO
        .MoveNext
    Loop Until .EOF()
End With
legge sempre il primo anche se non metto Me.
        TextToSpeech1.Speak "In data" & !data & " alle ore " & !ora & ", " &
!IMPEGNO
dice elemento non trovato in questo insieme
??????

 ??????
Le caselle di testo a cui fai riferimento avranno dei campi associati,
giusto?
Bene, fai riferimento a quei campi.
Il recordsetclone è un recordset a tutti gli effetti, lavoraci come fai
sempre con taluni oggetti.
Non posso sapere come hai denominato i campi legati ai controlli...
Ciao.

 Ciao.
perfetto funziona grazie.