Newsgroup: it.comp.appl.access
Titolo: Aggiornare recorset con criterio...

Buon pomeriggio a tutti,
sto cercando di aggiornare un recorset con il criterio sotto riproposto
e cioè l'ultima rata della tabelle tblDocumenti_Scadenze con la somma
dei totali dei dettagli preso dalla tblDocumenti.
Debuggando i due criteri mi si valorizzano, ma poi si pianta quando gli
dico di aggiornare se IdDocumento_Scad = Criterio.
Premetto che sono in fase di studio nell'operare con i recorset...!
                Dim db As Database, rst As Recordset
                Dim Criterio As Variant
                Dim Criterio2 As Integer
                Set db = CurrentDb
                Set rst = db.OpenRecordset("tblDocumenti_Scadenze",
dbOpenDynaset, dbAppendOnly)
                Criterio = DMax("IdDocumento_Scad",
"tblDocumenti_Scadenze", "IdDocumento=" & Me.Parent.IdDocumento)
                Criterio2 = fctRound(Nz(DSum("Totale", "tblDocumenti",
"IdDocumento = " & Me.Parent.IdDocumento)))
                If rst!IdDocumento_Scad = Criterio Then
                    rst.Edit
                    rst!ImpRata = Criterio2
                    rst.Update
                    rst.Close
                    db.Close
                End If
Grazie per l'aiuto!
Paolo


[CUT]
Giusto perchè in futuro potrà essere di aiuto a qualcuno, ho risolto
così e funziona:
ho utilizzato una query sql per creare la join tra IdDocumento_Scad e
Criterio elimando così l'inutile "If" e aggiunto un nuovo criterio che
mi ricalcolasse l'importo totale dalla tblDocumenti al netto
dell'importo dell'ultima rata. Pertanto:
                Dim db As Database, rst As Recordset
                Dim QrySql As String
                Dim Criterio As Variant
                Dim Criterio1 As Variant
                Dim Criterio2 As Integer
                Set db = CurrentDb
Criterio = DMax("IdDocumento_Scad",
"tblDocumenti_Scadenze", "IdDocumento=" & Me.Parent.IdDocumento)
Criterio1 = DLast("ImpRata", "tblDocumenti_Scadenze", "IdDocumento=" &
Me.Parent.IdDocumento)
Criterio2 = (Nz(DSum("ImpRata", "tblDocumenti_Scadenze", "IdDocumento =
" & Me.Parent.IdDocumento))) + Criterio1
QrySql = "SELECT IdDocumento_Scad, IdDocumento, ImpRata FROM
tblDocumenti_Scadenze WHERE IdDocumento_Scad = " & Criterio & ""
Set rst = db.OpenRecordset(QrySql)
rst.Edit
rst!ImpRata = Criterio2
rst.Update
rst.Close
db.Close
Funziona, ma se ci sono osservazioni o migliorie, prego...!
Saluti
Paolo

 ha scritto nel messaggio 
news:1160054573....@m73g2000cwd.googlegroups.com...
Giusto perchč in futuro potrŕ essere di aiuto a qualcuno, ho risolto
cosě e funziona:
ho utilizzato una query sql per creare la join tra IdDocumento_Scad e
Criterio elimando cosě l'inutile "If" e aggiunto un nuovo criterio che






Set rst = db.OpenRecordset(QrySql)


Saluti
Paolo
[risposta]
Occhio che se leggi nell'help in linea alla voce Funzioni DFirst/DLast non 
credo che saresti cosě tranquillo.
Quello che dovresti spiegare, č quando dici: "...e cioč l'ultima rata della 
tabelle tblDocumenti_Scadenze..."; che intendi? L'ultimo record inserito? Se 
hai un campo id di tipo contatore potresti (dico potresti) fare affidamento 
al valore massimo di quel campo, ma secondo me non sarebbe logico. Sarebbe 
meglio far riferimento ad un periodo temporale (data) assegnato a 
quell'importo...
Ciao.
-- 
Sergio MAZZA