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

Numero progressivo in SQL via ADO

156 views
Skip to first unread message

MT

unread,
Jan 25, 2002, 1:35:40 PM1/25/02
to
Come creo un campo progressivo in una query sql? Accedo all'.mdb via ADO.
Ringrazio chi risponde.

Mark


Alessandro

unread,
Jan 25, 2002, 2:44:38 PM1/25/02
to
"MT" <mtamma...@tin.it> wrote in message
news:0Ah48.24667$Rv3.8...@news2.tin.it...

> Come creo un campo progressivo in una query sql? Accedo all'.mdb via ADO.
> Ringrazio chi risponde.
>
> Mark

Ora la QRY SQL potrebbe essere del Tipo:
"SELECT Max(NumProgressivo) AS MaxDiProgressivo FROM TuaTbl"

Aperto il Recordset con ADO se il Recordset non è Vuoto ti da
il Max dell'attuale, ora basta leggerlo e sommare 1:
Max=rs.fields(0)+1


Alessandro.


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

Luciano (DOC)

unread,
Jan 25, 2002, 3:42:06 PM1/25/02
to

Alessandro ha scritto nel messaggio

>"SELECT Max(NumProgressivo) AS MaxDiProgressivo FROM TuaTbl"
>
>Aperto il Recordset con ADO se il Recordset non è Vuoto ti da
>il Max dell'attuale, ora basta leggerlo e sommare 1:
>Max=rs.fields(0)+1


Mi sembtra che lui chiedesse qualcosa di diverso: inserire un progressivo al
volo in una query.
Se e' cosi', sul sito comune c'e' uan funzione che lo fa, ma e' molto legata
ad Access. Se si riuscisse a svincolarla sarebbe molto interessante ed
usabile con ADO o con qualsiasi altra cosa.
Se qualcuno ha delle idee si faccia avanti!:-)
Saluti.

Luciano


Filippo

unread,
Jan 25, 2002, 5:20:42 PM1/25/02
to

"MT" <mtamma...@tin.it> ha scritto nel messaggio
news:0Ah48.24667$Rv3.8...@news2.tin.it...

> Come creo un campo progressivo in una query sql? Accedo all'.mdb via ADO.
> Ringrazio chi risponde.
>
> Mark
>
>
Io avevo un problema simile, Karl Donbauer mi ha suggerito questo:
Select (i campi che interessano) , (Select Count(*) from TUATABELLA as temp
where TUATABELLA.CampoCheMiInteressa<temp.CampoCheMiInteressa) +1 AS
Contatore
From TUATABELLA
ORDER BY TUATABELLA.CampoCheMiInteressa

e funziona.

Nel mio caso volevo creare il campo progressivo dopo aver ordinato i record
in base a CampoCheMiInteressa, ma credo che si possa togliere quella parte
di codice.

Ripeto, funziona ma non ho capito come. Cioč la funzione Count(*) conta i
record in temp (credo) ma poi che succede? Perché esiste un campo
temp.CampoCheMiInteressa?
Cioč temp ha memorizzato tutto il recordset?
Boh, chi me la spiega?
Spero di essere stato utile
Filippo

Karl Donaubauer

unread,
Jan 26, 2002, 12:47:31 PM1/26/02
to
Filippo ha scitto:
> "MT ha scritto:

> > Come creo un campo progressivo in una query sql? Accedo all'.mdb via
ADO.
> >
> Io avevo un problema simile, Karl Donbauer

Nononono "Donaubauer" che vuol dire Contadino del Danubio.

> mi ha suggerito questo:
> Select (i campi che interessano) , (Select Count(*) from TUATABELLA as
temp
> where TUATABELLA.CampoCheMiInteressa<temp.CampoCheMiInteressa) +1 AS
> Contatore

Hai sbagliato un po. Debb'essere:
where temp.CampoCheMiInteressa<TUATABELLA.CampoCheMiInteressa

> From TUATABELLA
> ORDER BY TUATABELLA.CampoCheMiInteressa
>
> e funziona.
>
> Nel mio caso volevo creare il campo progressivo dopo aver ordinato i
record
> in base a CampoCheMiInteressa, ma credo che si possa togliere quella parte
> di codice.
>
> Ripeto, funziona ma non ho capito come. Cioč la funzione Count(*) conta i
> record in temp (credo) ma poi che succede? Perché esiste un campo
> temp.CampoCheMiInteressa?
> Cioč temp ha memorizzato tutto il recordset?
> Boh, chi me la spiega?

Ok, provo.

SELECT (i campi che interessano)
FROM Tuatabella
ORDER BY Tuatabella.CampoCheMiInteressa

Questo č la parte normale della query SELECT con un ordinamento.
Niente speciale. Vediamo l'altra parte:

(SELECT COUNT (*) FROM TuaTabella AS Temp
WHERE Temp.CampoCheMiInteressa<Tuatabella.CampoCheMiInteressa) +1
AS Contatore

Dove

(SELECT ...qualcosa...) +1 AS Contatore

crea un campo calcolato "Contatore" nella query.
Il contenuto di questo campo calcolato per la maggior parte č la sottoquery:

SELECT COUNT (*) FROM TuaTabella AS Temp
WHERE Temp.CampoCheMiInteressa<Tuatabella.CampoCheMiInteressa

La sottoquery usa una tabella logica (derived table, virtual recordset - non
lo so in italiano) "Temp" che per funzionare bene debb' avere lo stesso
numero di record che la query.

Il Count(*) conta i record di Temp, ma perché abbiamo un statement
WHERE conta solo i record dove "CampoCheMiInteressa" di Temp
č piů piccolo che "CampoCheMiInteressa" del record corrente nella query.

Poi nel campo calcolato "Contatore" faciamo un +1 per non iniziare con
0 ma con 1.

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


Filippo Vinciguerra

unread,
Jan 28, 2002, 3:02:30 AM1/28/02
to

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

> Filippo ha scitto:
> > "MT ha scritto:
> > > Come creo un campo progressivo in una query sql? Accedo all'.mdb via
> ADO.
> > >
> > Io avevo un problema simile, Karl Donbauer
>
> Nononono "Donaubauer" che vuol dire Contadino del Danubio.
Scusa se ho sbagliato a scrivere.. spero che 'Donbauer' non abbia qualche
significato strano ;)

>
> > mi ha suggerito questo:
> > Select (i campi che interessano) , (Select Count(*) from TUATABELLA as
> temp
> > where TUATABELLA.CampoCheMiInteressa<temp.CampoCheMiInteressa) +1 AS
> > Contatore
>
> Hai sbagliato un po. Debb'essere:
> where temp.CampoCheMiInteressa<TUATABELLA.CampoCheMiInteressa
>
> > From TUATABELLA
> > ORDER BY TUATABELLA.CampoCheMiInteressa
> >

io per la verità devo ordinare la query in ordine decrescente quindi ho
scritto


where TUATABELLA.CampoCheMiInteressa<temp.CampoCheMiInteressa) +1 AS
Contatore

From TUATABELLA
ORDER BY TUATABELLA.CampoCheMiInteressa DESC
> > e funziona.

> >
> > Nel mio caso volevo creare il campo progressivo dopo aver ordinato i
> record
> > in base a CampoCheMiInteressa, ma credo che si possa togliere quella
parte
> > di codice.
> >

> > Ripeto, funziona ma non ho capito come. Cioè la funzione Count(*) conta


i
> > record in temp (credo) ma poi che succede? Perché esiste un campo
> > temp.CampoCheMiInteressa?

> > Cioè temp ha memorizzato tutto il recordset?


> > Boh, chi me la spiega?
>
> Ok, provo.
>
> SELECT (i campi che interessano)
> FROM Tuatabella
> ORDER BY Tuatabella.CampoCheMiInteressa
>

> Questo è la parte normale della query SELECT con un ordinamento.


> Niente speciale. Vediamo l'altra parte:
>
> (SELECT COUNT (*) FROM TuaTabella AS Temp
> WHERE Temp.CampoCheMiInteressa<Tuatabella.CampoCheMiInteressa) +1
> AS Contatore
>
> Dove
>
> (SELECT ...qualcosa...) +1 AS Contatore
>
> crea un campo calcolato "Contatore" nella query.

> Il contenuto di questo campo calcolato per la maggior parte è la


sottoquery:
>
> SELECT COUNT (*) FROM TuaTabella AS Temp
> WHERE Temp.CampoCheMiInteressa<Tuatabella.CampoCheMiInteressa
>
> La sottoquery usa una tabella logica (derived table, virtual recordset -
non
> lo so in italiano) "Temp" che per funzionare bene debb' avere lo stesso
> numero di record che la query.
>
> Il Count(*) conta i record di Temp, ma perché abbiamo un statement
> WHERE conta solo i record dove "CampoCheMiInteressa" di Temp

> è più piccolo che "CampoCheMiInteressa" del record corrente nella query.


>
> Poi nel campo calcolato "Contatore" faciamo un +1 per non iniziare con
> 0 ma con 1.
>
> --
> HTH
> Karl
> *********
> Access-FAQ (tedesco): http://www.donkarl.com
>

Credo di aver capito, grazie tante la tua spiegazione è chiarissima
Ciao Karl,
Filippo


0 new messages