Valori compresi

giovedì 10 gennaio 2008 - 18.29

gg Profilo | Newbie

ho bisogno di un informazione:
è possibile creare in access un campo numerico che comprenda tutti i valori compresi tra due numeri?
grazie in anticipo
g

alpanix Profilo | Junior Member

>è possibile creare in access un campo numerico che comprenda
>tutti i valori compresi tra due numeri?

cosa intendi con "che comprenda"?
avendo i due valori 4 e 9 cosa dovrebbe risultare?


AlPanix

gg Profilo | Newbie

intendo che mi consideri tutti i valori tra 4 e 9, cioè anche il 5, 6, 7, 8
g

alpanix Profilo | Junior Member

>intendo che mi consideri tutti i valori tra 4 e 9, cioè anche
>il 5, 6, 7, 8

e fin qui..
il risultato però deve essere 456789 o 4+5+6+7+8+9 cioé 39?



AlPanix

gg Profilo | Newbie

scusa, non mi sono spiegato, intendo dire, che se faccio una ricerca in cui mi servono i numeri 7 e 8 io li possa trovare perchè il mio campo comprende tutti i valori singoli tra 4 e 9, se ho capito bene, la prima delle tue opzioni
g

alpanix Profilo | Junior Member

>scusa, non mi sono spiegato, intendo dire, che se faccio una
>ricerca in cui mi servono i numeri 7 e 8 io li possa trovare
>perchè il mio campo comprende tutti i valori singoli tra 4 e
>9, se ho capito bene, la prima delle tue opzioni

ok
nessuna delle mie opzioni
quello che cerchi tu è questo:
SELECT * FROM tabella WHERE campo BETWEEN valore1 AND valore2
ti seleziona tutti i record che abbiano il valore di "campo" compreso tra "valore1" e "valore2"

giusto?



AlPanix

gg Profilo | Newbie

penso di si, in pratica, se io cerco il 7, mi appare anche se io quel numero non lo ho mai inserito?
g

alpanix Profilo | Junior Member

>penso di si, in pratica, se io cerco il 7, mi appare anche se
>io quel numero non lo ho mai inserito?

no
se il record non è presente non può essere selezionato
quel che ti ho scritto io sopra seleziona tutti i record esistenti che presentano, nel campo "campo", un valore compreso tra "valore1" e "valore2"
se dai come estremi 4 e 9, e sulla tabella hai i record 1,2,4,5,7,9 e 10, vengono restituiti solo i record 4,5,7 e 9


AlPanix

gg Profilo | Newbie

a me servirebbe un valore tipo da...a, un'espresssione da inserire in un campo che esplici ogni singolo valore tra 4 e 9
secondo te è possibile
g

alpanix Profilo | Junior Member

>a me servirebbe un valore tipo da...a, un'espresssione da inserire
>in un campo che esplici ogni singolo valore tra 4 e 9
>secondo te è possibile

tutto è possibile
il problema grosso è che non ho capito bene
con i due estremi che poni vuoi selezionare dei record o semplicemente esporre tutti i numeri interi compresi tra quegli estremi?
il primo caso te l'ho postato qui sopra
il secondo caso è un ciclo for.. next
attribuisci ad una variabile il valore dell'estremo inferiore e cicla questa variabile sommandogli una unità fino a che non assume il valore dell'estemo superiore
all'interno del ciclo puoi fare quel che vuoi: visualizzarlo, inserirlo in una tabella..
praticamente:

Dim numVariabile As Integer For numVariabile = EstremoInferiore To EstremoSuperiore ' [...] istruzioni per visualizzare, inserire o altro Next numVariabile

se non ho capito posta un esempio concreto di cosa vuoi inserire e cosa, come e dove vuoi visualizzare il risultato


AlPanix

gg Profilo | Newbie

grazie per il suggerimento ora provo, poi ti faccio sapere
g

gg Profilo | Newbie

devo creare una tabella in cui ci sia un campo con che consideri un intervallo numerico, compreso tra un numero iniziale e un numero finale, ovviamento in ogni record tali valori (iniziale e finale cambiano). ho provato inserendo due campi numerici, ma il mio problema nasce nel momento in cui devo fare una ricerca. es.
nel record 1 inserisco nel campo numero iniziale 5 e nel campo numero finale 25
nel record 2 i numeri 10 e 20,
quando faccio una ricerca per in numeri >10 e <20 non ottengo nessun dato, mentre vorrei che mi si visualizzassero entrambi i record perchè a me interessano tutti i numeri compresi tra quello iniziale e quello finale, secondo te posso ottenere questo risultato? in che modo con i due campi come ho provato o con un unico campo che consideri un intervallo numerico?
spero di essermi spiegato
g

alpanix Profilo | Junior Member

>nel record 1 inserisco nel campo numero iniziale 5 e nel campo
>numero finale 25
>nel record 2 i numeri 10 e 20,
>quando faccio una ricerca per in numeri >10 e <20 non ottengo
>nessun dato, mentre vorrei che mi si visualizzassero entrambi
>i record perchè a me interessano tutti i numeri compresi tra
>quello iniziale e quello finale, secondo te posso ottenere questo
>risultato? in che modo con i due campi come ho provato o con
>un unico campo che consideri un intervallo numerico?
>spero di essermi spiegato

ora credo di aver capito
tu hai bisogno di selezionare tutti i record di una tabella che soddisfano un certo intervallo

in pratica, se hai sulla tabella i tre records (con campi ValMin, ValMax):
10, 20
9, 19
8, 21

e dai come numeri limite NumMin=10 e NumMax=20

tu vuoi selezionare il primo (10, 20) e il terzo (8, 21)
il secondo non soddisfa la condizione ValMax >= NumMax, per cui non deve essere selezionato

SELECT tuaTabella.ValMin, tuaTabella.ValMax FROM tuaTabella WHERE tuaTabella.ValMin <= Forms!tuaMaschera.NumMin AND tuaTabella.ValMax >= Forms!tuaMaschera.NumMax;

giusto?


AlPanix

gg Profilo | Newbie

in realtà vorrei selezionarli tutti e tre:
considerali come un arco temporale, ho tre serie di valori:
10 20
9 19
8 21
ovvero tre differenti avvenimenti svoltisi all'interno di questi tre archi temporali,
se voglio trovare degli avvenimenti che comprendano un arco che va tra 10 e 20 devo trovarli tutti e tre, perchè tutti e tre soddisfano questa condizione

penso che con questo esempio possa essere più chiaro
g

alpanix Profilo | Junior Member

>in realtà vorrei selezionarli tutti e tre:
>considerali come un arco temporale, ho tre serie di valori:
>10 20
>9 19
>8 21
>ovvero tre differenti avvenimenti svoltisi all'interno di questi
>tre archi temporali,
>se voglio trovare degli avvenimenti che comprendano un arco che
>va tra 10 e 20 devo trovarli tutti e tre, perchè tutti e tre
>soddisfano questa condizione

allora il codice sopra (trasformati tutti i campi in date) dovrà diventare

SELECT tuaTabella.DataMin, tuaTabella.DataMax FROM tuaTabella WHERE tuaTabella.DataMin <= Forms!tuaMaschera.LimiteMax AND tuaTabella.DataMax >= Forms!tuaMaschera.LimiteMin;

(nota che rispetto a sopra ho invertito i limiti max e min)

così vengono selezionati tutti i seguenti periodi:

1) DataMin e DataMax comprese all'interno di LimiteMin e LimiteMax
2) DataMin e DataMax a cavallo di LimiteMin
3) DataMin e DataMax a cavallo di LimiteMax
4) DataMin e DataMax che comprendono LimiteMin e LimiteMax

e i periodi non selezionati saranno tutti quelli con sia DataMin che DataMax inferiori a LimiteMin e tutti quelli con sia DataMin che DataMax superiori a LimiteMax


AlPanix

gg Profilo | Newbie

questo vuol dire che lo posso fare solo con le date e non con i numeri?

alpanix Profilo | Junior Member

>questo vuol dire che lo posso fare solo con le date e non con
>i numeri?

certo che no

SELECT tuaTabella.NumeroInferiore, tuaTabella.NumeroSuperiore FROM tuaTabella WHERE tuaTabella.NumeroInferiore <= Forms!tuaMaschera.LimiteMax AND tuaTabella.NumeroSuperiore >= Forms!tuaMaschera.LimiteMin;

la logica è la stessa


AlPanix

gg Profilo | Newbie

grazie

alpanix Profilo | Junior Member

>grazie

figurati


AlPanix
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5