Newsgroup: it.comp.appl.access
Titolo: Applicare Ciclo for a Query filtrata (come usare recordsetcon Parametri +ciclofor)

Buonasera NG
ho una maschera, che presenta prodotti filtrati x cliente. In una
casella combo non associata, seleziono una data.
Su click della COMBO eseguo questo evento
Private Sub CBODATA_AfterUpdate()
Me![datafly] = Me!CBODATA
End Sub
Logicamente lo fa solo sul primo record, non su tutti. Come fare x
applicarlo a tutti?
Ho trovato un post del 2001 di Roberto, che ho modificato così
Dim dbMio As Database
Dim rstMio As Recordset
Dim qdfMio As QueryDef
Set dbMio = CurrentDb
Set qdfMio = dbMio.QueryDefs("q_smcstfly")
qdfMio.Parameters("[Forms]![MSC_Generalistinovendita]![CBOCLIENTE]")
=
Me![CBOCLIENTE]
Set rstMio = qdfMio.OpenRecordset()
Dim i
 for i = 0
.. però qui mi perdo
come cavolo devo dirgli che Me![datafly] = Me!CBODATA?
Devo inizializzare i=0 ?
Grazie per eventuali suggerimenti
Samantha

 
Ciao
Vedo che insisti. 
Bene bene.
Se ho capito il problema ti serve una query che aggiorni la data nei 
records relativi al cliente filtrato rendendola uguale alla selezione 
di CBODATA.
Poi riesequi la query sulla maschera.
Ovviamente questa è una (di n) possibilità ..... 
Ciao
MArco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:1171991396....@p10g2000cwp.googlegroups.com...
Buonasera NG
ho una maschera, che presenta prodotti filtrati x cliente. In una
casella combo non associata, seleziono una data.
Su click della COMBO eseguo questo evento
Private Sub CBODATA_AfterUpdate()
Me![datafly] = Me!CBODATA
End Sub
Logicamente lo fa solo sul primo record, non su tutti. Come fare x
applicarlo a tutti?
set rst = me.recordsetclone
rst.movefirst
do until rst.eof
  rst.fields("data") = CBODATA
next
set rst = nothing
me.requery
Antonio

 Antonio
Interessante.
Mi sono reso conto che utilizzavo recordsetclone da bestia.
Grazie



Buongiorno A tutti,
è da stamattina che ci lavoro
Dim dbMio As Database
Dim rstMio As Recordset
Dim qdfMio As QueryDef
Set dbMio = CurrentDb
Set qdfMio = dbMio.QueryDefs("q_smcstfly")
qdfMio.Parameters("[Forms]![MSC_Generalistinovendita]![CBOCLIENTE]")
= Me![CBOCLIENTE]
Set rstMio = qdfMio.OpenRecordset()
set rst = me.recordsetclone *1
rst.movefirst
do until rst.eof
  rst.edit
  rst.fields("data") = Me!CBODATA
  rst.update
 Loop
rstMio.Close
rst.Close
set rst = nothing
set rstMio = nothing
me.requery
*1 il me.recordsetclone è come avessi scritto set rst = rstMio ?
*2 ma cosa faccio con questo me. requery?
Ora mi si è imballato tutto...  ho la combo data che continua a
lampeggiare... mi sa che devo chiudere di brutto il db. sgrunt

 Posted via Mailgate.ORG Server -
http://www.Mailgate.ORG
Buongiorno A tutti,
è da stamattina che ci lavoro
Dim dbMio As Database
Dim rstMio As Recordset
Dim qdfMio As QueryDef
Set dbMio = CurrentDb
Set qdfMio = dbMio.QueryDefs("q_smcstfly")
qdfMio.Parameters("[Forms]![MSC_Generalistinovendita]![CBOCLIENTE]")
= Me![CBOCLIENTE]
Set rstMio = qdfMio.OpenRecordset()
set rst = me.recordsetclone *1
rst.movefirst
do until rst.eof
  rst.edit
  rst.fields("data") = Me!CBODATA
  rst.update
 Loop
rstMio.Close
rst.Close
set rst = nothing
set rstMio = nothing
-->Se fai il set a nothing il close è superfluo
me.requery
*1 il me.recordsetclone è come avessi scritto set rst = rstMio ?
-->Ah l'help...
il metodo recordsetclone restituisce un recordset corrispondente ai dati
attualmente restituiti dalla recordsource della form, eventualmente anche
con i filtri in quel momento applicati
openrecordset restituisce un recordset corrispondente a quello della
tabella/query/stringa sql contenuta nel suo parametro
il recordset può essere assegnato ad una variabile di tipo recordset per
passarci insieme tante ore liete, financo al petting spinto
*2 ma cosa faccio con questo me. requery?
-->Dopo aver cambiato i dati con l'aggiornamento del recordset vai a fare un
refresh dei controlli. Forse è pleonastico, non ho fatto prove, ma male non
fa
Antonio
P.S.
Continua a usare una formattazione dei messaggi così scrausa che non riesco
a quotarti con le freccette eh...

 a quotarti con le freccette eh...
Pensati, x fino i messaggi hanno paura a farsi quotare da te!  ;D

 Tolto il me.requery va che è una meraviglia :D
Non è il me.requery il problema. Quando cambio cliente in CBOCLIENTE
mi da lo stesso problema...


Ciao,
dopo la finestra di messaggio
"Modifica contemporenae di record: durante la corrente sessione di
modifica il record è stato modificato da un altro utente. Salvando le
proprie modifiche si sovrascriveranno i cambiamenti dell'altro utente.
Salva il record? Copia negli appunti? Non salvare le modifiche
Se salvo è ok
ma se scelgo : non salvare le modifiche:
Errore di runtime '3197':
Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati.
Se gli faccio ?
Il modulo di gestione di database Microsoft Jet ha interrotto
l'elaborazione. Un altro utente sta tentando contemporaneamente di
modificare gli stessi dati. (3197).
Questo errore può verificarsi in un ambiente multiutente.
Un altro utente ha modificato i dati che si sta cercando di
aggiornare. Questo errore può verificarsi quando più utenti aprono una
tabella o creano un Recordset utilizzando il blocco ottimistico. Nel
tempo intercorso tra l'utilizzo del metodo Edit e il metodo Update, un
altro utente ha modificato gli stessi dati.
Per sovrascrivere le modifiche dell'altro utente con le proprie,
rieseguire il metodo Update.
Siccome la parola OTTIMISTICO è in blu, se la clicco mi dice
Ottimistico
Tipo di blocco in cui la pagina di dati che contiene uno o più record,
incluso il record che si sta modificando, non è disponibile ad altri
utenti, solo nella fase in cui il record viene aggiornato mediante il
metodo Update, mentre è disponibile nel periodo che intercorre tra
l'utilizzo dei metodi Edit e Update. Il blocco ottimistico viene
utilizzato quando si accede ai database ODBC o quando la proprietà
LockEdits dell'oggetto Recordset è impostata su False.
Ora ho sbagliato il codice. Forse è in sola lettura? Forse devo
chiudere l'originale dopo il clone?
Adesso provo

 ha scritto nel messaggio
news:1172050068....@v33g2000cwv.googlegroups.com...


Dove sono le scuse?
Antonio

 a quotarti con le freccette eh...
Pensati, x fino i messaggi hanno paura a farsi quotare da te!  ;D
Pensa, sei la sola che ha questa paura.
XXXfobica?
Antonio

 Antonio
Pensa, che ti devo pure rispondere -->  :D GHE GO TROVA EL CAO!!!!
Fare il refresh della query
Private Sub CBODATA_AfterUpdate()
Me![datafly] = Me!CBODATA
Dim dbMio As Database
Dim rstMio As Recordset
Dim qdfMio As QueryDef
Set dbMio = CurrentDb
Set qdfMio = dbMio.QueryDefs("q_smcstfly")
qdfMio.Parameters("[Forms]![MSC_Generalistinovendita]![CBOCLIENTE]") =
Parent![cboCliente]
Me.Refresh
Set rstMio = qdfMio.OpenRecordset()
Set rst = Me.RecordsetClone
rstMio.Close
rst.MoveFirst
Do Until rst.EOF
  rst.Edit
  rst.Fields("cstmp_data") = Me!CBODATA
  rst.Update
  rst.MoveNext
  Loop
rst.Close
Set rst = Nothing
Me.Requery
End Sub
Un sentito grazie va al messaggio di SERGIO MAZZA del 11/12/2003, che
mi ha dato l'illuminazione: post " lock ...a causa di violazioni di
condivisione" e il suggerimento era:
Forse, prima di aprire la form B non hai aggiornato i valori del
record in
A; prima di aprire B fai un Me.Refresh...
*****************************************************************
Grazie Antonio e Marco!!!!
Samantha
p.s.: l'unica fobia è cadere in aereo mentre è in volo... eppure volo
lo stesso!