Newsgroup: it.comp.appl.access
Titolo: Personalizzare incremento chiave primaria

Ciao a tutti.Ho come chiave primaria il campo descrizione."Ovviamente"
tale campo non si puo' duplicare.Il problema e' che ho delle
descrizioni identiche anche al cambiare del record.Vorrei via codice
attribuire(se e' possibile) alla mia chiave primaria un altro campo
univoco.Esempio:
 Il campo "descrizione " riguarda la descrizione di un articolo.Questo
articolo puo' essere acquistato da piu' fornitore.Io alla descrizione
vorrei associare il campo "Codice fornitore" che ovviamente e' diverso
da fornitore a fornitore.
Grazie in anticipo
Dino

 ha scritto nel messaggio 
news:114d9c39-1f94-4d8b...@r31g2000vbi.googlegroups.com...

ciao Dino
aggiungi una txtbox CodiceArticolo e su evento dopo aggiornamento di 
Descrizione:
me.CodiceArticolo = MeDescrizione & " "& Me.CodiceFornitore
Daniele

 news:114d9c39-1f94-4d8b-9534-cd1ea2d0dec4

cambia la struttura della tabella...
se hai tre chiodi identici, di due fornitori diversi, uno dei quali vende 
chiodi identici di due marche diverse, sei di nuovo al punto di partenza.
pippo - chiodi 2x30
pluto - chiodi 2x30
pippo - chiodi 2x30
la prima riga sono chiodi delle fonderie 'ferro & affini', l'ultima di 
'ruggine e associati'.
voila' due righe con chiave duplicata.
ripensa la tabella: una descrizione e' una descrizione, non un codice 
articolo...
se fosse cosi' semplice, cosa ci starebbero a fare i codici a barre sulle 
scatolette che compriamo al supermercato?
dimenticavo: no, la soluzione non e' aggiungere il nome del produttore 
nella descrizione.
certo, tecnicamente puoi farlo, ma se lo fai, scoprirai a breve che hai 
fatto la scelta sbagliata. 
^^
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 ha scritto nel messaggionews:114d9c39-1f94-4d8b...@r31g2000vbi.googlegroups.com...

Ho provato inserendo un campo contatore chiamato "cont".
me.cont = MeDescrizione & " "& Me.cont
Il campo contatore serve per evitare quello che dice Paolo(anche se
sostanzialmente ha ragione)
Il problema pero' persiste.Mi dice che "si e' cercato di duplicare" e
soprattutto mi da un errore di debug :
Campo "cont" basato su di un espressione impossibile aggiornare .
Grazie ancora
Dino

 ha scritto nel messaggio 
news:be0a6906-7f9b-4bbf...@e34g2000vbc.googlegroups.com...

ciao Dino
forse non sono stato abbastanza chiaro, allora...
ci sono, almeno, due strade:
in struttura tabella Prodotti inserisci un Indice con:
Descrizione e IDFornitore (vedi help)
modifica la struttura della tabella Prodotti inserendo un nuovo campo:
CodiceArticolo - duplicati non ammessi
e nella maschera di inserimento prodotti, come dicevo sopra, dopo
aggiornamento di Descrizione:
me.CodiceArticolo = MeDescrizione & " "& Me.IDFornitore
cosi avrai:
Chiodida 10 Daniele
Chiodida 10 Paolo
Chiodida 10 Dino
Daniele

 - Mostra testo citato -
Ciao Daniele grazie per la risposta.Eri stato chiarissimo.
Ho comunque preferito cambiare la chiave primaria.In effetti Paolo
aveva ragione.
Tecnicamente e' riuscito.Pero' se dal Fornitore  Rossi acquisto lo
stesso articolo ho ancora lo stesso problema.
con la nuova chiave primaria tutto OK.
Piuttosto.Ne approfitto della tua disponibilita'.io devo realizzare
una Form "Form1" e una subForm "Sform2".Quando apro la Form1 vedo
anche la Subform.
Avrei necessita' di poter selezionare a scelta un record della sub
form e di poterlo subito agg. nella form.Es :Campi SForm Sconto1 -
sconto2 - sconto3.Clicco due volte sul record e mi trovo scritti gli
stessi campi (ovviamente gia' predisposti) nella form.
Grazie a te e Paolo e scusate se non ho aperto un altro post ma mi e'
appena accaduto
Dino

 fatto la scelta sbagliata.
ciao Paolo
quindi avere un codice articolo:
Categoria-NomeProdotto-Fornitore
sarebbe una scelta sbagliata.
saresti cos� gentile da approfondire il perch� ?
Daniele 

 
vista la premessa di cui sopra, argomento un po'...
cosa fai quando il fornitore cambia ragione sociale?
update * where vecchiaragionesociale?
oppure lasci tutto com'e'?
e cosa fai quando, al terzo cambio di ragione sociale, trovi il codice 
articolo che si riferisce alla ragione sociale che il fornitore aveva tre 
anni fa? cosa pensa il cliente che vede una cosa del genere?
perche' il codice articolo dovrai metterlo in fattura, no? 
sei sicuro che i tuoi fornitori sarebbero contenti di sapere che dai in 
giro il loro nome e il nome dei loro fornitori su ogni fattura che fai?
pubblicita' aggratisse, vero, ma magari... privacy anyone?
e poi, ti conviene dare in giro il nome dei TUOI fornitori su ogni 
fattura?
cosa fai quando lo stesso identico articolo viene rinominato, perche' il
markettaro di turno ha deciso che 'periferica avanzata di gestione
sicura della documentazione cartacea obsoleta' fa piu' figo di
'tritadocumenti'?
update * where vecchionomearticolo?
e quanto lo fai grande il campo chiave? ci metti un varchar(max)?
quando farai una fattura, su cui suppongo andrai a mettere il codice
articolo, sei disposto a deforestare l'amazzonia per farci stare il
codice della 'periferica avanzata di gestione sicura della documentazione
cartacea obsoleta' prodotta dalla 'ipertech srl di marioncelli
gianbattista genitori ed eredi' e commercializzata dalla 'rivenditori 
hardware e software avanzati riuniti del triveneto, lombardia, piemote e 
valle d'aosta'? 
esempio un po' forzato, ma giusto per dare l'idea... 
e quando un cliente telefona per avere info su un prodotto e tu gli dici, 
ingenuamente, 'mi dica il codice articolo': imho, se va bene, il cliente 
ti riattacca sul naso ^^
la descrizione e' la descrizione, l'identificativo dell'articolo e'
un'altra cosa. 
e non e' necessario che uno richiami/ricordi l'altro.


 > saresti così gentile da approfondire il perchè ?

Ragazzi e' nata una bella discussione costruttiva.In realta' pero'
basta semplicemente reimpostare una nuova ID
e i problemi finiscono.
Piuttosto vi sottopongo il quesito postato sopra.avreste delle dritte
da darmi???
Grazie ancora riguardo la form e sub form??
Dino

 ti riattacca sul naso ^^
Infatti mi basta il nome per dare risposte certe.
io non sto registrando nessun codice articolo numerico o a barre o con ID.
ma un codice articolo in chiaro: nome-categoria-fornitore anche se al 
cliente,
il fornitore, a volte, non interessa.
perch� potrebbero chiedermi:
ha dei chiodi da 10? oppure ha dei chiodi da 10 di Paolo?
ciao Paolo
Daniele 

 
ripeto: privacy anyone?
se dai in giro documenti con la mia ragione sociale, puo' darsi (da 
verificare, non sono un esperto di privacy...) che tu debba avere il mio 
consenso esplicito.
magari per te il problema non esiste, pero' non puoi decidere per gli 
altri.


 altri.
Ovvio che no!!
non sto dettando le regole per la programmazione. ;-))
nel mio caso il problema non esiste!!
nella fattura ci metto "SOLO" il Nome prodotto.
ciao Paolo
Daniele 

 
quando il cliente torna da te per riacquistare qualcosa, capita spesso 
che abbia sottomano la vecchia fattura.
visto che e' il cliente che ti mantiene, perche' complicargli la vita?
mettigli anche il codice, cosi' fa prima lui e piu' alla svelta tu.
ah, no, non si puo' perche' occupa mezza pagina...
tu: 'mi scusi ma quel prodotto non ce l'abbiamo piu' in catalogo, deve 
aver cambiato nome'
cliente: 'non ne avete di simili?'
tu: 'hum... se avessi il codice, potrei capire di che fornitore era e a 
che categoria apparteneva...'
cliente: 'ho qui la fattura...'
tu: 'eh no, in fattura c'e' solo il nome. servirebbe il fax con l'ordine 
che ha fatto l'anno scorso. li' ci dovrebbe essere il codice'
cliente: 'ok... va bene... la richiamo quando l'ho trovato, eh?'
<click>


 - Mostra testo citato -
Ciao a tutti rientro nella discussione.Ho voluto provare anche come
diceva Daniele ma il problema sulla chiave primaria rimane.
Mi spiego meglio:La mia chiave primaria e' il campo "Descrizione" ho
inserito in tabella il campo count (con proprieta' contatore)
Sono andato poi ad inserire nell'evento dopo aggiornamento del campo
"prezzo articolo" il seguente codice
Me.Descrizione = Me.Descrizione & " " & Me.count.
Il risultato e' che se io scrivo in descrizione Vite A,dopo aver
inserito il prezzo mi esce "Vite A1"
Se io creo un altro record con la stessa descrizione mi esce "Vite
A2".Tutto corretto se pero' salvo il nuovo record mi esce "Errore S
ie' cercato di duplicare l'indice......"
Perche' non legge la differenza????
Grazie Dino

 aver cambiato nome'
beh! � abbastanza frequente e non cos� rara come credi!!
ciao Paolo
a mio avviso il codice prodotto serve alla ditta non al Cliente.
il cliente vede il catalogo e sceglie il prodotto, non se ne va in giro con 
il codice prodotto.
ma ti pare che il cliente che va in un negozio di ricambi auto e chiede:
c'avete dei 010101010101010101010?
no! il cliente chiede se hanno ammortizzatori per un tipo di auto.
che poi il negoziante per riacquistarli abbia bisogno il codice prodotto �
anche vero ma lo vedr� nel catalogo della ditta a cui fa l'ordine.
per questo dicevo che ci sono altre realt� e ognuno fa quello che ritiene 
giusto,
senza per questo compromettere l'integrit� dei dati, secondo le proprie 
esigenze.
la mia tabella prodotti � cos� composta:
IDProdotto
IDCategoria
IDFornitore
NomeProdotto
CodiceProdotto
dove il CodiceProdotto e la concatenazione di: 
IDCategoria+NomeProdotto+IDFornitore
duplicati non ammessi
il codice prodotto che attualmente uso, nelle maschere, come descrizione, � 
espressamente
voluto dall'utente che usa il database.
Daniele

 
io per preferenza personale uso di solito il codice come codice e la 
descrizione come descrizione...
quando il tuo committente arriva da te parlando di descrizione, devi 
ricordarti che in realta' sta parlando del codice. che pero' nel tuo db 
e' un campo calcolato come concatenazione di altri tre.
quando dovrai far manutenzione al programma tra qualche mese, ti metterai 
le mani nei capelli!
ma questo viene con l'esperienza...
;-P


 ;-P
per questo ho premesso che non sono un professionista come te.
comunque sono 5 anni che l'utente non ha problemi con il db.
(sgrat ....sgrat  grattatio pallarum omnia pericula perfugit ...sgrat.. 
sgrat) ;-)))
anche se periodicamente aggiungo altre maschere e/o report
ciao Paolo
Daniele