Newsgroup: it.comp.lang.visual-basic
Titolo: stringa di sql

devo fare una query che mi selezioni tutti i record che abbiano la data
corrente che sia compresa tra questi due campi
esiste un comando di sql between.... and .... ma non so come si usa
i campi sono
lavorodal
al
joh...@libero.it

La select da fare è le seguente:
SELECT * FROM nometabella WHERE nomecampodata BETWEEN #data1# AND #data2#
Ciao  Valy

 SELECT * FROM nometabella WHERE nomecampodata BETWEEN #data1# AND #data2#
oppure, direi
SELECT * FROM nometabella WHERE nomecampodata >= #data1# AND nomecampodata
<= #data2#
tenendo presente che di solito sql apprezza vivamente le date americane
(mmddyyyy)
se le date vengono immesse in textboxes, magari usa isdate e cdate per
controllare/convertire.

 wrote in message
ZYJd4.7995$I3.8...@news.infostrada.it...


da MSDN di VS 6.0:
Between...And Operator
Determines whether the value of an expression falls within a specified range
of values. You can use this operator within SQL statements.
Syntax
expr [Not] Between value1 And value2
The Between...And operator syntax has these parts:
Part Description
expr Expression identifying the field that contains the data you want to
evaluate.
value1, value2 Expressions against which you want to evaluate expr.
Remarks
If the value of expr is between value1 and value2 (inclusive), the
Between...And operator returns True; otherwise, it returns False. You can
include the Not logical operator to evaluate the opposite condition (that
is, whether expr lies outside the range defined by value1 and value2).
You might use Between...And to determine whether the value of a field falls
within a specified numeric range. The following example determines whether
an order was shipped to a location within a range of postal codes. If the
postal code is between 98101 and 98199, the IIf function returns "Local".
Otherwise, it returns "Nonlocal".
SELECT IIf(PostalCode Between 98101 And 98199, "Local", "Nonlocal")
FROM Publishers
If expr, value1, or value2 is Null, Between...And returns a Null value.
Because wildcard characters, such as *, are treated as literals, you cannot
use them with the Between...And operator. For example, you cannot use 980*
and 989* to find all postal codes that start with 980 to 989. Instead, you
have two alternatives for accomplishing this. You can add an expression to
the query that takes the left three characters of the text field and use
Between...And on those characters. Or you can pad the high and low values
with extra characters - in this case, 98000 to 98999, or 98000 to 98999 -
9999 if using extended postal codes. (You must omit the - 0000 from the low
values because otherwise 98000 is dropped if some postal codes have extended
sections and others do not.)

 Mi potresti dire piu' precisamente dove e' scritto nell'help?
in effetti non dovrebbero essercene.
ho fatto qualche prova con un freeware abbastanza comodo, direi proprio
scritto in vb. (essendo un trainer mi sembra non permetta di modificare il
db con update, ma solo di leggerlo). cmq:
sql trainer
(c) 1998 by geno timlin
lizardfoot design
http://www.lizardfoot.com
ge...@lizardfoot.com
sulla sx un treeview da' la struttura (tabelle e campi) dell'mdb che si e'
scelto, in alto si immette una stringa sql, a dx arriva il risultato della
query (o il messaggio di query non valida, ecc.):
select date, subject from ark where date between #10/01/1999# and
#11/01/1999#
    matching records:569
    date: 01/10/1999
    subject: aggiornamento del 1 ottobre 1999
    ...
    date: 31/10/1999
    subject: monitor
select date, subject from ark where date >= #10/01/1999# and date <=
#10/31/1999#
    matching records:569
    date: 01/10/1999
    subject: aggiornamento del 1 ottobre 1999
    ...
    date: 31/10/1999
    subject: monitor
cioe' between o maggiore/minore sembrano bene accetti tutti e due.
la cosa sconcertante resta sempre l'interpretazione delle date. posto che
quelle americane sopra andavano bene, mi sarei aspettato un errore sulla
query qui sotto:
select date, subject from ark where date >= #1/10/1999# and date <=
#31/10/1999#
e invece:
    matching records:3324
    date: 11/01/1999
    subject: linea dati garr
    ...
    date: 31/10/1999
    subject: monitor
mi chiedo se c'e' un modo _certo_ per far si' che una data venga
interpretata sempre allo stesso modo, 1. ottobre o 10 gennaio non importa,
purche' sia sempre quello...

 wrote



wrote:


grazie a tutti quelli che hanno risposto alla mia domanda
ma sono riuscito a tovare la stringa giusta che è
" SELECT * FROM scad_prog WHERE #" & Format(Date, "mm/dd/yyyy") & "# between
lavorodal and al "
joh...@libero.it