7 messaggi dal 11 novembre 2006
Carmen wrote:
peace8maker ha scritto:

Carmen wrote:
select
Persone
from
Cantiere
where
(@StartDate between Cantiere.StartDate AND
isnull(Cantiere.EndDate,'99990101') OR
(@EndDate between Cantiere.StartDate AND Cantiere.EndDate) OR (Cantiere.StartDate between @StartDate AND @EndDate) OR
(isnull(Cantiere.EndDate,'99990101') between @StartDate AND @EndDate) dove '99990101' puo' essere una qualsiasi data a tua scelta, anche la data odierna, e @StartDate and @EndDate sono i tuoi parametri di ricerca. Ciao
PV
.

Vorrei provare anche questo metodo, però non mi risulta molto chiara, in particolare perchè usi questo simbolo (@)

Il simbolo @ sta ad indicare un variabile in SQL. Nel tuo caso dovresti sostituire @StartDate e @EndDate con i tuoi criteri di ricerca.
Per rendere piu' chiaro se vuoi cercare tutte le persone che hanno lavorato nel cantiere dal "1/01/2008" al "31/12/2008", allora dovrai sostituire @StartDate con "1/01/2008" ed @EndDate con "31/12/2008".
Fammi sapere se funziona.

Ciao

Paolo V.
277 messaggi dal 13 giugno 2001
Ciao,

La tua query in linea di massima sembra funzionare. Io avevo fatto una query di questo genere

... WHERE (cantiere.dalser<=" & cdbl(cdate(request("i"))) & " and cantiere.alser>=" & cdbl(cdate(request("f"))) & " OR cantiere.dalser between " & cdbl(cdate(request("i"))) & " AND " & cdbl(cdate(request("f"))) & " OR cantiere.alser=0) AND cantiere.cc='" & replace(request("rc"),"'","''") & "'"


anche questa funziona. Per risolvere il fatto della datafine, come vedi dalla query o messo
OR cantiere.alser=0

questo perchè se la datafine non è presente viene scritto nel db il valore 0.

L'unica cosa che non và ne, nella mia query, ne, nella tua, e il fatto che se inserisco una datafine fuori range non mi trova nulla.

Per fuori range intendo, che se devo controllare un range di date che và dal 10/12/2008 al 31/12/2008, se metto come range ad esempio 01/12/2008 31/12/2008 mi ritorna i risultati, se invece metto come range 01/12/2008 10/01/2009 non mi ritorna nulla...
Modificato da Carmen il 03 novembre 2008 18.58 -

Carmen
301 messaggi dal 31 maggio 2006
ciao
ho letto i precedenti post, tu a quanto ho capito puoi avere due tipi di differenti infomazioni nel record

1) DataInizio e DataFine valide
2) DataInizio valida, DataFine = 0

se codifichi due query una con
DataDaControllare BetWeen DataInizio And DataFine
e l'altra con
DataInizio BetWeen DataDaControllare(yyyy-mm-dd) + "00:00:00" AND DataDaControllare(yyyy-mm-dd) + "23:59:59"

dovresti avere tutti i record che ti servono, a questo punto metti le due query in UNION. La Union ti darà un record anche se ottenuto dalle due query


Spero di essere stato chiaro
277 messaggi dal 13 giugno 2001
Ti ringrazio del suggerimento. Però non o ben capito se devo fare due query separate.

Se si poi con UNION come li devo unire?

Carmen
301 messaggi dal 31 maggio 2006
Ciao
ti ho separato logicamente il problema in più query per facilitare di discorso, naturalmente vanno messe in UNION ottenendone una sola. La sintassi di UNION è

SELECT campo1,campo2 FROM Table1
UNION
SELECT campo1,campo2 FROM Table2


tieni presente che i campi (campo1,campo2) deveno essere dello stesso tipo ed avere lo stesso nome. Il risultato è infatti una tabella unica

campo1     campo2
aaaaa      ssssss
wwwww      ewwwee

Modificato da gghi il 08 novembre 2008 19.43 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.