Newsgroup: it.comp.appl.access
Titolo: come far autocomp. i dati che si ripetono

Salve a tutti! Sono alle prime armi con Access e purtroppo anche le
cose + semplici mi sembrano impossibili! Spero in un vostro aiuto.
Il fine del mio lavoro č catalogare dei libri. x fare ciņ ho creato
tre tabelle: Autori (nome, nazion.), Categorie(Nome(narrativa, poesia,
ecc..),codice (A, BA, BB, ecc..)) e Libri (editore,IDautore,
IDcategoria,numero di archivio ecc..). Relaziono le prime 2 tabelle
con "Libri" (tramite IDautori e IDcategoria
Ho creato poi 1maschera  con tutti questi campi in modo che ogni volta
che prendo un libro nuovo possa aggiornare tutte le tabelle (in realtą
la tabella Categ. č gią stata compilata e bloccata, no aggiunte).
Problemi:
Innanzi tutto nella maschera quando scelgo la categoria,  Access non
capisce di aggiornare automat. il campo codice (A, BA, BB..) e cosi
quando passo ad altro record giustamente mi dice che stņ creando un
dupplicato nella tabella Categ. (2 record con stesso nome ma codice
diverso).Edevo farlo manualmente con perdita di tempo.
Lo stesso problema si verifica con l'autore: inserito una volta la sua
nazionalitą, la volta successiva che inserisco un altro libro dello
stesso autore vorrei inserire solo il nome e lasciare al programma
l'inconbenza di completare gli altri campi Autore (nazion., note.).
Nella sua tabella ho quindi settato dupplicati non ammessi altrimenti
mi riscriveva il nome dell'autore ma con i restanti campi vuoti. Ma in
questo modo come prima se non riempo esattamente tutti i campi nella
maschera e passo ad altro record, mi ferma x tentata dupplicazione di
dati...
In pratica devo riscrivere tutti i campi, non riuscendo allora a
capire come facciano in azienda se x ogni ordine devono riscrivere
dove abita il cliente altrimenti il programma pensa che sia 1 altro:-)
Spero di non aver annoiato troppo con i miei problemi, ma ringrazio in
anticipo chiunque mi voglia aiutare!

 anticipo chiunque mi voglia aiutare!
I campi: IDautori e IDcategoria (tabella Libri) non dovrebbero essere univoci, ma "numerico" "intero lungo" e se vuoi indicizzarli
per velocizzare la ricerca "si (duplicati ammessi)".
Io per ora non ti consiglio di creare altri indici.
Poi sulla maschera associata alla tabella Libri, crei due caselle combinate (Autori e Categorie) associate ai rispettivi ID.


questa non mi è chiara, creare le caselle combinate lo so fare, ma
perchè associarle agli ID. Sono semplici numeri no, come faccio a
capire a quali dati si riferiscono.  
Grazie!
Stefano

 Stefano
Facciamo così; descrivi meglio ogni tabella e i campi che contengono, altrimenti non riesco a farmi un'idea.
Es.
tab Autori
- id, contatore, univoco;
- Autore, testo;
tab Categorie
- id, contatore, univoco;
- Categoria, testo;
tab Libri
- id, contatore, univoco;
- idAutore, numerico intero lungo;
- idCategoria, numerico intero lungo;
- titolo;
Ciao.
-- 
Sergio MAZZA

Facciamo così; descrivi meglio ogni tabella e i campi che contengono, altrimenti non riesco a farmi un'idea.
tab Autori
- id, contatore, univoco; (chiave primaria, indicizzato no dupl.)
- Autore, testo;
- Note,memo
tab Categorie
- id, numerico (solo xchè con il contatore quando sbagliavo certi
numeri non me li ridava +, x chiarezza..tanto sono pochi),
univoco;(chiave primaria, indicizzato no dupl.)
- Categoria, testo;
- Sezione, testo
tab Libri
- id, contatore, univoco;
- idAutore, numerico intero lungo;
- idCategoria, numerico intero lungo;
- titolo, testo;
- nomeEditore, testo;
- note, memo;
- numero scaffale, testo; ( in futuro qui ci scriverò, se tutto va
bene, A 023 o BC 112. Anche qui dovrò strolicare una query che lo
faccia da solo... ma 1 problema x volta)
Grazie
Stefano

 Stefano
La maschera principale dovrebbe essere associata alla tabella Libri e basta.
Le caselle combinate, Autore e Categoria associate ai rispettivi IdAutore e IdCategoria, le hai già create; i dati che vuoi vedere
dell'autore li ottieni in due modi:
- dlookup in ogni casella di testo:
    - =DLookup("[Luogo di nascita]"; "Autori"; "[Autore] =" & chr(34) & Autore & chr(34))
    - =DLookup("[colore occhi]"; "Autori"; "[Autore] =" & chr(34) & Autore & chr(34))
etc. etc.
oppure nella stringa sql della casella combinata ci inserisci tutti i campi che ti interessa vedere sulla form e gestisci l'evento
"dopo aggiornamento" per popolare le caselle di testo:
es.
Private Sub CasellaCombinataAutore_AfterUpdate()
if not isnull(me!CasellaCombinataAutore) then
    me![luogo di nascita] = me!CasellaCombinataAutore.column(2) '<-- colonna del luogo di nascita
    me![colore occhi] = me!CasellaCombinataAutore.column(3) '<-- colonna del colore occhi
etc. etc.
End Sub
la seconda dovrebbe essere molto più veloce della prima.
La maschera potrebbe essere anche in modalità "maschere continue"...
Ciao.
-- 
Sergio MAZZA


Questo discorso non mi è chiaro (soprattutto dove dovrei inserire
questa stringa) ma forse ho sbagliato a presentarti il problema e non
voglio farti perdere del tempo (vedi Maschera Autori sopra..).
Comunque sempre in tema di casella combinate ho quest' altro problema.
Ho creato una cas. comb. nella sottomaschera libri nel campo
"nomeEditore". Dopo un po' si ripetono e così è + veloce scriverli
ma..certi record sono presenti + volte. Giustamente Mondadori è
presente in + libri da me catalogati ma tra poco in questa casella
potri trovarmi ripetuto 50 volte Mondadori rendendo inservibile la
casel. comb.
E' possibile nell' elenco far nascondere i record ripetuti oppure
dovrò creare una tabella isolata anche x i nomi editori (con tutti i
problemi che già mi danno gli Autori ...) 
Grazie infinite x ogni possibile suggerimento :-)

 Grazie infinite x ogni possibile suggerimento :-)
Un consiglio?
Fermati ora che sei all'inizio e rivedi l'analisi del tuo "problema"; se non
fai una buona analisi verificando:
- quante e quali tabelle devono esistere;
- quante di queste sono "dipendenti" e quante no;
(es.) la tabella Categorie non è dipendente da nessun'altra tabella, mentre
la tabella Libri è dipendente dalle tabelle Autori e Categorie tramite
IdAutore e IdCategoria (e non solo a mio avviso).
- quali relazioni ci sono tra queste tabelle;
Se non fai prima questo rischi di invischiarti e di non uscirne più...
Ciao.
-- 
Sergio MAZZA

- quali relazioni ci sono tra queste tabelle;
Qui in effetti ho tolto delle relazioni: 
la tabella categoria essendo già finità non ho esigenza di aggiornarla
con la maschera. X questo la uso semplicemente come elenco da cui
scegliere e sara nella tabella libri che scriverò la categ.(il nome
non il suo codice). Infatti avrei intenzione di togliere nella Tab.
Libri il campo"IDCategoria" a mio avviso inutile e lasciare solo
"nomeCategoria".
Grazie x la tua infinita pazienza e spero di non abusarne troppo con
la mia insapienza :-). In verità sto cercando di documentarmi anche
con dei libri (Access for Dummies e Programmare Access), ma mi
sembrano o troppo semplici o troppo complicati e naturalmente nessuno
dei due pone in modo esplicito le mie domande. in particolare sulle
"relazioni" (secondo me la radice di tutti i problemi) dicono solo che
collegano + tabelle ma non chiariscono minimamente (x me:-)) come
funzionano e come usarle.
Ciao 
Stefano

 Stefano
Ciao.
-- 
Sergio MAZZA

Ciao.

 consigli di approfondire?
Scherzavo ovviamente; comunque query e report sono due cose differenti con
finalità differenti. Quindi ti consiglio di approfondire entrambi, ed in
modo particolare le query; solo alla fine i report.
Sembra a te che la ricerca avviene su più tabelle ma avendo creato le
relazioni è come se tu avessi a disposizione una grande tabella, solo
spezzettata in varie "entità" (Libri, Autori, Categorie, ...).
Cosa vuoi usare? Beh! Se crei una casella combinata dove fai un elenco di
tutti i libri che hai inserito, poi gestisci il suo evento "dopo
aggiornamento" e ci inserisci:
Me.Filter = "idLibro = " & Me!nomeCasellaCombinata
Me.Filteron = true
hai creato un modo veloce per trovare subito un libro; stessa cosa per gli
Autori e Categorie.
Ti dirò di più; avendo inserito l'IdAutore nella tabella Libri hai la
possibilità di trovare tutti i libri di quell'autore e/o con quella
categoria.
Dai che sei sulla buona strada...


Ciao.
Scrivo solo x ringraziarti dei continui aiuti e spunti che mi hai
dato;  Sto partendo e x 2 settimane sarò lontano da ogni collegamento
internet! Spero che non appena ritornerò a sacramentare su Access, di
poter contare ancora sui tuoi consigli! 
Ciao
Stefano  

 Stefano
Buone ferie e mi raccomando... Studia!!
Ciao.
-- 
Sergio MAZZA