Condividi tramite

Query somma ore e minuti e Query che filtra i dati da Combobox

Anonimo
2016-07-04T17:48:52+00:00

Buonasera, ho tre tabelle in relazione come da immagine allegata, vorrei creare un query che mi sommi le ore e i minuti in base ai valori delle due combobox chiamate cboCognome e cboTipo.

Sono riuscito a creare questa query ma non risco a farlo per Cgnome e per  Tipo come campi delle tabelle collegate.

SELECT Fix((Sum(tempo)*24)) AS ore, ((Sum(tempo)*24)-Fix(Sum(tempo)*24))*60 AS minuti, tblPozzo.Descrizione AS Nome_Pozzo

FROM tblTurniIrrigazione

WHERE (((tblPozzo.Tipo)=[Forms]![frmreportVari]![CboTipo]));

 P.S. la form su cui ho posizionato le 2 combobox si chiama: frmreportVari

Questa è la query in modalità SQL:

SELECT tblSoci.CognomeNome, tblSoci.CodiceFiscale, tblTurniIrrigazione.PozzoTipo, TblPozzo.Descrizione, tblTurniIrrigazione.Totale

FROM TblPozzo INNER JOIN (tblSoci INNER JOIN tblTurniIrrigazione ON tblSoci.ID_Socio = tblTurniIrrigazione.ID_Socio) ON TblPozzo.ID = tblTurniIrrigazione.PozzoTipo;

Ciò che desidero è creare una query che sia l'unione di queste due e che faccia questo:

1)Se seleziono il Cognome nella cboCognome e non seleziono il tipo nella cboTipo mi deve eseguire la somma di ore e minuti per quel nominativo;

  1. se seleziono nella cboTipo mi deve seguire la query di somme e ore per tipo;
  2. se seleziono cboCognome e cboTipo deve essere eseguita la query che somma ore e minuti per i due criteri nelle combobox.

Ciao Nicola.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-07-09T19:17:18+00:00

ciao Nicola,

la funzione round potrebbe fornirti dei risultati indesiderati....

vedi:

http://www.techonthenet.com/access/functions/numeric/round.php

Access non dispone di una funzione instrinseca per l'arrotondamento commerciale, per cui si rimendia così:

Vai un'occhiata qui :

http://www.donkarl.com/it?FAQ2.1

per tornare alla tua query, ti potrei proporre questo statement, basato su una tabella ( da adattare al tuo scenario):

SELECT t_orario.operatore, t_orario.orario

           , t_orario.tipo

          , (select Fix(sum([orario]))*24+DatePart('h',sum([orario])) & ':' & Format(sum([orario]),'nn') from t_orario as o   where  (o.operatore=forms!maschera1!txtoperatore or forms!maschera1!txtoperatore is null) and (o.tipo=forms!maschera1!txttipo or forms!maschera1!txttipo is null)) AS sommaOre

FROM

       t_orario

GROUP BY

       t_orario.operatore, t_orario.orario, t_orario.tipo

HAVING

          (t_orario.operatore)=[forms]![maschera1]![txtOperatore] Or [forms]![maschera1]![txtOperatore] Is Null

AND

            (t_orario.tipo=[forms]![maschera1]![txtTipo] Or [forms]![maschera1]![txtTipo] Is Null);

ma in alternativa non vedrei male estrarre e visualizzare tutti i records e filtrali per mostrare il risulato della somma in una form.

Anzi, decisamente meglio....

tipo così :

Sub myfilter()

Dim strFilter As String

strFilter = ""

Const concat As String = " and "

If Nz(Me.txtOperatore) <> "" Then strFilter = strFilter & "operatore='" & Me.txtOperatore & "'" & concat

If Nz(Me.txtTipo) <> "" Then strFilter = strFilter & "tipo=" & Me.txtTipo & concat

If Len(strFilter) > 0 Then

    strFilter = Left$(strFilter, Len(strFilter) - Len(concat))

    Me.Filter = strFilter

    Me.FilterOn = True

Else

    Me.Filter = ""

    Me.FilterOn = False

End If

End Sub

Private Sub cmdFiltra_Click()

myfilter

End Sub

prova questo DB. apri la form, scrivi nella textbox operatore uno degli operatori che vedi nella form e lo stesso per quanto al tipo, una volta fatto clicca su filtra.

dopo di che esegui la query e vedrai gli stessi risultati.

Se devi ottenere un risultato simile a questo opterei per filtrare la form.

Ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-07-06T18:47:42+00:00

    Buona sera, vorrei mantenere i minuti con due decimali e non come da immagine che li riporta in modo periodico.

    Ho inserito la funzione Round ma li arrotonda per difetto oppure per eccesso, come fare per tale problematica?

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-06T10:57:07+00:00

    Buongiorno a tutti, qualora non fossi stato in grado di spiegare bene la mia esigenza vi prego di volermelo segnalare, son impallato nella query da concatenare.

    Purtroppo, è molto difficile per me spiegarvi la mia necessità che non per voi capirla.

    In attesa di un vostro cortese e professionale cenno di riscontro vi saluto e vi auguro buona giornata.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-05T07:09:11+00:00

    Buongiorno a tutti, provando e riprovando sono riuscito nel mio intento, creando la query sottostante.

    Desidererei però che i parametri me li prenda dalle due combobox e non che all'esecuzione della query me li chieda di inserire come da immagini sottoriportate: 

    Mi aiutate per favore a risolvere questo mio problema.

    Ringrazio anticipatamente  chi mi aiuta in questo.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-07-04T17:53:21+00:00

    Vorrei segnalare che il campo che contiene le ore  e i minuti si chiama Tempo e non Totale, scusatemi.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento