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

QUERY CON CAMPO AD INCREMENTO (CONTATORE) (PER SUPER ESPERTI DI QUERY)

748 views
Skip to first unread message

Enrico Bonetto

unread,
Jun 22, 2004, 5:02:42 AM6/22/04
to
Devo mettere un campo numero che si incrementa nella creazione della query.
Esempio

Tabella 1
codice descrizione
a tubo d.23
b tubo d.25
c tubo d.26

Query
ID Codice Descrizione
1 a tubo d.23
2 b tubo d.25
3 c tubo d.26

C'è un sistema senza che io accodi i dati ad una tabella che ha un
contatore? Anche perchè comunque a livello di sql non so come fare se devo
creare una tabella temporanea.

Saluti e grazie


AlessandroD

unread,
Jun 22, 2004, 5:17:02 AM6/22/04
to
"Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
news:urdhveDW...@TK2MSFTNGP11.phx.gbl...
Potresti fare una funzione VBA che genera un nuovo progressivo ad ogni suo
richiamo. Per fare in modo che venga richiamata per ogni riga della tua
query gli devi passare un campo qualsiasi della tua query (magari quello
meno dispendioso in termini di risorse, che so, un campo numerico intero o
un booleano).
Devi anche stare attento, prima di eseguire la query a resettare la funzione
in modo che possa inziare il suo conteggio partendo da 1.
Se per esempio la funzione la scrivi così:

Public Function Cnt(ByVal vintDummy As Integer, Optional ByVal vfRst As
Boolean = False) As Long
Static lng As Long

If vfRst Then lng = -1

lng = lng + 1
Cnt = lng
End Function


Prima di aprire la tua query devi richiamare una volta la funzione in questo
modo:
Cnt 0,True
In modo che le chiamate successive, eseguite automaticamente mentre la tua
query girerà, generino il campo con il progressivo che parte da 1.
Esempio di query:

select Campo1, Campo2, Campo3, Cnt(CampoPiccolo) as Contatore
from Tabella

Ciao, Alessandro


Enrico Bonetto

unread,
Jun 22, 2004, 5:32:12 AM6/22/04
to
Grazie, ma come fare per lanciare il reset. Ho provato ad inserirlo in una
macro con esegui codice e non funziona.

"AlessandroD"
<alessandropuntodereanichioc...@libero.wf> ha
scritto nel messaggio news:e83SvmDW...@TK2MSFTNGP10.phx.gbl...

Enrico Bonetto

unread,
Jun 22, 2004, 5:42:11 AM6/22/04
to
Anzi ho provato ad inserire sul CNT(1000) e praticamente non mi esegue
l'incremento di record in record bensì li mette tutti uguali, praticamente
esegue un incremento di lancio in lancio della query.

Nella macro esegui codice ho inserito CNT(0,True) perchè non voleva farla
CNT 0, True è corretto ??

Saluti.

"AlessandroD"
<alessandropuntodereanichioc...@libero.wf> ha
scritto nel messaggio news:e83SvmDW...@TK2MSFTNGP10.phx.gbl...

AlessandroD

unread,
Jun 22, 2004, 5:45:24 AM6/22/04
to
"Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
news:eflYQvDW...@TK2MSFTNGP10.phx.gbl...

> Grazie, ma come fare per lanciare il reset. Ho provato ad inserirlo in una
> macro con esegui codice e non funziona.
>
Che hai scritto in esegui codice?
Hai deciso che campo passare alla funzione VBA?
Se l'hai tenuta come te l'ho passata nella macro puoi scrivere:
Cnt (0,True)

Ciao, Alessandro


AlessandroD

unread,
Jun 22, 2004, 5:49:29 AM6/22/04
to
"Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
news:eZD500DW...@tk2msftngp13.phx.gbl...

> Anzi ho provato ad inserire sul CNT(1000) e praticamente non mi esegue
> l'incremento di record in record bensì li mette tutti uguali, praticamente
> esegue un incremento di lancio in lancio della query.
>
Nella tua query devi richiamare la funzione passandogli un campo di una
delle tabelle che usi nella query.
Se per esempio hai un campo numerico che si chiama Pippo la devi chiamare
così:
CNT(Pippo)

> Nella macro esegui codice ho inserito CNT(0,True) perchè non voleva farla
> CNT 0, True è corretto ??
>

Si, va bene.
Ciao, Alessandro


giorgio rancati

unread,
Jun 22, 2004, 5:58:07 AM6/22/04
to

"Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
news:urdhveDW...@TK2MSFTNGP11.phx.gbl...

> Devo mettere un campo numero che si incrementa nella creazione della
query.
> Esempio
>
> Tabella 1
> codice descrizione
> a tubo d.23
> b tubo d.25
> c tubo d.26
>
> Query
> ID Codice Descrizione
> 1 a tubo d.23
> 2 b tubo d.25
> 3 c tubo d.26
>
> C'č un sistema senza che io accodi i dati ad una tabella che ha un
> contatore? Anche perchč comunque a livello di sql non so come fare se devo
> creare una tabella temporanea.
>

Ciao Enrico,
Prova Cosě
------------------
Select Dcount("1","Tabella1","Codice<='" & Codice & "'") AS Id,
Codice,
Descrizione
From Tabella1
-----------------

Ciao Giorgio


Enrico Bonetto

unread,
Jun 22, 2004, 9:14:22 AM6/22/04
to
SELECT DCount("1","Movimenti COSTI INDIRETTI da accodare","PROGR_RECORD<='"
& PROGR_RECORD & "'") AS Id, [Movimenti COSTI INDIRETTI da accodare].STATO,
[Movimenti COSTI INDIRETTI da accodare].ATTIVITA, [Movimenti COSTI INDIRETTI
da accodare].CAUSALE_SOSPENSIONE, [Movimenti COSTI INDIRETTI da
accodare].PROGR_RECORD, [Movimenti COSTI INDIRETTI da accodare].ANNO,
[Movimenti COSTI INDIRETTI da accodare].NUMERO_BOLLA, [Movimenti COSTI
INDIRETTI da accodare].TIPO, [Movimenti COSTI INDIRETTI da
accodare].CODICE_RISORSA, [Movimenti COSTI INDIRETTI da accodare].CENTRO,
[Movimenti COSTI INDIRETTI da accodare].DATA, [Movimenti COSTI INDIRETTI da
accodare].CAUSALE, [Movimenti COSTI INDIRETTI da
accodare].TEMPO_PREPARAZIONE, [Movimenti COSTI INDIRETTI da
accodare].TEMPO_LAVORAZIONE, [Movimenti COSTI INDIRETTI da
accodare].TEMPO_LAVORAZIONE_UOMO, [Movimenti COSTI INDIRETTI da
accodare].PEZZI_BUONI, [Movimenti COSTI INDIRETTI da accodare].SCARTI,
[Movimenti COSTI INDIRETTI da accodare].PEZZI_BUONI_RILAVORATI, [Movimenti
COSTI INDIRETTI da accodare].UM, [Movimenti COSTI INDIRETTI da
accodare].DATAMODIFICA, [Movimenti COSTI INDIRETTI da accodare].UTENTE
FROM [Movimenti COSTI INDIRETTI da accodare];

Mi da errore "Tipo di dati non corrispondenti all'espressione di criterio

"giorgio rancati" <giorgio_No_Sp...@tiscali.it> ha scritto nel
messaggio news:%23Oh4W9D...@TK2MSFTNGP09.phx.gbl...

Enrico Bonetto

unread,
Jun 22, 2004, 9:18:40 AM6/22/04
to
Grazie Giorgio,
ho provato a mettere un'altro campo al posto di progr_record che era un
longint con un tipo testo perň la query ora funziona perň mi mette tutti gli
ID al numero complessivo di record e non fa 1,2,3,4 bensě 260,260,260...

Ciao


"giorgio rancati" <giorgio_No_Sp...@tiscali.it> ha scritto nel
messaggio news:%23Oh4W9D...@TK2MSFTNGP09.phx.gbl...

giorgio rancati

unread,
Jun 22, 2004, 9:38:23 AM6/22/04
to

"Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
news:uv%234xtFW...@TK2MSFTNGP12.phx.gbl...

> "giorgio rancati" <giorgio_No_Sp...@tiscali.it> ha scritto nel
> messaggio news:%23Oh4W9D...@TK2MSFTNGP09.phx.gbl...
> >
> > "Enrico Bonetto" <enr...@tim.it> ha scritto nel messaggio
> > news:urdhveDW...@TK2MSFTNGP11.phx.gbl...
[CUT]

> Grazie Giorgio,
> ho provato a mettere un'altro campo al posto di progr_record che era un
> longint con un tipo testo perň la query ora funziona perň mi mette tutti
gli
> ID al numero complessivo di record e non fa 1,2,3,4 bensě 260,260,260...
>

Ciao,
se [PROGR_RECORD] non č un campo testo come specificato nel tuo post devi
togliere i singoli apici.
----------


DCount("1","Movimenti COSTI INDIRETTI da accodare","PROGR_RECORD<="&

PROGR_RECORD ) AS Id
----------

per renderti conto di come funziona provala con l'esempio che hai mostrato
nel primo post poi una volta capita la applichi alla tua query piů
complessa.

Ciao Giorgio


0 new messages