Newsgroup: it.comp.appl.access
Titolo: recordset dao e date: aggiornamento solo di alcune date

premessa: potrei fare tutto con una stringa sql, ma vorrei imparare un po' 
meglio a gestire i famigerati recordset.
Sto cercando di aggiornare in un colpo solo tutti i records che soddisfano 
alcuni criteri di data.
le date vengono scelte da combobox.
La procedura funziona per alcune date e per altre no!
(in particolare si aggiornano solo quelle dopo il giorno 12 del mese)
Sicuramente è un problema di formattazione della data, ma le ho provate 
tutte, o quasi.
cdate, format ... ecc ...
segue codice con entrambe le soluzioni:
(me![dal] e [al] sono  combo popolate da query di raggruppamento delle date 
della tabella presenze.)
Dim sql As String
Dim sqldao As String
sqldao = "SELECT presenze.data_presenza, presenze.Idincarico,tipo_presenza" 
& _
" FROM presenze WHERE presenze.idincarico=" & Me![Idincarico] & " and 
presenze.data_presenza =" & Format(Me![dal], "short date")
' chiaramente qui ci vorrebbe il between ... e qui ho provato cdate ...
'senza dao
'sql = "UPDATE presenze SET presenze.tipo_presenza = 
[Forms]![frm_assegna_ferie]![tipo_presenza] " & _
'" WHERE (((presenze.data_presenza) Between 
[Forms]![frm_assegna_ferie]![dal] And [Forms]![frm_assegna_ferie]![al]) AND 
((presenze.Idincarico)=[Forms]![frm_assegna_ferie]![Idincarico]));"
'DoCmd.SetWarnings False
'DoCmd.RunSQL sql
'DoCmd.SetWarnings True
'con DAO
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(sqldao)
rs.MoveLast
rs.MoveFirst
Do While Not rs.EOF
With rs
.Edit
!tipo_presenza = Me.tipo_presenza
.Update
End With
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
MsgBox "OK Aggiornato!"
DoCmd.Close
Forms!sottopresenze.Requery

 Forms!sottopresenze.Requery
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ha scritto nel messaggio 
news:dnrh4b$466$1...@area.cu.mi.it...

nada .. errore: parametri insufficienti previsto 1 ...
(sto usando il between ...)

 Sicuramente è un problema di formattazione della data, ma le ho provate 
Nella stringa SQL devi formattare tutte le date con
format(campodata,"mm/dd/yyyy") e aggiungere i '#' come suggerito dal buon
MA.
A differenza di una data tipo 25/05/2005 che può essere interpretata in un
solo modo, per vba 11/05/2005 è 5 novembre anziché 11 maggio.
Ciao.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


ciao Marco ben sentito!
purtroppo non funziona ancora, cavoli adesso diventa una questione di 
principio.
errore  3061 parametri insufficienti previsto 1
Dim sqldao As String
sqldao = "SELECT presenze.data_presenza, presenze.Idincarico,tipo_presenza" 
& _
" FROM presenze WHERE presenze.data_presenza between #" & 
Format([Forms]![frm_assegna_ferie]![dal], "mm/dd/yyyy") & "# and #" & 
Format([Forms]![frm_assegna_ferie]![al], "mm/dd/yyyy") & "# and 
presenze.idincarico=[Forms]![frm_assegna_ferie]![Idincarico] "


 
[CUT]
Ciao
Nick

"Nick" <senz...@chedetesul.NG> ha scritto nel messaggio 
news:Ekdof.3239$eD5....@twister2.libero.it...

io userei la funzione DateSerial()
es.
v_criteri = " DATA = #" & DateSerial(Year(Me![DATA ]), Month(Me![DATA ]), 
Day(Me![DATA ])) & "#"
ciao
AndreaPapi

 ha scritto nel messaggio 
news:dnrori$2n1$1...@balena.cs.interbusiness.it...

Grazie ad entrambi ... vi faccio sapere ... 

 AndreaPapi
eccessivo


 Forms!sottopresenze.Requery
L'uso del between e delle date mi sembra corretto.
Dopo il sqldao = "SELECT...." mettici un debug.print sqldao e vai a vedere
cosa esce.
L'errore "parametri insufficienti" mi fa pensare piuttosto al nome di un
campo, di una tabella o della maschera scritto male, verificali tutti.
