Newsgroup: it.comp.appl.access
Titolo: trover numero di record per orario

Ciao
Ho sempre problemi con query con orari
Problema 1.
ho una maschera dove imposto una data di partenza e
una di arrivo. La query è
SELECT .....
FROM ....
WHERE data BETWEEN [forms].[mStat].[DaData]
And [forms].[mStat].[AData] and
Between #21.00.00# And #23.59.59# or
Between #00.00.00# And #07.59.59#
Però è sbagliato, cioè, la query è corretta ma io non voglio quello
deve estrarre i record dalle 21 del  giorno prima di
[forms].[mStat].[DaData]
fino alle 20:59:59 del giorno [forms].[mStat].[AData] .
Se uno vuole sapere i record del giorno 21/04/04
inserisce 21/04/04 in dutti e due i controlli e gli restituisco conteggi...
dalle 21 del 20/04/04 alle 20:59:59 del 21/04/04
Problema 2.
Risolto mentre scrivevo.
Ciao
TT

 ha scritto nel messaggio
news:lUyhc.139067$Kc3.4...@twister2.libero.it...

Non è chiaro cosa contiene il campo data: contiene sia la data che l'orario
oppure contiene solo la data, nel qual caso l'orario in quale campo è
contenuto?
Resta il fatto che la WHERE come l'hai scritta ti darebbe sicuramente errore
in quanto la seconda e terza funzione Between non contemgono il primo
termine di paragone.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:FbLhc.139794$Kc3.4...@twister2.libero.it...

Grazie per la cortese risposta
Allora te la ripropongo senza tagli, come la salva QBE
Esempio del contenuto dei campi
Ora = 0523     'string 4 char, indica l'ora di inserimento 5:23 AM
Secondi= 23    'string 2 char, campo solo per i secondi
Data=12/10/2002 'datetime
SELECT table.Data,
CDate(Left([Ora],2) & ":" & _
Right([Ora],2) & ":" & [Secondi]) AS OraIns
FROM table
WHERE (((table.Data)
Between [forms].[mStat].[DaData] And [forms].[mStat].[AData]) AND
((CDate(Left([Ora],2) & ":" & Right([Ora],2) & ":" & [Secondi]))
 Between #12/30/1899 21:0:0# And #12/30/1899 7:0:0#))
ORDER BY CDate(Left([Ora],2) & ":" & _
Right([Ora],2) & ":" & [Secondi]);
Adesso questa estrae tutti i record dell'intervallo DaData a AData che
hanno come ora di inserimento compreso tra le 7 e le 21
A me serve che mi restituisca i record dalle 21 di giorno prima di DaData
alle 7 di AData.
Senti, ho un'altro problema sempre query con ora, te lo dico poi dimmi tu se
devo aprire un altro 3d
Avendo il risultato della query sopra (dopo che è stata corretta) voglio
ottenere il conteggio di record, diviso per ore
Es
Giorno prima di DaData dalle 20:20 alle 21:20   13 record
(da 2020 a 21 non ci sono record)
Giorno prima di DaData dalle 21:20 alle 22:20   123 record
Giorno prima di DaData dalle 22:20 alle 23:20   13 record
Giorno prima di DaData dalle 23:20 alle 00:20  di AData 13 record
 dalle 00:20 alle 01:20   23 record
 dalle 01:20 alle 02:20   12 record
 dalle 02:20 alle 03:20   1 record
proseguendo con
dalle 06:20 alle 07:20     25 record
dalle 07:20 alle 08:20     0
dalle 08:20 alle 09:20     0
fino a
dalle 19:20 alle 20:20
Così se uno mette DaData = AData
ci sono 24 ore di conteggi
Grazie ancora
TT

 TT



Grazie per la risposta
Non mi sono spiegato bene.
Ho riletto il post che avevo mandato ed effettivamente hai risposto alla
domanda, scusami ma non intendevo quello.
Volevo estrarre dalle 21 del giorno prima di DaData alle 23:59:59
+ dalle 00:00:00 alle 07:00:00 , saltare dalle 07:00 fino alle 21 di DaData
estrarre dalle 21:00 alle 23:59.... di DaData ,
+ dalle 00:00 alle 07:00 di DaData+1
........
fino a
+ dalle 00:00 alle 07:00 di AData
Skippando le fascie dalle 7 alle 21 di tutti i giorni
e dalle 21 in poi di AData.
Ciao
TT

 21:0:0#) And (CDate([Forms]![mStat]![AData]) + #12/30/1899 7:0:0#)));
La inserisco nella maschera "mStat" dalla quale la query si becca
i parametri ma, quando la apro (parlo di mStat), mi appare il messaggio:
"Espressione digitata non correttamente o troppo complessa per essere
valutata. Un'espressione numerica, ad esempio, può contenere troppi elementi
complessi. Semplificare assegnando parti dell'espressione a variabili."
Se apro "mStatNotte" funzia, quindi
se "Espressione digitata non correttamente" non può essere perchè me l'hai
detta
tu e comunque funziona se apro mStatNotte
come si può "Semplificare assegnando parti dell'espressione a variabili" ?
Grazie 1000
TT

 TT
-- 
Roberto


 Grazie 1000



Adesso che ci siamo chiariti....
A me ineresserebbe trovare i record "a cavallo" dei xxx giorni
Seguendo le date sopra, estrarre i record
dalle 21 del 19/04 alle 7 del 20/04
dalle 21 del 20/04 alle 7 del 21/04
dalle 21 del 21/04 alle 7 del 22/04
dalle 21 del 22/04 alle 7 del 23/04
stop
Grazie ancora. Ciao
TT

 dei due parametri fai il requery della maschera mStatNotte.
Infatti č proprio cosě che ho fatto.
Attualmente i forms sono cosě:
mStat che ha i due controlli in intestazione maschera dove inserisco la data
(DaData e AData) e un pulsante
Nel corpo di mStat ci sono le tre sottomaschere
mStatMattina, mStatPomeriggio e mStatNotte
Se tutto funzionasse dovrebbe
aprirsi mStat, poi inserisco le date, pigio il bottone dove faccio da mStat
me.recalc e si dovrebbero vedere tutti i dati.
Perň
Quando apro la mStat mi appare l'errore che ho scritto nell'altro post
ed al posto di mStatNotte appare un bruttissimo riquadro bianco.
Posso fare quello che voglio ma rimane cosě.
Dopo svariate prove, risolvo inserendo un controllo nascosto in
"Pannello di controllo", che č sempre aperto, a all'apertura ci metto la
data di oggi.
quando apro mStat le query non pigliano piů la data da mStat ma da
controllonascosto
del pannello e quando voglio cambiare la data uso l'evento after update del
controllo
DaData.L'assurdo č che cosě funziona.
Avevo anche provato ad inserire in DaData e AData  il valore Date di vb
all'apertura
del form, sia in open che in load, ma prima da l'errore e poi inserisce la
data nel
controllo.
Bo
Forse non arriva a calcolare il (CDate([Forms]![mStat]![DaData]) - 1 ...
perchč
senza il -1 (non guardare il risultato) funziona.
 Se apro mStatNotte ed inserisco le date a mano, quando appare la finestra
"Immissione valore parametro" funziona ma insserito in mStat no.
Io non ho capito perchč.
Un'altra cosa, pensavo di assegnare l'origine record a mStatNotte quando
pigio il bottone, quindi le date ci sono presento, ma non arrivo.
Facevo forms!mStat!mStatNotte.RecordSource = qStatNotte
ma da errore e non so se non č possibile assegnare il recordsource ad una
sottomaschera o se sbaglio da qualche parte.
Grazie ancora
Ciao
TT

 Ciao



Ciao
Lo hai igà fatto!
Non si apriva la sottomascehra mStatNotte perchè aveva bisogno
di una data che all'apertura della maschera non aveva.
Allora guarda cosi ti ho combinato.
Option Compare Database
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''
Public DaData As Date
Public AData As Date
Public DataFiltro As String
Public DaMattina As String
Public AMattina As String
Public DaPomeriggio As String
Public APomeriggio As String
Public DaNotte As String
Public ANotte As String
''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function DammiData(Nome As String) As Date
    Select Case Nome
        Case "DataFiltro"
            DammiData = DataFiltro
        Case "DaData"
            DammiData = DaData
        Case "AData"
            DammiData = AData
        Case "DaMattina"
            DammiData = DaMattina
        Case "AMattina"
            DammiData = AMattina
        Case "DaPomeriggio"
            DammiData = DaPomeriggio
        Case "APomeriggio"
            DammiData = APomeriggio
        Case "DaNotte"
            DammiData = DaNotte
        Case "ANotte"
            DammiData = ANotte
        Case Else
            MsgBox ("Nome errato!!!!!!!!!!!!!")
            Exit Function
    End Select
End Function
Public Function DammiMinuti() As Integer
    DammiMinuti = CInt(Chr(45) & Mid$(CStr(Format(DammiData("DaMattina"),
"hh:mm:ss")), 4, 2))
End Function
Function InputF() As String
Dim numfile
Dim path As String
    path = CurrentProject.path & Chr(92) & FileOrari
numfile = FreeFile
If Not (Dir(path) = FileOrari) Then GoTo Inesistente
Open path For Input As numfile          ' Apre il file per l'input.
    Line Input #numfile, DaMattina      ' Legge la riga di dati.
    Line Input #numfile, AMattina       ' Legge la riga di dati.
    Line Input #numfile, DaPomeriggio   ' Legge la riga di dati.
    Line Input #numfile, APomeriggio    ' Legge la riga di dati.
    Line Input #numfile, DaNotte        ' Legge la riga di dati.
    Line Input #numfile, ANotte         ' Legge la riga di dati.
Close numfile    ' Chiude il file.
Exit Function
Inesistente:
MsgBox "Errore nella lettura delle fasce orarie.", vbCritical, "Errore
Lettura file"
Exit Function
End Function
Function OutputF(p_DaMattina As String, p_AMattina As String, _
                 p_DaPomeriggio As String, p_APomeriggio As String, _
                 p_DaNotte As String, p_ANotte As String)
Dim numfile
Dim path As String
    path = CurrentProject.path & Chr(92) & FileOrari
    numfile = FreeFile
    Open path For Output As numfile
    Print #numfile, p_DaMattina
    Print #numfile, p_AMattina
    Print #numfile, p_DaPomeriggio
    Print #numfile, p_APomeriggio
    Print #numfile, p_DaNotte
    Print #numfile, p_ANotte
    Close numfile
End Function
E poi faccio la query Mattina con
SELECT Nome, Count(*) AS Chiamate, Sum(IIf([STATUS]="O"),1,0)) AS Occupate,
Sum(IIf([STATUS]="L",1,0)) AS Libere.........
FROM Table
WHERE (((DataIns)=DammiData("DataFiltro")) AND ((STATUS)<>"?" And
(STATUS)<>"i") AND ((CDate(Left([Ora],2) & ":" & Right([Ora],2) & ":" &
[Secondi])) Between DammiData("DaMattina") And DammiData("AMattina"))) OR
(((DataIns)=DammiData("DataFiltro")) AND ((STATUS) Is Null) AND
((CDate(Left([Ora],2) & ":" & Right([Ora],2) & ":" & [Secondi])) Between
DammiData("DaMattina") And DammiData("AMattina")))
GROUP BY Nome
HAVING (((Nome) Is Not Null));
Così ho sempre le fasce memorizzate, sono modificabili  e poi
è una figata. Che ne pensi?
Grazie di tutto
TT
ps adesso vado a provare la query.

 ps adesso vado a provare la query.
-- 



Ciao
Ho provato la query e come si poteva immaginare funziona alla
perfezione !
L'ho modificata con la funzione DammiData da me sritta.
Un grazie infinito
TT