Mark
> 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
>"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
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
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
>
> > 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