Newsgroup: it.comp.appl.access
Titolo: "varaibile globale" anno

Salve a tutti,
ho un problema con la gestione dei dati realativi all'anno. In pratica
in un database ci sono dati relativi a diversi anni. Vorrei creare una
sorta di "variabile globale", avevo pensato ad una tabella con un unico
record in cui inserisco l'anno relativo ai dati sui quali voglio
lavorare. In questo modo inserendo qui l'anno in tutte le operazioni
sui dati dovrebbero essere selezionati solo i record corrispondenti
all'anno indicato nella tabella.
In una query, fra gli altri criteri ho messo: AND
((Year([DataPrestazione]))=[ParametriAmbiente]![Anno]));
ma quando lancio la query o qualche maschera basata su questa query il
paramentro che ho inserito nella tabella non viene letto e mi compare
la solita finestra in cui mi chiede di inserire l'anno.
Come posso risolvere? 
Ciao a tutti e grazie!
Luigi

 wrote in message
news:1138041036.2...@g47g2000cwa.googlegroups.com

Se la maschera [ParametriAmbiente] è chiusa lo trovo ovvio...!
Visto che si tratta di una Query parametrica generica 
non capisco perchè poi ti blocchi al parametro prelevato da una
Form vincolandoti di fatto ad avere la form aperta.
Occorre capire chi e come deve passare quel parametro, in ogni caso
potrebbe essere una buona idea usare una Funzione pubblica dichiarata
in un Modulo e strutturata in modo tale da passare il detto parametro
prelevandolo dalla Form aperta indipendentemente da quale sia dopo
aver controllato l'esistenza dello stesso.
Un esempio molto semplice:
Public Function retParametro() as Integer
    retParametro=Screen.ActiveForm!CampoAnno
End sub
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ((Year([DataPrestazione]))=[ParametriAmbiente]![Anno]));
le queries che usi devono essere tutte in join con la tabella 
"ParametriAmbiente"
i.e.
select tab.* from tab,parametriambiente
where tab.attribanno = parametriambiente.anno
--
a.cara

Avevo già provato a fare questa cosa ed l'sql che ottengo è grosso
modo il seguente:
SELECT Ricette.tuttiicampi..., ParametriAmbiente.Anno
FROM Ricette, ParametriAmbiente
WHERE
(((Month([DataPrestazione]))=[Forms]![MascheraPerMesi]![Cornice6]) AND
((Year([DataPrestazione]))=ParametriAmbiente.Anno))
questo perchè nella maschera c'è una cornice in cui ci sono 12
bottoni ognuno corrispondente ad un mese...
ma quando lancio la query ottengo il messaggio di errore: tipo non
corrispondente nell'espressione. 
Dove sbaglio!
Ciao e grazie!
Luigi


Puo' darsi che Parametriambiente.anno non sia di tipo numerico o 
cornice6 sia null
--
a.acra

In effetti il campo anno l'ho lasciato in formato testo poichè non
pensavo servisse numerico.
Appena torno a casa provo e ti faccio sapere!
Ciao e grazie,
Luigi

 
puoi sempre scrivere cosi' (bruttoooooo) Parametri.anno = "'" & 
year(data) & "'"
--
a.cara

 a.cara
Mi pareva di averlo suggerito all'inizio....!
Ce ne vuole per farvelo capire.!!!!
;-)


 Ce ne vuole per farvelo capire.!!!!
Mi consenta di dissentire "Lei" aveva suggerito questo ;<)
"
Se la maschera [ParametriAmbiente] è chiusa lo trovo ovvio...!
Visto che si tratta di una Query parametrica generica
non capisco perchè poi ti blocchi al parametro prelevato da una
Form vincolandoti di fatto ad avere la form aperta.
Occorre capire chi e come deve passare quel parametro, in ogni caso
potrebbe essere una buona idea usare una Funzione pubblica dichiarata
in un Modulo e strutturata in modo tale da passare il detto parametro
prelevandolo dalla Form aperta indipendentemente da quale sia dopo
aver controllato l'esistenza dello stesso.
Un esempio molto semplice:
Public Function retParametro() as Integer
     retParametro=Screen.ActiveForm!CampoAnno
End sub
"
Non mi sembra la stessa cosa. "Noi" non si e mai parlato di form 
ParametriAmbiente  e' una tabella monoriga / monocampo
Ciao Alex
--
a.cara

 ParametriAmbiente  e' una tabella monoriga / monocampo
OPS...!
Ho sbagliato Post...!!!!
O meglio ho fatto un MIX di 2.
In ogni caso le consento, basta che non voglia prolungare anche di 15gg
tutto sto ambaradan....!


Era proprio come dici!
Ho impostato a numerico il campo che contiene l'anno e funziona tutto
alla grande!
Ciao e grazie a tutti per l'aiuto!
Luigi

 ha scritto nel messaggio news:1138111932.2...@f14g2000cwb.googlegroups.com...

Ciao,
potresti anche scrivere (in un modulo globale) una funzione che restituisca l'anno leggendolo dalla tabella dei parametri.
Alla prima chiamata (nella sessione di lavoro) leggi dalla tabella il valore anno e lo registri in una variabile statica in modo che
alle successive chiamate non è più necessario rileggere il valore tabella.
Così facendo puoi evitare di dover mettere in ogni query un join alla tabella dei parametri ambiente.
L'unico inconveniente è che quando cambi il parametro devi fare in modo che la funzione legga il nuovo valore dalla tabella.
Ciao,
Mat.


in finale
1) si deve scrivere la funzione (non globale) di lettura della tabella e 
inizializzazione della variabile pubblica
2) si deve scrivere la funzione pubblica che recuperi la variabile 
contenente l'anno
2) deve mettere il richiamo alla funzione in ogni query
3) se cambia anno deve rientrare e riuscire da access a meno di gestire 
l'evento di cambio parametro
beh Okusai diceva che possono esserci 100 vedute diverse del momte Fuji 
e tutte vere
--
a.cara

 a.cara