Newsgroup: it.comp.appl.access
Titolo: Impostare range di ricerca

Buon giorno a tutto il n.g.
E' da ieri che provo e riprovo ma non riesco ad ottenere il risultato, 
chiedo venia anticipatamente per questa richiesta di aiuto.
In pratica, sto costruendo un piccolo db per l'inserimento e la ricerca 
delle calorie degli alimenti.
Ho costruito una maschera con una sottomaschera integrata che in "teoria", 
impostata la categoria degli alimenti in cui voglio effettuare la ricerca 
tramite combobox (es. verdure e ortaggi), impostato il range di ricerca 
delle calorie su cui voglio ottenere i risultati tramite casella di testo, 
impostato lo scostamento (es. trova un alimento nella categoria verdure e 
ortaggi pari a Kcal 50 +/- 30 Kcal)  tramite casella di testo, dovrebbe 
rendermi tutti quegli alimenti, nella sottomaschera, rispondenti ai tre 
parametri succitati. Non sono riuscito ad ottenere il risultato voluto...
In pratica, Scelgo la categoria (verdure ed ortaggi) inserisco il nr. di 
calorie su cui voglio ottenere il risultato (es. 150) inserisco il nr. 
massimo scostamento delle calorie su cui ottenere il risultato (+/- 30 ).
Riporto sotto una query di prova che ho assemblato, non mi riesce ad 
inserire il range di ricerca delle calorie (+/-)
SELECT TabAli.NomeAlim, TabAli.Colesterolo, TabAli.Categoria, TabAli.Kcal
FROM TabAli
WHERE (((TabAli.Colesterolo) Is Null) AND ((TabAli.Categoria)="CARNI 
FRESCHE"));
Grazie
Roberto

 Roberto
Se nr. calorie č 150 il range va da 120 a 180. E' cosě?
Quindi 150-30 e 150+30.
Hai provato con between?
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sv
Stavo proprio provando con between e and Devo perň capire come impostare la 
combinata e le altre due caselle di testo in modo tale da far partire la 
ricerca quando ho inserito l'ultimo parametro nonchč lo scostamento. Nella 
query mi riesce ma quando tento di collegare tutto alla maschera, non mi 
funziona. 

RobertOne ha scritto:


Intanto direi di fare in questo modo, poi ottimizzi.
Creati due caselle non associate. Nell'origine metti in una =Kcal-range,
nell'altra =Kcal+range.
A questo punto il criterio nella query:
Between Forms!TuaMaschera!CasellaNonAssociata1 and
Forms!TuaMaschera!CasellaNonAssociata2


 sv
Questa è la mia query:
SELECT TabAli.Categoria, TabAli.Kcal, TabAli.NomeAlim, TabAli.Proteine, 
TabAli.Glucidi, TabAli.Lipidi, TabAli.[%Edibile], TabAli.Acqua, 
TabAli.Fibre, TabAli.Colesterolo
FROM TabAli
WHERE (((TabAli.Categoria)=[Forms]![RicPerPar]![RiCatPar]) AND 
((TabAli.Kcal) Between 
[Forms]![RicPerPar]![CerKal]-[Forms]![RicPerPar]![SCOSTAMENTO] And 
[Forms]![RicPerPar]![CerKal]+[Forms]![RicPerPar]![SCOSTAMENTO]))
ORDER BY TabAli.Categoria;
Per evitare di mettere due caselle non associate ma soltanto una. Funziona 
ma non capisco perchè non mi renda i risultati corretti. Per esempio , se 
inserisco Kcal 500 e scostamento +/- 50 dovrebbe dare dei risultati da 450 a 
550, invece me ne trovo anche maggiori di 550 ed inferiori a 450 ... Non 
capisco dove sia l'inghippo... 

 sv
Da notare che se imposto per prova in questo modo:
SELECT TabAli.Categoria, TabAli.Kcal, TabAli.NomeAlim, TabAli.Proteine, 
TabAli.Glucidi, TabAli.Lipidi, TabAli.[%Edibile], TabAli.Acqua, 
TabAli.Fibre, TabAli.Colesterolo
FROM TabAli
WHERE (((TabAli.Categoria)=[Forms]![Param]![RCP]) AND ((TabAli.Kcal) Between 
500-100 And 500+100))
ORDER BY TabAli.Categoria;
La query funziona... Però ovviamente ho bisogno dei parametri non 
preimpostati... Questa proprio non la capisco. 

RobertOne ha scritto:




 Ti avevo detto che poi si ottimizza.. Ok :-)
Suppongo che CerKal e Scostamento siano due caselle non associate. Che
formato hai dato a queste due caselle? Devi dare formato numerico perchè
se lasci vuoto il formato nella proprieta della casella la stringa 
[Forms]![RicPerPar]![CerKal]+[Forms]![RicPerPar]![SCOSTAMENTO] diventa 
500&50 cioè 50050.


 ed inferiori a 450 ...
Di quale tipo di dati č il campo CerKal nella tabella TabAli?
Per vedere cosa succede puoi fare una prova con i parametri
come campi calcolati. Incolla questa nella vis. SQL di una query:
SELECT Categoria, Kcal, NomeAlim, Proteine,
Glucidi, Lipidi, [%Edibile], Acqua, Fibre, Colesterolo,
[Forms]![RicPerPar]![CerKal], [Forms]![RicPerPar]![SCOSTAMENTO],
[Forms]![RicPerPar]![CerKal]-[Forms]![RicPerPar]![SCOSTAMENTO],
[Forms]![RicPerPar]![CerKal]+[Forms]![RicPerPar]![SCOSTAMENTO]
FROM TabAli
WHERE Categoria = [Forms]![RicPerPar]![RiCatPar]
 AND Kcal Between
 [Forms]![RicPerPar]![CerKal]-[Forms]![RicPerPar]![SCOSTAMENTO] And
 [Forms]![RicPerPar]![CerKal]+[Forms]![RicPerPar]![SCOSTAMENTO]
ORDER BY TabAli.Categoria
BTW Il nome "%Edibile" per un campo č orribile e puo causare
problemi. Evita segni speciali soprattutto se anche hanno una
funzione in SQL ecc. come il %.
-- 
cu
Karl
*********
Access FAQ: 
http://www.donkarl.com/it
 

 sv
Hai ragione, avevo già costruito la maschera ed era solamente per non 
modificarla, chiedo venia. Il problema era proprio il formato che non avevo 
dato alle due caselle, Dopo averglielo dato, anche quell'alimento con 661 
Kcal, impostando una ricerca a 500 range +/- 100 non mi esce più, mentre 
prima usciva.
Grazie per la disponibilità.
Roberto