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

Query e numero di record

437 views
Skip to first unread message

Filippo Vinciguerra

unread,
Jan 16, 2002, 6:33:50 AM1/16/02
to
Ciao a tutti
Domanda facile: in una query c'è un modo per rilevare il numero progressivo
di record selezionati?
Intendo non i record della tabella di origine ma soltanto quelli 'presi'
dalla query.
Esiste in altre parole un contatore che possa essere inserito nella query,
qualcosa come Contatore AS Espr1, in un campo della query?
Grazie
Filippo

Alessandro Romeo

unread,
Jan 16, 2002, 6:38:19 AM1/16/02
to

"Filippo Vinciguerra" <ma...@studiovinciguerra.it> ha scritto nel messaggio
news:a23oa6$ke3$1...@news.panservice.it...
Puoi provare ad utilizzare la funzione count(nomecampo) in modo che ti
ritorni il numero di record selezionati.
Select count(primaryKey) as contarecord from nometabella

Ciao Alessandro


Filippo Vinciguerra

unread,
Jan 16, 2002, 6:52:10 AM1/16/02
to

"Alessandro Romeo" <alessand...@hotmail.com> ha scritto nel messaggio
news:LCd18.33708$aD.12...@twister2.libero.it...
Grazie ma non è quello che mi serve.
Non ho bisogno di sapere quanti record ho selezionato ma mi serve un campo
della query con i numeri progressivi da 1 (per il primo record) al totale
dei record
Come si fa?
Filippo


Antonio Biso

unread,
Jan 16, 2002, 7:14:36 AM1/16/02
to
Filippo Vinciguerra <ma...@studiovinciguerra.it> wrote in message
a23oa6$ke3$1...@news.panservice.it...

A dicembre scrissi una soluzione per questo problema...

Antonio


Alessandro Romeo

unread,
Jan 16, 2002, 8:25:36 AM1/16/02
to
>>cut<

> > Puoi provare ad utilizzare la funzione count(nomecampo) in modo che ti
> > ritorni il numero di record selezionati.
> > Select count(primaryKey) as contarecord from nometabella
> >
> > Ciao Alessandro
> >
> Grazie ma non è quello che mi serve.
> Non ho bisogno di sapere quanti record ho selezionato ma mi serve un campo
> della query con i numeri progressivi da 1 (per il primo record) al totale
> dei record
> Come si fa?
> Filippo
>
>
Se mi dici se devono comparire in maschera od in tabella cerco di capire se
c'e' qualche possibilita' (al momento non mi viene in mente nulla).
Ciao Alessandro


Karl Donaubauer

unread,
Jan 16, 2002, 8:45:12 AM1/16/02
to
Filippo Vinciguerra ha scritto:

Puoi usare SQL per farti un campo contatore nella query. p.e.

Contatore: (Select Count (*) FROM [Tabella] as Temp WHERE [Temp].[ID]
< [Tabella].[ID])+1

--
HTH
Karl
*********
Access-FAQ (tedesco): http://www.donkarl.com


Alessandro Romeo

unread,
Jan 16, 2002, 8:45:39 AM1/16/02
to
>>CUT<

> > Puoi provare ad utilizzare la funzione count(nomecampo) in modo che ti
> > ritorni il numero di record selezionati.
> > Select count(primaryKey) as contarecord from nometabella
> >
> > Ciao Alessandro
> >
> Grazie ma non è quello che mi serve.
> Non ho bisogno di sapere quanti record ho selezionato ma mi serve un campo
> della query con i numeri progressivi da 1 (per il primo record) al totale
> dei record
> Come si fa?
> Filippo
>
>
Una soluzione appena testata puo' essere qs.
1.Crei una tabella TEMP la cui struttura e' identica ai campi che estrai
dalla query piu' un campo IdSel contatore.
2.La tua query la fai passare da query di selezione a query di accodamento
sulla tabella TEMP.
3.Avrai cosi' una tabella con il risultato della query e con un contatore
per ogni record.
Ricorda pero' di pulire la tabella ogni volta prima dell'utilizzo altrimenti
ti accoda tutte le volte nuovi record.
Qs. metodo funziona non so quanto sia "pulito" ma riesci ad avere cio' che
ti serve


Karl Donaubauer

unread,
Jan 16, 2002, 8:37:23 AM1/16/02
to
Filippo Vinciguerra ha scritto:

No. Non esiste. Ma puoi usare SQL per farti un contatore. p.e.

Filippo Vinciguerra

unread,
Jan 16, 2002, 10:46:14 AM1/16/02
to

"Antonio Biso" <ch...@etruria.net> ha scritto nel messaggio
news:M8e18.33828$aD.12...@twister2.libero.it...
E come si fa a ritrovare quello che scrivesti a dicembre?

Filippo Vinciguerra

unread,
Jan 16, 2002, 11:12:45 AM1/16/02
to

"Alessandro Romeo" <alessand...@hotmail.com> ha scritto nel messaggio
news:7uf18.34153$aD.12...@twister2.libero.it...

> >>CUT<
> > > Puoi provare ad utilizzare la funzione count(nomecampo) in modo che ti
> > > ritorni il numero di record selezionati.
> > > Select count(primaryKey) as contarecord from nometabella
> > >
> > > Ciao Alessandro
> > >
> > Grazie ma non č quello che mi serve.

> > Non ho bisogno di sapere quanti record ho selezionato ma mi serve un
campo
> > della query con i numeri progressivi da 1 (per il primo record) al
totale
> > dei record
> > Come si fa?
> > Filippo
> >
> >
> Una soluzione appena testata puo' essere qs.
> 1.Crei una tabella TEMP la cui struttura e' identica ai campi che estrai
> dalla query piu' un campo IdSel contatore.
> 2.La tua query la fai passare da query di selezione a query di accodamento
> sulla tabella TEMP.
> 3.Avrai cosi' una tabella con il risultato della query e con un contatore
> per ogni record.
> Ricorda pero' di pulire la tabella ogni volta prima dell'utilizzo
altrimenti
> ti accoda tutte le volte nuovi record.
> Qs. metodo funziona non so quanto sia "pulito" ma riesci ad avere cio' che
> ti serve

Per funzionare funziona, perň con queste controindicazioni:
- due messaggi che chiedono l'OK per proseguire (e io preferirei di no)
- la necessitŕ di ripulire la tabella temporanea (e come si fa?)
- il fatto che la volta successiva il contatore non riparte da 1 ma dal
numero successivo all'ultimo contatore della volta precedente (e questo non
so proprio come si fa ad evitarlo)
Comunque grazie e speriamo di trovare qualcosa di meglio
Ciao Filippo

Filippo Vinciguerra

unread,
Jan 16, 2002, 11:13:56 AM1/16/02
to

"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:a2401o$uipd0$1...@ID-46617.news.dfncis.de...
La soluzione di Karl prevede l'uso di ANSI SQL e non di JET SQL.
A me pare che access non accetti la variabile Contatore seguita dai due
punti
Come si fa?
Grazie
Filippo

Karl Donaubauer

unread,
Jan 16, 2002, 11:49:00 AM1/16/02
to
Filippo Vinciguerra ha scritto:
> Karl Donaubauer ha scritto:...

> > Puoi usare SQL per farti un campo contatore nella query. p.e.
> >
> > Contatore: (Select Count (*) FROM [Tabella] as Temp WHERE [Temp].[ID]
> > < [Tabella].[ID])+1
> >
> La soluzione di Karl prevede l'uso di ANSI SQL e non di JET SQL.

No. Va bene con Jet.

> A me pare che access non accetti la variabile Contatore seguita dai due
> punti
> Come si fa?

Non č una variabile ma puoi inserire tutta l'espressione come campo
calcolato in una query. Vuol dire "Contatore" č l'Alias per una sottoquery.
L'espressione SQL completo di una semplice query č p.e.

SELECT ID, Pippo, Foo, (Select Count (*) FROM Tabella AS Temp
WHERE Temp.ID<Tabella.ID)+1 AS Contatore
FROM Tabella

ZAIM

unread,
Jan 16, 2002, 12:24:36 PM1/16/02
to
> Per funzionare funziona, però con queste controindicazioni:

> - due messaggi che chiedono l'OK per proseguire (e io preferirei di no)
basta settare warning su false
> - la necessità di ripulire la tabella temporanea (e come si fa?)
su chiusura attivi una query di eliminazione

> - il fatto che la volta successiva il contatore non riparte da 1 ma dal
> numero successivo all'ultimo contatore della volta precedente (e questo
non
> so proprio come si fa ad evitarlo)
devi procedere con un bel compatta e ripristina database dopo aver
cancellato tutti i record.

Antonio Biso

unread,
Jan 16, 2002, 6:16:27 PM1/16/02
to
Filippo Vinciguerra <ma...@studiovinciguerra.it> wrote in message
a2473f$nt0$1...@news.panservice.it...

>
> "Antonio Biso" <ch...@etruria.net> ha scritto nel messaggio
> news:M8e18.33828$aD.12...@twister2.libero.it...
> > Filippo Vinciguerra <ma...@studiovinciguerra.it> wrote in message
> > a23oa6$ke3$1...@news.panservice.it...
> > > Ciao a tutti
> > > Domanda facile: in una query c'č un modo per rilevare il numero

> > progressivo
> > > di record selezionati?
> > > Intendo non i record della tabella di origine ma soltanto quelli
'presi'
> > > dalla query.
> > > Esiste in altre parole un contatore che possa essere inserito nella
> query,
> > > qualcosa come Contatore AS Espr1, in un campo della query?
> >
> > A dicembre scrissi una soluzione per questo problema...
> >
> > Antonio
> >
> >
> E come si fa a ritrovare quello che scrivesti a dicembre?

Sul sito comune dovrebbero esserci i messaggi arretrati. Oppure con
www.deja.com

Comunque, tieni...

Tabella di appoggio "Tab", con un campo long "Num" .
Funzione Cont (x as variant) as long
dim rst as recordset
dim app as long

set rst = currentdb.openrecordset("tab")
rst.movefirst
app = rst.fields("Num")
rst.edit
rst.fields("Num") = rst.fields("Num") + 1
rst.update
set rst = nothing
Cont = app
End function

Nella query metterai un campo calcolato fatto cosě
Contatore: Cont([campoqualunque])
dove campoqualunque č un qualunque campo della tabella dati.
Prima di lanciare la query devi riportare il valore del campo Num a 1

Antonio


Antonio


Filippo Vinciguerra

unread,
Jan 17, 2002, 10:19:47 AM1/17/02
to
----- Original Message -----
From: Karl Donaubauer
Newsgroups: it.comp.appl.access
Sent: Wednesday, January 16, 2002 5:49 PM
Subject: Re: Query e numero di record


Filippo Vinciguerra ha scritto:
> Karl Donaubauer ha scritto:...
> > Puoi usare SQL per farti un campo contatore nella query. p.e.
> >
> > Contatore: (Select Count (*) FROM [Tabella] as Temp WHERE [Temp].[ID]
> > < [Tabella].[ID])+1
> >
> La soluzione di Karl prevede l'uso di ANSI SQL e non di JET SQL.

No. Va bene con Jet.

> A me pare che access non accetti la variabile Contatore seguita dai due
> punti
> Come si fa?

Non è una variabile ma puoi inserire tutta l'espressione come campo
calcolato in una query. Vuol dire "Contatore" è l'Alias per una sottoquery.
L'espressione SQL completo di una semplice query è p.e.

SELECT ID, Pippo, Foo, (Select Count (*) FROM Tabella AS Temp
WHERE Temp.ID<Tabella.ID)+1 AS Contatore
FROM Tabella

--
HTH
Karl
*********
Access-FAQ (tedesco): http://www.donkarl.com


Con questo sistema funziona ma non come serve a me.
Mi spiego: Contatore contiene il valore di Tabella.ID reinizializzato a 1
Il mio problema è invece quello di avere in una query di ordinamento un
contatore che parte da 1 DOPO che i record sono stati ordinati
Io avevo usato una sottoquery per ordinare e poi l'espressione SQL
Però il Contatore ripete l'ID della tabella originale prima
dell'ordinamento.
In pratica devo riuscire a:
ordinare i record di una tabella con una query
avere un campo della query con numerazione progressiva da 1 a partire la
primo record ordinato
come si fa e quante query ci vogliono?
Grazie, Filippo

Alessandro Romeo

unread,
Jan 17, 2002, 10:23:54 AM1/17/02
to

"Filippo Vinciguerra" <ma...@studiovinciguerra.it> ha scritto nel messaggio
news:a26ptp$chu$1...@news.panservice.it...
Provando ad aggiungere alla query

>SELECT ID, Pippo, Foo, (Select Count (*) FROM Tabella AS Temp
> WHERE Temp.ID<Tabella.ID)+1 AS Contatore
> FROM Tabella

ORDER BY Pippo non funziona come serve a te?
Non so se e' corretto ma e' una idea

Ciao Alessandro

Alessandro

unread,
Jan 17, 2002, 10:44:34 AM1/17/02
to
"Filippo Vinciguerra" <ma...@studiovinciguerra.it> wrote in message
news:a23oa6$ke3$1...@news.panservice.it...

Il sistema c'è, bisogna vedere come lo vuoi utilizzare.
Se è solo per la visualizzazione in Form utilizza la tecnica
che viene abitualmente usata per la realizzazione della formattazione
condizionale di cui trovi traccia sul SC per il conteggio del
numero di RECORD e l'assegnazione del Progressivo.
Oppure sul sito MVPS.Org c'è un indicazione di come ricrearsi un
campo autoincrementante nelle QRY....!!

Alessandro. (@ALex)

--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Karl Donaubauer

unread,
Jan 17, 2002, 11:50:58 AM1/17/02
to
Filippo Vinciguerra ha scritto:
> > Karl Donaubauer ha scritto:...
> SELECT ID, Pippo, Foo, (Select Count (*) FROM Tabella AS Temp
> WHERE Temp.ID<Tabella.ID)+1 AS Contatore
> FROM Tabella
> ...

> Con questo sistema funziona ma non come serve a me.
> Mi spiego: Contatore contiene il valore di Tabella.ID reinizializzato a 1
> Il mio problema è invece quello di avere in una query di ordinamento un
> contatore che parte da 1 DOPO che i record sono stati ordinati
> Io avevo usato una sottoquery per ordinare e poi l'espressione SQL
> Però il Contatore ripete l'ID della tabella originale prima
> dell'ordinamento.
> In pratica devo riuscire a:
> ordinare i record di una tabella con una query
> avere un campo della query con numerazione progressiva da 1 a partire la
> primo record ordinato
> come si fa e quante query ci vogliono?

Non hai scritto con quale campo vuoi fare l'ordinamento.
Se p.e. non è ID ma Pippo lo statement per la sottoquery è


(Select Count (*) FROM [Tabella] AS Temp

WHERE [Temp].[Pippo] < [Tabella].[Pippo])+1

L'anno scorso ho scritto un articolo per il KB di MS Germania sul tema:
http://www.microsoft.com/IntlKB/Germany/Support/kb/D45/D45183.htm
Certo è tedesco ;-) ma ci sono anche esempi in SQL e per di più
nel articolo ce un link a
http://www.microsoft.com/downloads/release.asp?releaseid=29437
Su questo sito trovi un download "D41757.exe - 40 Kb" che è un
piccolo mdb di A97 con vari esempi.

Esempi in inglese di Steve Arbaugh trovo sul sito attac:
http://ourworld.compuserve.com/homepages/attac-cg/AQryTip.htm

Esempi in italiano... beh, forse una volta scrivo un articolo per
il sito commune se sia interessante per più gente.

Filippo Vinciguerra

unread,
Jan 17, 2002, 1:36:51 PM1/17/02
to

"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:a26va3$va8oa$1...@ID-46617.news.dfncis.de...

> Filippo Vinciguerra ha scritto:
> > > Karl Donaubauer ha scritto:...
> > SELECT ID, Pippo, Foo, (Select Count (*) FROM Tabella AS Temp
> > WHERE Temp.ID<Tabella.ID)+1 AS Contatore
> > FROM Tabella
> > ...
> > Con questo sistema funziona ma non come serve a me.
> > Mi spiego: Contatore contiene il valore di Tabella.ID reinizializzato a
1
> > Il mio problema è invece quello di avere in una query di ordinamento un
> > contatore che parte da 1 DOPO che i record sono stati ordinati
> > Io avevo usato una sottoquery per ordinare e poi l'espressione SQL
> > Però il Contatore ripete l'ID della tabella originale prima
> > dell'ordinamento.
> > In pratica devo riuscire a:
> > ordinare i record di una tabella con una query
> > avere un campo della query con numerazione progressiva da 1 a partire la
> > primo record ordinato
> > come si fa e quante query ci vogliono?
>
> Non hai scritto con quale campo vuoi fare l'ordinamento.
> Se p.e. non è ID ma Pippo lo statement per la sottoquery è
> (Select Count (*) FROM [Tabella] AS Temp
> WHERE [Temp].[Pippo] < [Tabella].[Pippo])+1


Perfetto, FUNZIONA, grazie
Così ho con una sola query, i record ordinati e numerati. Grazie ancora
Ciao Filippo


0 new messages