Newsgroup: it.comp.appl.access
Titolo: COMPORTAMENTO ANOMALO DSUM in maschera visualizzazione continua

Buongiorno NG.
Ho un problema con DSUM
Maschera in visualizzazione dati continua, da una casella combinata
scelgo il cliente, e nella maschera vedo tutti i prodotti di quel
cliente. La query di origine della maschera quindi è parametrica.
I campi presenti nella maschera, mostrano x ogni prodotto il costo
delle materie prime e delle lavorazioni. Per avere il costo delle
materie prime utilizzo la funzione DSUM. Perché DSUM funzioni, ho
dovuto metterla in origine del controllo nella maschera (se invece
veniva  calcolata in VBA, trovato il costo delle materie prime del
primo prodotto filtrato, questo valore era valido per tutti i
prodotti.)
Purtroppo, devo utilizzare DSUM in VBA, o richiamare il campo che
contiene il valore, e il problema si ripresenta,
Ossia,
Prodotto   TOTMateriePrime
BLU           1,5
ROSSO      2,3
GIALLO      4,8
Nella visualizzazione maschera, i valori di TOTmaterieprime sono visti
correttamente. Se li richiamo in VBA, il valore di TOTMateriePrime per
BLU,ROSSO e GIALLO è sempre 1,5
Dovrei fare funzionare questo recordset, dove ME!FLY1 rappresenta il
costo delle materie prime, il suo origine controllo è
=(DSum("[cstarticolo]";"[q_smcstflyTOTMATPRI]";"[dist_id]= " &
[DISTINTAID]).
COME FACCIO FARGLI RICALCOLARE IL DSUM AL CAMBIO di dist_id ossia del
campo contatore, perciò per ogni prodotto?
Set qdffly = dbfly.QueryDefs("q_saveprzlistino")
qdffly.Parameters("[Forms]![MSC_Generalistinovendita]![CBOCLIENTE]") =
[Parent]![cboCliente]
Set rst = qdffly.OpenRecordset()
'Set rst = Me.RecordsetClone
'If rst.EOF And rst.BOF Then Exit Sub
If rst.RecordCount = 0 Then
  MsgBox "Non ci sono record"
  Exit Sub
  Else
    Me.Refresh
    rst.MoveLast
    rst.MoveFirst
    Do Until rst.EOF
         rst.Edit
     rst.Fields("dist_fissatodata") = Me!datafly
     rst.Fields("dist_tot1").Value = Me!fly1
     rst.Update
     rst.MoveNext
     Me!fly1.Requery
     MsgBox Me!fly1
  Loop
  rst.Close
Grazie grazie
Samantha
p.s.: se qlcs non è chiaro cercherò di spiegarmi meglio

 p.s.: se qlcs non è chiaro cercherò di spiegarmi meglio
Ciao Creati una funzione del genere
Function fctTuaSomma(intTuoid as integer)
dim rs as dao.recordset
set rs = currentdb.openrecordset("SELECT sum(Tuasomma) as S FROM Tuatabella 
as T where T.tuoid = " & intTuoid)
if not rs.eof then
fctTuasomma = rs!S
else
fctTuasomma = 0
end if
rs.close : Set rs = nothing
end function
A questo punto nella qery della tua maschera ci metti
SELECT Tuoid, fctTuasomma(Tuoid) as Totale FROM Tuatabella
-- 
-- 
Massimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access


Ciao Ma,
maschera dati continua. Ho campi calcolati dei quali devo salvare il
valore in tabella. Con questo codice lui scorre in scrittura, i
record. Ma in lettura non si sposta. Ossia 3 record, mi legge il primo
e scrive i dati del campocalcolato1.
Si sposta sul secondo e mi rilegge i dati del primo campocalcolato1  e
scrive sul secondo
SI sposta sul terzo e mi rilegge i dati del primo campocalcolato1 e
scrive sul terzo
Cosa devo fare, perchè oltre in scrittura faccia anche la lettura sul
record corretto????
If rst.RecordCount = 0 Then
  MsgBox "Non ci sono record"
  Exit Sub
  Else
    Me.Refresh
    rst.MoveLast
    rst.MoveFirst
    Do Until rst.EOF
         rst.Edit
     rst.Fields("dist_fissatodata") = Me!datafly
     rst.Update
     rst.MoveNext
  Loop
  rst.Close
  Set rst = Nothing
  Me.Requery
End If
Grazie,
Samantha