SQL SERVER EXPRESS 2008 R2 Lavorare con le date

venerdì 10 febbraio 2012 - 11.35
Tag Elenco Tags  VB.NET  |  SQL Server 2008 R2

Feroxis Profilo | Junior Member

Ho un problema, le ricerche con le date con parametro singolo mi vengono, il problema è se alla ricerca voglio dare più di un valore sulle date.

questa la parte del codice in questione

myconn.ConnectionString = info.stringaconn
mycomm.Connection = myconn
mycomm.CommandText = "SELECT * " & _
"FROM " & info.tabprenotazioni & "" & _
"WHERE (DataIni BETWEEN @DataStart AND @ Datafinet) AND (DataFin BETWEEN @Datainit AND @DataFinal)"
mycomm.Parameters.Add("@DataInit", SqlDbType.DateTime).Value = dataini
mycomm.Parameters.Add("@Datafinet", SqlDbType.DateTime).Value = datafine
mycomm.Parameters.Add("@DataStart", SqlDbType.DateTime).Value = info.initlicenza
mycomm.Parameters.Add("@DataFinal", SqlDbType.DateTime).Value = info.finelicenza

Immaginate un ordine di una stanza o di un ombrellone o di qualcosa da affittare.

cerco di selezionare i record dove il valore della data iniziale della prenotazione è compreso fra data finale e con valore minimo 01/01/2012 dato da info.initlicenza

e dove il valore di fine prenotazione è compreso fra di quello iniziale e massimo 12/31/2012 dato da info.finelicenza

avendo posto prima che il valore iniziale è per forza minore di quello finale dovrei avere come risultato qualsiasi prenotazione che possa sovrapporsi a quella che si sta cercando di fare per esempio.

l'errore è dato in prossimità di BETWEEN non posso dirvi altro perchè l'errore più di questo non specifica.
Infine per dubbio personale BETWEEN è una formula pari a Y < X < Z o Y<= X <= Z?



boccia75 Profilo | Junior Member

Ciao!
Perchè non provi a visualizzare la query che cerchi di eseguire?
A me puzza tanto questa parte:
"FROM " & info.tabprenotazioni & "" & _
io metterei uno spazio tra i due doppi apici e quindi
"FROM " & info.tabprenotazioni & " " & _

Per quanto riguarda la seconda domanda, between lavora in questo modo:
Y between X and Z è equivalente a
X<=Y<=Z

Ciao.

Feroxis Profilo | Junior Member

il problema non è in info.tabprenotazione ma sotto
info è una classe dove sono racchiuse le informazioni principali. e info.tabprenotaziona = "nometabella"
se utilizzo la query
SELECT * FROM info.tabecc ecc mi da tutti i risultati quindi non ci sono problemi fino a qui.

se provo ad inserire WHERE non restituisce nulla.
Ho provato ad utilizzare il query editor di Management Studio, e li funziona.

Ho ricontrollato le date: SQl Tabella = DateTime Campo DataInie DataFin
Le variabili assegnate alle date sono di formato DateTime

boccia75 Profilo | Junior Member

Scusa, prima hai detto che ti dava un errore e non che il risultato era vuoto....
Qual'è il problema?
Un errore oppure un risultato vuoto?
Ciao.

PS
Se fai una print.CommandText (adesso non so la sintassi...) che risultato (query) ottieni?

Feroxis Profilo | Junior Member

Se chiedo di cercare tutto mi trova tutti i risultati e va bene,
Se cerco di ottenere una data fra 2 termini va bene.
Se di ottenere 2 date fra 2 termini non mi da alcun risultato.

boccia75 Profilo | Junior Member

Allora non c'è errore si sintassi, il problema è il set di risultati che non è quello che ti aspettavi.
A questo punto sarebbe meglio se facessi qualche esempio dei dati presenti in tabella e laquery che cerchi di eseguire, così riesco a capire perchè la query non lavora correttamente.
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5