Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

modificare il campo "criteri" in una query

591 views
Skip to first unread message

Lucky

unread,
Sep 13, 2013, 10:19:06 AM9/13/13
to
Salve a tutti.
Per cortesia, avrei bisogno di un aiutino.........

Nella query denominata "Tabella" ho un campo "data" con il valore
predefinito Criteri: "Between #01/01/2013# And #31/12/2013#".
Come posso cambiare il contenuto in "Between #01/01/2014# And #31/12/2014#"
per mezzo di un codice vba ?

Grazie.
Saluti
Lucky


Karl Donaubauer

unread,
Sep 13, 2013, 10:52:41 AM9/13/13
to
Lucky wrote:
> ...
> Nella query denominata "Tabella"

Che nome azzeccato per una query!

> ho un campo "data" con il valore
> predefinito Criteri: "Between #01/01/2013# And #31/12/2013#".
> Come posso cambiare il contenuto in "Between #01/01/2014# And
> #31/12/2014#" per mezzo di un codice vba ?

Se nella query non c'è altra presenza di "2013":

Dim db As DAO.Database
Dim strSQL As String

Set db = CurrentDb

strSQL = db.QueryDefs("Tabella").SQL
strSQL = Replace(strSQL, "2013", "2014")
db.QueryDefs("Tabella").SQL = strSQL


o la versione breve e sporca:

CurrentDb.QueryDefs("Tabella").SQL = _
Replace(CurrentDb.QueryDefs("Tabella").SQL, "2013", "2014")

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it


Lucky

unread,
Sep 14, 2013, 3:56:34 AM9/14/13
to
Grazie mille Karl
Consigli sempre utilissimi

Avrei il seguente quesito da porti:
quale codice vba devo usare per cambiare del testo,
ad esempio "/2013" in "/2014" , all'interno di tutto il codice del progetto
del mio database ?

Saluti
Lucky


"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:b9gn5l...@mid.individual.net...
> Lucky wrote:
>> ...
>> Nella query denominata "Tabella"
>
> Che nome azzeccato per una query!
>
>> ho un campo "data" con il valore
>> predefinito Criteri: "Between #01/01/2013# And #31/12/2013#".
>> Come posso cambiare il contenuto in "Between #01/01/2014# And
>> #31/12/2014#" per mezzo di un codice vba ?
>
> Se nella query non c'� altra presenza di "2013":

Karl Donaubauer

unread,
Sep 16, 2013, 6:14:39 AM9/16/13
to
Lucky wrote:
>
> Avrei il seguente quesito da porti:
> quale codice vba devo usare per cambiare del testo,
> ad esempio "/2013" in "/2014" , all'interno di tutto il codice del
> progetto del mio database ?

Sarebbe piů semplice con <Ctrl> + <H>.
Perň questo tipo di compito suggerisce che abbia un problema
sistematico nell'applicazione. Se sempre devi cambiare l'anno nelle
query e persino nel codice vuol dire che non devi usare l'anno fisso
ma una variabile o espressione come:

Year(Date())
o
Year(Date())+1

Se le esigenze siano piů complesse puoi usare un'espressione
piů complessa. Un altra via e una funzione di VBA che ritorna
l'anno e alla quale ti riferisci nelle query e nel codice. Cosě c'č
un solo posto da regolare l'anno (amministrativo ecc.).

Lucky

unread,
Sep 16, 2013, 6:45:59 AM9/16/13
to
Scusami Karl, ma sono stato poco chiaro.
Mi trovo nella maschera principale del db e, tramite un pulsante di comando,
vorrei spostarmi all'interno del codice vba del progetto ed apportare
modifiche (a tutte le routine presenti) sia ad alcune parti di testo (p.e.
parola "pippo"), sia alle date presenti (p.e. 01/01/20xx oppure 31/12/20xx).
Quale codice devo inserire nella routine del pulsante di comando della
maschera principale ?
Grazie mille Karl.
Saluti
Lucky


"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:b9o40g...@mid.individual.net...
> Lucky wrote:
>>
>> Avrei il seguente quesito da porti:
>> quale codice vba devo usare per cambiare del testo,
>> ad esempio "/2013" in "/2014" , all'interno di tutto il codice del
>> progetto del mio database ?
>
> Sarebbe più semplice con <Ctrl> + <H>.
> Però questo tipo di compito suggerisce che abbia un problema
> sistematico nell'applicazione. Se sempre devi cambiare l'anno nelle
> query e persino nel codice vuol dire che non devi usare l'anno fisso
> ma una variabile o espressione come:
>
> Year(Date())
> o
> Year(Date())+1
>
> Se le esigenze siano più complesse puoi usare un'espressione
> più complessa. Un altra via e una funzione di VBA che ritorna
> l'anno e alla quale ti riferisci nelle query e nel codice. Così c'è

Karl Donaubauer

unread,
Sep 16, 2013, 7:03:21 AM9/16/13
to
Lucky wrote:
> "Karl Donaubauer ha scritto
>>> ...
>>> Avrei il seguente quesito da porti:
>>> quale codice vba devo usare per cambiare del testo,
>>> ad esempio "/2013" in "/2014" , all'interno di tutto il codice del
>>> progetto del mio database ?
>>
>> Sarebbe pi� semplice con <Ctrl> + <H>.
>> Per� questo tipo di compito suggerisce che abbia un problema
>> sistematico nell'applicazione. Se sempre devi cambiare l'anno nelle
>> query e persino nel codice vuol dire che non devi usare l'anno fisso
>> ma una variabile o espressione come:
>>
>> Year(Date())
>> o
>> Year(Date())+1
>>
>> Se le esigenze siano pi� complesse puoi usare un'espressione
>> pi� complessa. Un altra via e una funzione di VBA che ritorna
>> l'anno e alla quale ti riferisci nelle query e nel codice. Cos� c'�
>> un solo posto da regolare l'anno (amministrativo ecc.).
> ...
> Scusami Karl, ma sono stato poco chiaro.
> Mi trovo nella maschera principale del db e, tramite un pulsante di
> comando, vorrei spostarmi all'interno del codice vba del progetto ed
> apportare modifiche (a tutte le routine presenti) sia ad alcune parti
> di testo (p.e. parola "pippo"), sia alle date presenti (p.e.
> 01/01/20xx oppure 31/12/20xx). Quale codice devo inserire nella
> routine del pulsante di comando della maschera principale ?

Ti ho risposto esattamente a questa esigenza:

Non si fa! Scegli un sistema diverso per gestire variabili.

Ovvero se si tratta di un lavoro che succede una sola volta
nella vita, usa il dialogo "Sostituisci" dell'editore VBA.

Ci sono metodi in VBA come Find e ReplaceLine (vedi <F1>)
che per� non si usa per sostituire dati variabili ma invece p.e.
per un tool che pulisce codice.

Lucky

unread,
Sep 16, 2013, 7:49:57 AM9/16/13
to
ok ho capito perfettamente.
Grazie mille Karl.
Saluti
Lucky


"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:b9o6rq...@mid.individual.net...

Lucky

unread,
Sep 16, 2013, 8:01:59 AM9/16/13
to
Nel caso scegliessi di usare una funzione, il codice corretto potrebbe
essere questo ?
________________________________________
Public Function anno (param As Integer) As Integer
anno = 2014
End Function
________________________________________

e quindi nelle routine dovrei inseire le date inquesto modo ?
01/01/anno

(Non ti arrabbiare se ho scritto delle cavolate !!)

Saluti
Lucky


"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:b9o40g...@mid.individual.net...
> Lucky wrote:
>>
Se le esigenze siano pi� complesse puoi usare un'espressione
> pi� complessa. Un altra via e una funzione di VBA che ritorna
> l'anno e alla quale ti riferisci nelle query e nel codice. Cos� c'�

Karl Donaubauer

unread,
Sep 16, 2013, 11:54:16 AM9/16/13
to
Lucky wrote:
> Nel caso scegliessi di usare una funzione, il codice corretto potrebbe
> essere questo ?
> ________________________________________
> Public Function anno (param As Integer) As Integer
> anno = 2014
> End Function
> ________________________________________
>
> e quindi nelle routine dovrei inseire le date inquesto modo ?
> 01/01/anno
> ...

A cosa serve "param As Integer" se non lo usi?

Ci sono diversi modi, p.e.

CDate("01/01/" & anno)

o molto meglio perch� pi� sicuro che non ci sono mai problemi
con la posizione del giorno e mese:

DateSerial(anno, 1, 1)

Sarebbe anche meglio di usare un prefisso nel nome della funzione, p.e.

fctAnno

Lucky

unread,
Sep 17, 2013, 3:26:43 AM9/17/13
to
Grazie mille Karl,
ho utilizzato la funzione DateSerial ed č tutto ok.
Sei come al solito, utile ed indispensabile !!!
Salutissimi
Lucky

"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:b9ont9...@mid.individual.net...
> Lucky wrote:
>> Nel caso scegliessi di usare una funzione, il codice corretto potrebbe
>> essere questo ?
>> ________________________________________
>> Public Function anno (param As Integer) As Integer
>> anno = 2014
>> End Function
>> ________________________________________
>>
>> e quindi nelle routine dovrei inseire le date inquesto modo ?
>> 01/01/anno
>> ...
>
> A cosa serve "param As Integer" se non lo usi?
>
> Ci sono diversi modi, p.e.
>
> CDate("01/01/" & anno)
>
> o molto meglio perché piů sicuro che non ci sono mai problemi
0 new messages