IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Access
  New Posts New Posts RSS Feed - come passare il criterio "*" ad una query?
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

come passare il criterio "*" ad una query?

 Post Reply Post Reply
Author
Message
compostabile View Drop Down
Utente Senior
Utente Senior


Joined: 07/Mar/2011
Status: Offline
Points: 190
Post Options Post Options   Thanks (0) Thanks(0)   Quote compostabile Quote  Post ReplyReply Direct Link To This Post Topic: come passare il criterio "*" ad una query?
    Posted: 26/Mar/2012 at 14:49
Attenzione... il problema è rimasto ma ho modificato la tabella e la query... quindi Vi invito ad andare al mio reply del 28/04/12

Ciao a tutti,
 
mi trovo nella seguente situazione.
 
su una maschera(maschera1) ho posizionato la maschera (giorno) (non ha legami master/secondario con la precedente).
nella query che mi popola la maschera giorno ho la seguente condizione "AND ((Tab_promemoria.ambientale)=[Forms]![maschera1]![sel_amb]))"
dove sel_amb è un campo testo che assume il valore -1 o il valore 0 a seconda dello stato dell'interruttore F_amb
(se è premuto sarà -1, diversamente sarà 0). Nella tabella tab_promemoria il campo "ambientale" è un campo si/no.
Se attivo o disattivo l'interruttore (nel senso di cliccarlo) tutto ok. Il problema è che all'apertura della maschera vorrei che desse come valore "*"al criterio di cui sopra.
Se lo scrivo io nella query funziona e mi fa vedere tutti i record indipendentemente quindi non credo che gli dia fastidio.
Se invece se do come predefinito a sel_amb * o =* mi dice che l'espressione è troppo complessa e si blocca tutto.
c'è un modo per farlo digerire? (o sono completamente fuori strada?)
Spero di di essere stato comprensibile...
potrebbe tornarmi utile lo stato triplo dell'interruttore? (però non so come funziona)
ciao!
 
Piccolo aggiornamento:
ho bypassato il problema aggiungendo un ulteriore campo testo sulla maschera1 con valore predefinito -1
e ho messo e l'ho messo in OR con il valore di sel_amb.
rettifico... funziona solo con un unico criterio... io ne ho tre. quindi sono nuovamente bloccato


Edited by compostabile - 28/Apr/2012 at 14:39
Back to Top
gregorio View Drop Down
Utente Onorario
Utente Onorario
Avatar
Utente Onorario

Joined: 28/Apr/2008
Location: Italy
Status: Offline
Points: 1715
Post Options Post Options   Thanks (0) Thanks(0)   Quote gregorio Quote  Post ReplyReply Direct Link To This Post Posted: 26/Mar/2012 at 20:54
Mettere l'* predefinito ? oppure utilizzare "IIF" nella query per due, tre,ecc. nella query?
Bisognerebbe vedere l'mdb.
Ciao

Infogreg
Back to Top
compostabile View Drop Down
Utente Senior
Utente Senior


Joined: 07/Mar/2011
Status: Offline
Points: 190
Post Options Post Options   Thanks (0) Thanks(0)   Quote compostabile Quote  Post ReplyReply Direct Link To This Post Posted: 26/Mar/2012 at 21:21
come predefinito nel campo testo non gli piace...
sto provando con una combinazione di iif nella query però non ho ancora azzeccato quella giusta... ma come si dice... mille scimmie in mille anni...

ciau:-)

Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1215
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 26/Mar/2012 at 23:58
Un campo logico ha solo due stati, nel caso non si voglia selezionare uno di due valori basta non far agire il filtro su detto campo e quindi non è necessario l'asterisco.
In ogni caso se l'aspetto è quello della interfaccia si può impiegare un gruppo di opzioni che abbia
la presentazione di tre valori ("-1" , "0" e "*" che magari si traduce nel primo caso in True, nel secondo in False e nel terzo nel non impostare nulla) associando il relativo codice del filtro con una apposita funzione.
Per il gruppo di opzioni:
http://office.microsoft.com/it-it/access-help/creare-un-gruppo-di-opzioni-HP005188325.aspx
Willy
Back to Top
@Alex View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 09/Apr/2012
Location: Mantova
Status: Offline
Points: 819
Post Options Post Options   Thanks (0) Thanks(0)   Quote @Alex Quote  Post ReplyReply Direct Link To This Post Posted: 09/Apr/2012 at 22:42
Puoi scrivere una cosa simile

SELECT * FROM T1
WHERE [CampoX]=Forms!NomeForm!NomeCampo OR Forms!NomeForm!NomeCampo IS NUll;

Questo predicato è valido per tutti i Tipi di Campo(Date,Numeri,Testo...) ed evita il Casting dei dati che avverrebbe con l'uso del LIKE ...."*"

Per Casting dei dati si intende la Conversione del DataType al FieldType in questo caso, cosa evitabile.

Chiaramente applicabile anche con HAVING.


Edited by @Alex - 09/Apr/2012 at 22:45
Non SUPPORTO il CROSSPOST.
http://mirror.masterdrive.it/alessandrobaraldi/
Scaricare i DEMO modificando l'Estensione.
Back to Top
compostabile View Drop Down
Utente Senior
Utente Senior


Joined: 07/Mar/2011
Status: Offline
Points: 190
Post Options Post Options   Thanks (0) Thanks(0)   Quote compostabile Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 14:32
@Alex intanto grazie... ho provato ma non riesco a farlo funzionare...

considerando l'altro post ho eliminato i si/no ed ho utilizzato il gruppo di controllo opzioni.
ora mi trovo a dover filtrare secondo il valore "argomento" con questa query:

SELECT Tab_promemoria.ID_promemoria, Tab_promemoria.data_scad, Tab_promemoria.promemoria, Tab_promemoria.ripeti, Tab_promemoria.avviso, Tab_promemoria.fatto, (Weekday([data_scad]))-1 AS giorno, [data_scad]+[avviso] AS dataAvviso, IIf([avviso]>0 And [DiffD]=[Data_scad],"P: " & [data_scad] & " " & [promemoria],[promemoria]) AS Prome1, (Forms!maschera1!Testo30)+[avviso] AS DiffD, Tab_promemoria.argomento
FROM Tab_promemoria
WHERE (((Tab_promemoria.data_scad)=[Forms]![maschera1]![Testo30]) AND (((Weekday([data_scad]))-1)=1) AND ((Tab_promemoria.argomento)=[Forms]![maschera1]![argo])) OR (((Tab_promemoria.data_scad)=([Forms]![maschera1]![Testo30])+[avviso]) AND ((Tab_promemoria.argomento)=[Forms]![maschera1]![argo]));

dove "argo" è uguale ad [argomento] in tab_promemoria. fuziona se argo è valorizzato, io ho però bisogno di poter farsi che in apertura di maschera o quando lo decido io mi visualizzi i record ignorando il valore del campo Argomento.
non so se possa semplificare la vita ma visto che i valori di argomento saranno tutti maggiori uguali a 0 potrei anche dare come valore predefinito al campo "argo" il valore -1 o un'altro...

ciao

aggiornamento:
ho trovato una soluzione fantasiosa...
ho aggiunto alla tabella un ulteriore campo numerico con valore predefinito 1 [argomento1]
ho modificato la query di cui sopra aggiungendo il campo argomento1 e in OR con le due prededenti gli ho messo il criterio [Forms]![maschera1]![argo1].
la query diventa così:
FROM Tab_promemoria
WHERE (((Tab_promemoria.data_scad)=[Forms]![maschera1]![Testo30]) AND (((Weekday([data_scad]))-1)=1) AND ((Tab_promemoria.argomento)=[Forms]![maschera1]![argo])) OR (((Tab_promemoria.data_scad)=([Forms]![maschera1]![Testo30])+[avviso]) AND ((Tab_promemoria.argomento)=[Forms]![maschera1]![argo])) OR (((Tab_promemoria.data_scad)=[Forms]![maschera1]![Testo30]) AND (((Weekday([data_scad]))-1)=1) AND ((Tab_promemoria.argomento1)=[Forms]![maschera1]![argo1])) OR (((Tab_promemoria.data_scad)=([Forms]![maschera1]![Testo30])+[avviso]) AND ((Tab_promemoria.argomento1)=[Forms]![maschera1]![argo1]));

funzionare funziona...Embarrassed









Edited by compostabile - 28/Apr/2012 at 15:13
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,156 seconds.