Newsgroup: it.comp.appl.access
Titolo: Somma totale di caselle d testo non associate

Ho una maschera a "maschere continue", devo fare una somma di una casella di
testo non associata, per avere con TOTALE complessivo e mettere una casella
di testo o di riepilogo nella parte inferiore nel "pie di pagine".
Quindi premendo un pulsante "TOTALE" mi deve eseguire la sommatorie di tutte
la caselle di testo non associate, ad esempio con il nome "quantità"
E' possibile fare una cose del genere????
Se si.... mi dite come devo fare????
Ciao e grazieeeeeeeeeee

 ha scritto nel messaggio 
news:cnv15f$lom$1...@balena.cs.interbusiness.it...

Forse non ho ben capito.
Una casella di testo non associata per ogni record della maschera continua?
In questo caso se inserisci un valore nella casella di testo, tutte le altre 
avranno lo stesso valore...
Vuoi sommare queste?
Se valore della casella di testo moltiplicato il numero di record...ma mi 
pare molto strano.
Ciao, Carlo

 ha scritto nel messaggio 
news:co23o8$nhk$1...@fata.cs.interbusiness.it...

Alimenta la maschera da una query dove avrai aggiunto il tuo campo 
"conticino" probabilmente generato da un'operazione tra gli altri campi o da 
quello che vuoi tu. A questo punto ogni record avrà il suo campo "conticino" 
questa volta volta collegato.
Nel piè di pagina della maschera aggiungi una casella di testo che avrà una 
origine controllo: =Somma([TuoControlloConticino]).
Ciao, Carlo 

 ha scritto nel messaggio
news:co2h6g$4dr$1...@fata.cs.interbusiness.it...

Ok cosi funziona, solo che il problema adesso è che il conticino è frutto di
un CICLO IF di condizioni da verificare.
Come faccio un ciclo IF in SQL????
Adesso me sa che sono dolori
Cosa mi puoi dire
Ciao e grazieeeeeeee

 Ciao, Carlo
Praticamente è quello che già avevo proposto in un post, solo che era per
VB, invece ora è da fare in SQL. Ti riporto il post in modo da capire il
funzionamento:
In query ho creato questo calcolo:
Impegno: [Orario Fine]-[Orario inizio]
E fino a qui non ci sono problemi. PERCHE' FUNZIONA
Adesso arriva il brutto, devo calcola il SUPERO che non è altro che lo
STRAORDINARIO, mi va bene di farlo sia in VB oppure in SQL (preferisco VB,
perchè tra i due non ci capisco un cazzo lo stesso però in VB ci sto dietro,
perchè capisco un pò come funziona ma non riesco a crealo)
Facendo in VB:
il campo "Orario inizio" ha queste etichetta "Inizio"
il campo "Orario Fine " ha questo etichetta "Fine"
Perchè se ho capito bene in query si usa il nome del campo in VB il nome
dell'etichetta.
SUPERO:
Supero diurno: dopo la decima ora di servizio
Supero notturno: dopo la settima ora
Diurno: dalle 5:00 alle 23:59
Notturno: dalle 0:00 alle 4:59
Esempio: un servizio che inizia alle 4:40 e termina alle 11:50 è in supero,
perchè iniziando prima delle 5:00 non si può passare la 7 settima ora,
quindi 11:50 - 4:40 = 7:10 quindi 0:10 di supero.
un servizo che inizia alle 5:30 e termina alle 15:45 è in supero, perchè
iniziando dopo delle 5:00 non si posso passare le 10 ore di servizio, quindi
15:45- 5:30 = 10:15 quindi 0:15 di supero.
Ecco il mio ragionamento
IF  "INIZIO" è maggiore o uguale delle 0:00 ma minore delle 5:00  THEN
IF "IMPEGNO" > 7  THEN
SUPERO:  IMPEGNO - 7  (cosi facendo, lui verifica prima che il servizio sia
compreso tra le 0 e le 5, poi verifica che l'impengo sia maggiore di 7, se
lo è, allora mi calcora di quanto è in supero)
END IF
ELSE
IF "IMPEGNO" > 10  THEN
SUPERO: IMPEGNO - 10 (cosi facendo, se l'orario non cade entro le 0 e le 5,
sicuramente si tratta di lavoro diurno, quindi il supero scatta dopo la 10
ora, quindi una volta verificato che l'impegno abbia passato le 10 ore,m gli
faccio eseguire il conto
END IF
END IF
E questa è stata la riposta, solo che in VB, eccola:
Dim OraInizio As Date, OraFine As Date
  Dim Impegno As Integer
  ' imposta le due variabili OraInizio e OraFine
  Me.txtInizio.SetFocus
  OraInizio = Me.txtInizio.Text
  Me.txtFine.SetFocus
  OraFine = Me.txtFine.Text
  Me.txtSupero.SetFocus
  ' calcola l'impegno in minuti
  Impegno = DateDiff("n", OraInizio, OraFine)
  If DatePart("h", OraInizio) >= 0 And DatePart("h", OraInizio) < 5 Then
    If Impegno > (7 * 60) Then ' se l'impegno supera le 7 ore
      txtSupero.Text = Impegno - (7 * 60)
    End If
  Else
    If Impegno > (10 * 60) Then ' se l'impegno supera le 10 ore
      txtSupero.Text = Impegno - (10 * 60)
    End If
  End If
Fammi sapere
Ciao e grazieeeeeeeeee

CUT

Ci sono molti modi: codice, IIF, Where, e molti altri.


 ha scritto nel messaggio 
news:co2se7$3ug$1...@fata.cs.interbusiness.it...

Premetto che in VBA o in SQL quello che devi eventualmente passare è sempre 
il nome del controllo (nome elemento) e non il nome della sua etichetta che 
non puo mai coincidere.
La funzione potrebbe essere chiamata passandogli già i valori così:
Call FEsubero(Me.DataInizio, Me.DataFine)
Private Function FEsubero(DInizio as date, DFine as Date) as variant
Dim Impegno As Integer
  ' calcola l'impegno in minuti
 Impegno = DateDiff("n", DInizio, DFine)
 If DatePart("h", DInizio) >= 0 And DatePart("h", DInizio) < 5 Then
      If Impegno > (7 * 60) Then ' se l'impegno supera le 7 ore
      txtSupero.Text = Impegno - (7 * 60)
    End If
 Else
   If Impegno > (10 * 60) Then ' se l'impegno supera le 10 ore
      txtSupero.Text = Impegno - (10 * 60)
    End If
  End If
End Function
Nella funzione manca l'output cioè manca l'assegnazione del risultato alla 
funzione. Qui devi decidere tu cosa vuoi ottenere: date e quindi ore, 
interi, boolean o altro
Ora questa funzione, se pubblica, può essere invocata da una query 
semplicemente usandola in una colonna:
MioEsubero: FEsubero([DataInizio] ; [DataFine])
Da maschera può essere invocata ma il risultato sarà da riferirsi al record 
corrente.
A me interessa farti capire il meccanismo; gli aggiustamenti del codice sono 
campito tuo.
Ciao, Carlo