Newsgroup: it.comp.appl.access
Titolo: access 2000, controllo record

Premetto che č da poco che uso Access.
Ho una tabella Anagrafica clienti cosě composta
Codice Cliente     (chiave primaria, assegnata automaticamente dal DB)
Denominazione Sociale   ------------testo
PIVA---------------Testo (ma campo non obbligatorio)
Indirizzo-------------- testo (via e n. civico)
Paese-------------- testo
CAP-------------- testo
Nazione-------------- testo
Telefono------------------Testo (ma non obbligatorio)
Io vorrei imporre al DB, quando inserisco un nuovo cliente,  un  controllo
su tutti i campi, escluso il codice, per evitare che per errore venga
inserito lo stesso cliente, con codice differente.
E' possibile? Grazie dell'aiuto...

 E' possibile? Grazie dell'aiuto...
La cosa più semplice che mi viene in mente è quella di definire un indice
univoco sui campi che non devono essere duplicati (penso che basti
"Denominazione Sociale" + "PIVA").
Ciao, Fabio

 E' possibile? Grazie dell'aiuto...
Che tipo di controllo vuoi fare....??
Forse potresti verificare su evento Before_Update sfruttando
la funzione DCOUNT..... l'eventuale presenza di Clienti già esistenti.
In effetti gli unici campi da verificare sono Partita I.V.A e/o
Denominazione
Sociale.....!!!
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Non posso utilizzare la partita IVA o codice fiscale in quanto non ho il
dato disponibile per tutti i clienti e quindi potrebbe verificarsi il caso
che ho due Mario Rossi residenti in due paesi diversi.......... ma il mio
problema è che voglio evitare diinserire due volte lo stesso Mario Rossi
residente in Milano.......
Grazie Ciao

 Grazie Ciao
Perchè non può esistere un Mario Rossi doppio..????
Su 2Milioni di persone poi..??
La cosa è da gestire in effetti, attento a non controllare
troppo, potresti creare un MOSTRO..!
Se invece controlli la contemporaneità delle informazioni
con logica AND/OR generi anche quì la possibilità di sbagliare
perchè dovresti essere sicuro di scrivere esattamente la stessa
cosa.....!!!!
Questo genere di verifiche spesso se non ben predisposte si rivelano
più un danno che una comodità.
Ciao. @Alex


 Ciao. @Alex
Scusa mi sono espressa male io......
Tento di spiegartelo in un modo migliore.
Ho  un archivio di clienti molto grande e adesso ho la necessità di portarli
nel mio DB, ma ho un problema, molti clienti vengono ripetuti per più volte
nelle mie stampate, quindi vorrei evitare di star qua a spuntare tutti i
clienti uno per uno per vedere se ci sono dei doppioni. Quindi vorrei che il
mio DB quando inserisco un cliente controlli se quest'ultimo sia già stato
inserito.
Sarebbe facile se io possedessi tutte le PIVA o i CF, ma questo dato non
l'ho per tutti i clienti.La mia domanda era se è possibile porre questo tipo
di controllo a tutti i campi della tabella, escluso il codice.
Spero di essermi spiegata meglio, se c'è qualcosa che non capisci chiedi
pure.

 pure.
No, non ti sei espressa male, anzi ho capito, l'unica cosa
che non avevo capito era l'esigenza personale...!
Pensavo dovessi fare qualcosa da proporre a terzi...!!
Allora nella tua Form esegui un controllo sull'evento
prima di aggiornamento delle singole TextBox d'inserimento, esclusa
quella del CODICE CLIENTE.
Ora fatto questo devi vedere se il CODICE CLIENTE ti conviene generarlo
al termine dell'inserimento, quando cioè sei sicura che il Cliente
non è già presente nel tuo DB.


 pure.
Mi scuso per l'intromissione.
D'accordo per il controllo dei duplicati a regime.
Ma come fai l'inserimento iniziale? Li ri"tasti"?
--
a.cara

 non è già presente nel tuo DB.
Allora il mio ulteriore problema è che non so come fare questo controllo,
scusa l'ignoranza, ma è che proprio sono nuova......
Potresti darmi una mano??
Grazie
Nady

 a.cara
Ciao Alessandro, me lo sono chiesto anch'io, ma rileggendo forse
potrebbe trattarsi di un passaggio da archivio cartaceo, il classico
CARDEX pieno di fogli....!!!
AUGURI....!!!
@Alex.


 Ho provato con questo tipo di controllo, ma non so se ho utilizzato
correttamente il codice......
Qualcuno potrebbe dirmi se va bene?
Private Sub Codice_Cliente_BeforeUpdate(Cancel As Integer)
Dim a As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabella_Anagrafica")
rs.MoveLast
rs.MoveFirst
With rs
If Me.Partita_IVA <> "" Or Me.Partita_IVA <> Null Then
'controllo se l'utente ha inserito la piva
'se l'ha inserita faccio un controllo subito con questa nel db
For a = 1 To Me.Codice_cliente - 1 '(o in alternativa rs.count)
If Partita_IVA = Me.Partita_IVA Then MsgBox ("cliente gia esistente al
record nr. " & a)
Exit Sub
Next a
'se passa il ciclo for-next o non ci entra per niente vuoldire che la
ricerca per l'iva è fallita quindi o non c'è gia inserita o l'utente non
l'ha inserita, allora procediamo con il controllo sul telefono
.MoveFirst
If Me.Telefono <> "" Or Me.Telefono <> Null Then
'controllo se l'utente ha inserito il telefono
'se l'ha inserito faccio un controllo subito con questo nel db
For a = 1 To Me.Codice_cliente - 1 '(o in alternativa rs.count)
If Telefono = Me.Telefono Then MsgBox "cliente gia esistente al record nr. "
& a
Exit Sub
Next a
'se passa il ciclo for-next o non ci entra per niente vuoldire che la
ricerca per il telefono è fallita quindi o non c'è gia inserito o l'utente
non l'ha inserito, allora procediamo con il controllo sulla denominazione
sociale
If Me.Denominazione_Sociale <> "" Or Me.Denominazione_Sociale = Null Then
MsgBox "Inserisci la Denominazione Sociale"
Exit Sub
End If
For a = 1 To Me.Codice_cliente - 1 '(o in alternativa rs.count)
If Format(Denominazione_Sociale, ">") = Format(Me.Denominazione_Sociale,
">") And Me.Indirizzo = Indirizzo And Me.CAP = CAP Then
MsgBox "cliente gia esistente al record nr. " & a
Exit Sub
End If
Next a
End If
End If
End With
End Sub

inserito lo stesso cliente, con codice differente.
ti dico cosa faccio io, magari riesci a trarne degli
spunti...
premetto che si tratta di un'elaborazione batch
prendo i campi significativi (es. nome, indirizzo,
localita', telefono, fax) e li accodo in un'unica stringona
dopo averli "depurati" di punti, virgole, spazi, accenti,
ecc.
poi prendo sottostringhe di n caratteri (es. 8) e le cerco
nelle stringone dei record successivi, memorizzando quante
occorrenze trovo
infine valuto il numero di occorrenze per stabilire la
probabilita' che si tratti di informazioni duplicate
in base alla mia esperienza, con sottostringhe di 8
caratteri, il numero di occorrenze minimo da considerare e'
10-12
se vuoi tentare questo approccio, ti consiglio di caricare i
rst su matrici e lavorare su quelle
hth
--
lorenzo coronati
---

 10-12
E' una bella menata!
Scusa, ma perchè non testi pure te semplicemente la PIVA?
Ciao, Ettore

Scusa, ma perchè non testi pure te semplicemente la PIVA?
semplicemente perche' non ce l'ho
si tratta di un db contatti, non solo clienti
bai
--
lorenzo coronati
---