Newsgroup: it.comp.appl.access
Titolo: Contatore personalizzato

Salve a tutti,
ho una tabella "Tabella1" con i campi "Contatore" (tipo Numerico) e "Nomi"
(tipo testo).
Poi ho creato una maschera "Maschera1" su  cui ci sono le rispettive
caselle di testo "Contatore" e "Nomi" 
Vorrei fare in modo che ad ogni nome che scrivo in "Nomi" passando da un
record al successivo il capo "Contatore" venga incrementato di 1
Grazieeee e buon week end a tutti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao,
perchè il campo Contatore è tipo numerico e non tipo contatore ?
In questo modo fa tutto lui.
Alberto

 Alberto
Perche voglio che nel caso in cui cancello l'ultimo record se ne aggiungo
uno nuovo riprende la numerazione , mentre con il contatore di access va
avanti nella numerazione, cioe se ho:
1 2 3 4 se cancello 4 e inserisco un record nuovo access va a 5 invece che
a 4
capito?
-- 


 capito?
A tua scelta:
http://www.accessgroup.it/HomeArgomenti.asp?ID=217&Oggetto2=Esempi
 di
contatori
http://www.accessgroup.it/HomeArgomenti.asp?ID=216&Oggetto2=Contatori
alfanumerici con i recordset
http://www.accessgroup.it/HomeArgomenti.asp?ID=213&Oggetto2=Contatore
personalizzato in una LAN
--
sv


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Ciao, oltre a quanto suggerito, puoi semplicemente scrivere su Prima
di aggiornare della maschera:
Me.Contatore = Nz(DMax("Contatore", "Tabella1"), 0) + 1
Ciao Vladimiro.

 
a cosa ti serve una 'feature' del genere?
per conoscere il numero di record in tabella, esistono funzioni apposta; 
usare max(contatore) non e' la via giusta.
e soprattutto non ha vantaggi rispetto a count(nomeCampo), ha solo 
svantaggi.
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 > Perche voglio che nel caso in cui cancello l'ultimo record se ne aggiungo
Grazie infinite per la risposta 


 svantaggi.
Grazie infinite per la risposta 
-- 


 svantaggi.
dovresti fare degli esempi per affermare quello che dici :-)
Ciao Vladimiro.

 
a dire il vero, dovresti fare tu qualche esempio che mostri i vantaggi
di max(contatore) rispetto a count(nomeCampo), se vuoi ottenere il 
conteggio delle righe... 
count(nomeCampo) funziona su qualsiasi tabella, quale che sia il modo di
gestire l'indice. 
max(contatore) funziona solo se l'indice rispetta un po' di condizioni:
- l'indice e' un campo numerico intero autoincrementante
- l'indice parte da 1
- l'incremento dell'indice e' 1
- non e' stato cancellato nessun record
e l'ultimo punto e' puttosto penalizante: max(contatore) non ti dice se 
ci sono buchi nella sequenza dell'indice, pero' restituisce un valore 
sempre e comunque, valore che a volte, ma senza garanzie, corrisponde col 
numero di record.
vantaggi del campo contatore?


 wrote:

Partiamo da qui.
1) Il campo si chiama contatore ma è tipo dati numerico, non tipo dati
contatore e credo che questo sia abbastanza evidente.
2) Se vuoi solo contare i records della tabella è giusto usare la
funzione DCount mentre se vuoi un progressivo partendo da un numero
qualsiasi (inserito anche manualmente) devi per forza usare la
funzione DMax.
3) Lo so che è rischioso usare questo metodo (e probabilmente fai bene
tu ad evidenziarlo), però io rispondo alle domande nel modo in cui
esse vengono poste, considerando che delle volte le richieste non sono
altro che scorciatoie per un problema più grande che non si riesce a
spiegare.
max(contatore) funziona solo se l'indice rispetta un po' di
condizioni:
- l'indice e' un campo numerico intero autoincrementante
Risposta: è semplicemente un campo numerico
- l'indice parte da 1
Risposta: una volta implementato il primo record, puoi modificare il
valore del campo contatore con un valore (numero) qualsiasi
- l'incremento dell'indice e' 1
Risposta: l'incremento (costante) lo decidi tu
- non e' stato cancellato nessun record
Risposta: puoi solo limitarti a cancellare l'ultimo record
e l'ultimo punto e' puttosto penalizante: max(contatore) non ti dice
se
ci sono buchi nella sequenza dell'indice, pero' restituisce un valore
sempre e comunque, valore che a volte, ma senza garanzie, corrisponde
col
numero di record.
Risposta: come già detto sopra, se si pensa di cancellare qualsiasi
record e non si ha la necessità di creare un progressivo partendo da
un numero qualsiasi, è bene usare la funzione DCount al posto della
funzione DMax:
Me.Contatore = Nz(DCount("Contatore", "Tabella1"), 0) + 1
Ciao Vladimiro

 
prendo atto che anche tu non hai da segnalare nessun vantaggio nell'uso 
del campo contatore come 'contatore' delle righe.
imho conviene usare la funzione/il campo per lo scopo per cui e' 
previsto.
usare la 'scorciatoia' di contare le righe usando il campo contatore, 
imho ha solo svantaggi rispetto al max() (o dcount)


 --
Ciao Vladimiro.

 Ripeto: ma stiamo parlando della stessa cosa? :-)
eh... il dubbio m'e' venuto ^^
io dal primo post sconsiglio di usare il campo contatore per contare i 
record e sto ancora facendo quello...


 eh... il dubbio m'e' venuto ^^
lungi da me polemizzare, ma se la domanda è la seguente:
ho una tabella "Tabella1" con i campi "Contatore" (tipo Numerico) e
"Nomi"
(tipo testo).
non credo ci possano essere interpretazioni varie al riguardo, a meno
che uno non sappia la differenza che passa tra un campo numerico e un
campo contatore(ma non è mica una colpa, stiamo tutti qui per
imparare).
1) un campo con tipo dati numerico,non può in nessun modo paragonarsi
al contatore di Access,
2) non può autoincrementarsi,
3) a differenza del vero contatore di Access, il valore del campo può
essere modificato.
Ciao Vladimiro.

 
la tua descrizione, riporta alla domanda da cui io sono partito con le 
mie risposte.
a cosa serve registrare in tabella un campo con tipo dati numerico, che 
l'op vuole incrementare di una unita' a ogni inserimento e che ha 
chiamato contatore?
nei post precedenti una tua ipotesi (non mia, tua) era anche che il campo 
con nome contatore (nome campo, non tipo dati, non fare confusione) non 
fosse nemmeno chiave.
metti insieme le tue ipotesi, con la descrizione che hai fatto 
nell'ultimo tuo post e pensaci su.
riporto la domanda: a cosa serve un campo numerico, da incrementare di 
una unita' a ogni inserimento e che pare (pare, io e te non lo sappiamo) 
non sia chiave?
stranamente l'op cerca di ottenere un comportamento molto simile al 
comportamento del tipo dati contatore (tipo dati, attenzione, non nome 
campo, non confonderti).
ma vuoi vedere che magari (ipotesi, eh, dallo scarno post iniziale giusto 
quelle si possono fare) l'op vuole usare questo campo per contare le 
righe?
che ci sia cascato pure lui, anche se vuole usare un campo numerico 
invece di uno con tipo dati contatore (tipo dati, non nome campo, non 
confonderti)?


 confonderti)?
Se non si è fatto più sentire, un motivo ci sarà non credi?
E... dulcis in fundo, se rileggi attentamente tutto il post, ti
accorgerai che ho sempre puntualizzato che il campo Contatore di cui
si stava discutendo, è un campo con Tipo dati numerico, per cui il tuo
non "confonderti" mi pare abbastanza gratuito. Ti avevo già risposto
che non mi piace polemizzare, però se ci sono novità o suggerimenti in
quello che dici è bene continuare, altrimenti, per non ripetere sempre
la stessa pappardella, è bene chiudere qui.
:-)
Ciao Vladimiro.

 
sono partito scrivendo di un campo 'contatore'; rileggi i miei primi due 
post e vedrai che se li leggi interpretando 'contatore' come 'campo con 
tipo dati contatore' o 'campo con tipo dati numerico con incrementi 
unitari' (situazione dell'op), il senso di quello che ho scritto non 
cambia.
il tipo dati non l'ho proprio considerato, perche' la risposta che ho 
postato vale indipendentemente dal tipo dati del campo usato per 
'contare'.
se pero' c'e' una incomprensione proprio sul punto di partenza, direi che 
hai ragione e conviene chiudere.
se l'op non si e' fatto piu' sentire, probabilmente sara' svenuto 
leggendo il thread ^^
