Newsgroup: it.comp.lang.visual-basic
Titolo: Numero Record attuale di num record totale

Beh, lo so è un dettaglio, ma fa molto chic: come posso fare per indicare
all'utenta che il record che sta visualizzando è il n° n di TOT? HO provato
ad usare le proprietà record count e absolute position, ma, absolute
position va bene finchè mantengo l'ordine di inserimento dei record,
altrimenti non la posso usare + per questo scopo.
Voi cosa mi consigliate??
Grazie a tutti

 altrimenti non la posso usare + per questo scopo.
AbsolutePosition ti restituisce l'indice (in base 1) del record corrente ..
è indipendente dal tipo di ordinamento ecc..
RecordCount è una proprietà che dipende dal tipo di cursore e dal tipo di
query ...
leggi i vecchi post "numero record ado"
Saluti

 è indipendente dal tipo di ordinamento ecc..
Dimenticavo ... difficile da utilizzare con un cursore lato server
aggiornabile su un db multiutente.
Saluti

mi permetto di dissentire....
immagina una tabella dei comuni, puoi fare
SELECT * FROM Comuni ORDER BY NomeComune
In tal caso, se fai un .AbsolutePosition=1, il primo comune sarà
Abbiategrasso, o qualcosa del genere....
Se invece fai
SELECT * FROM Comuni ORDER BY NomeComune DESC
un .AbsolutePosition=1 farà la cosa inversa, il comune sarà Zuzzurellone,
supponendo che esista un comune chiamato così. Quindi AbsolutePosition
dipende eccome dall'ordinamento che fai.....
Cmq, e qui rispondo a Paolo, dipende da cosa vuoi ottenere. Se vuoi dare
indicazione all'utente di quale record sta vedendo, allora ti conviene avere
una primary key nella tabella. Il record 3371 sarà sempre quello, non c'è
santo che tenga. Se invece vuoi fare come Access, allora segui quello che ha
detto Fox
good coding!!!
-- 
Damiani Liborio Igor
ig...@igordamiani.it
 - 
soft...@igordamiani.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 detto Fox
Meglio una precisazione che una cattiva informazione :)
Paolo  chiedeva come fare ad indicare all'utente il progressivo del record
corrente. Ma se ha un record corrente vuol proprio dire che ha un recordset
e che quindi ha già un set di risultati e che quindi l'absoluteposition
indica il progressivo del record corrente.
L'absolute position è una caratteristica del recordset, non della tabella.
La mia affermazione "l'absoluteposition non dipende dal tipo di ordinamento"
forse è un po' troppo superficiale .. sommata al fatto che non capisco cosa
vuole fare esattamente Paolo ... pensate al risultato :)
è certo che vorrei vedere quel form che visualizza un record alla volta e
che prima mi dice "record 120 di 2000" poi passando al record successivo mi
dice "record 1459 di 2000"  .. e che cacchio ...
a questo punto lascio in bella mostra il campo Id.
Saluti e grazie a Igor per la precisazione

[*Paolo C.*=
paolo...@libero.it
] ha scritto:

Beh, chi fa le domande, dev'essere disposto al "rischio" della risposta...
;-)
Abitua l'utente (dopo che ci sarai riuscito tu) a smettere di pensare al
record come una cosa statica e precisa.
Consiglia invece il concetto di set/gruppo di record (insomma, il recordset,
che, caso eccezionale ma non troppo, può essere fatto di un solo record) che
(e mi trovo d'accordo, come indica Fox) può variare di volta in volta, vuoi
per le selezioni, vuoi per (o anche per) l'ordinamento.
Semmai puoi identificare univocamente un record con la sua chiave (univoca,
appunto) e nel tuo messaggio di "lavori in corso", anzichè esporre uno
sterile (a parte che nessuno lo guarda mai) record 128, esponi un più
indicativo (sempre ammesso che qualcuno lo guardi) "fattura numero nnnnn del
gg-mm-aa".
Diverso è, ovviamente (ma per certi versi non contrasta, anzi, conferma,
quanto sopra detto), il concentrarsi su uno specifico record, per esempio in
fase di statica visualizzazione e/o variazione. Che utilità può avere per
l'utente sapere che quello è il record 128 (quando basterebbe un ordinamento
inverso per farlo magicamente diventare il numero 3)? Semmai, e insisto,
quello è il record della "fattura numero nnnnn del gg-mm-aa"
Se, ancora, vuoi mostrare una progressione del lavoro e non vuoi lanciarti
un una barra di progressione col colore del "fatto" che scorre e copre
quello del "da fare", beh, allora va bene un "record 3 di 130", "record 4 di
130", etc., ma la domanda è sempre la stessa: chi lo guarda e se anche lo
facesse, a che gli serve, che tipo di indicazione gli dà?

Infatti.
Non voglio legare la posizione al singolo record della tabella, ma solo al
singolo record del mio recordset...
Se il recordset è composto da 190 record allora ci sarà 1 di 190, 2 di 190,
3 di 190 ecc. con delle frecce che mi fanno il move next e move previous.
Il mio problema è che ho scritto quest'istruzione, ad esempio in
private sub cmdAvanti_click
 (i vari controlli di eof e bof)
 rs.movenext
 lbl1.text=rs.absoluteposition + 1 & " di " & rs.recordcount
(perchè absolute position è in base 0 e non in base 1)
(naturalmente ho già effettuato il move last per la recordcount)
end sub
il risultato è proprio quello che ha detto FOX MULDER
prima mi dice "record 120 di 2000" poi passando al record successivo mi
dice "record 1459 di 2000"
Inoltre non è consigliabile utilizzare l'ID come indicatore di posizione di
record poichè se ho una tabella con record che hanno id 1, 2, 3, 4, 5, 6, e
poi cancello il 4, avrò 1, 2, 3, 5, 6...
In pratica mi serve un modo per indicare all'utente il numero dei record che
corrispondono ai criteri impostati in una ricerca (quelli trovati in
pratica) e, tra questi, qualunque sia l'ordine, la posizione di quello
attuale, che è solo un dato indicativo, in quanto per identificarlo
univocamente è sempre necesaria la sua chiave primaria.
ps: non ho trovato nulla sotto numero di record ado... inoltre sto
utilizzando DAO quindi non so nemmeno se sarebbero stai consigli utili
cmq grazie mille a tutti!

 utilizzando DAO quindi non so nemmeno se sarebbero stai consigli utili
Beh, se proprio vuoi praticare un buono e sano (oltre che certo) masochismo,
visto che conosci quanti sono all'inizio e lo scorrimento coi bottoncini lo
provochi tu, non ti basta un contatore da azzerare all'inizio, incrementare
quando vai in avanti e decrementare quando vai all'indietro?

Ok, ma insisto, visto che quel 190 è aleatorio ed effimero, a chi frega che
quello è il record 1 o 190?
perchè dici che non ci frega? secondo me è utile avere un indicatore
relativo... d'altronde access quando applichi un filtro ti dice lo stesso
"record 10 di 34 (filtrati)" no? alla microsoft perchè lo hanno fatto?
Cmq lo sapete che vi voglio bene voi dell'NG? :-)
Cavolo, tu, lupo, sai più cose riguardo al mio programma che il mio computer
stesso, eppure non sappiamo nemmeno i nostri nome e le nostre città :-)
bellissimo sto fatto :-)

... eppure non sappiamo nemmeno i nostri nome e le nostre città :-)
bellissimo sto fatto :-)
Di me ormai si sa quasi tutto. Cambierò nick ;-)

 dice "record 1459 di 2000"
Allora avevo capito bene ...
comunque devi stare attento al tipo di recordset che stai utilizzando
(Dinamico o Statico) ... prova a postare il codice della connessione e
dell'apertura del RecordSet
Il comportamento che descrivi è normale per un DB server a cursori dinamici
.. non lo è per un DB che viene sfruttato da una applicazione sola.
Io ho sempre usato la prop. AbsolutePosition e non ho mai incontrato
problemi.
Comunque concordo con Lupo ... il progressivo è abbastanza inutile.
Saluti

Paolo C. wrote:

Se hai un campo univoco, mettiamo ID, allora
set rs=db.execute("SELECT COUNT ID as numerorecord from tabellaxyz")
e rs("numerorecord") contiene appunto il numero di record.
-- 
Ciao,
        Fabrizio
<=- 
http://www.negusweb.it
 -=>

[*Negus*=
ne...@negusweb.it
] ha scritto:

Dubito fortemente.
L'ID di un record è certamente progressivo, ma non necessariamente
continuo...
Rileggere il post iniziale.