Newsgroup: it.comp.lang.delphi
Titolo: CONTROLLO RECORD ESISTETENTE

Salve a tutti.
Ho una applicazione con database access sviluppata con delphi 6.
ho la necessità in fase di inserimeto record se quello che ho digitato ha 
nel campo è presente !!!
mi spiego meglio.
Mettiamo il caso che io stia digitanto Az. agricola bellafiore,
in archivio però ho già presente un record con Azienda agricola bellafiore,
cosa mi suggerite per effettuare questo controllo ?

 cosa mi suggerite per effettuare questo controllo ?
Creando un indice unique sulla ragione sociale.
p.s.: il tuo problema prescinde da Delphi. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

nel 90% dei casi è così.
E' vero, ma se l'esigenza è quella di voler garantire un nome unico,
allora l'indice unique sul campo è la strada migliore. Se l'esigenza è
un'altra, la soluzione sarà un'altra.
Non affrettarti a rispondere perché a breve ti sbatterò nel kill-file.

un'altra, la soluzione sarà un'altra.
Concordo.. No si capisce bene cosa deve fare.
--- posted by geoForum on 
http://www.delphiedintorni.it

 ha scritto nel messaggio 
news:46279...@x-privat.org...


 parola es. bellafiore mi venga segnalato.
Allora devi implementare una logica di controllo, ma sul come
implementarla puoi esprimerti solo tu (parola per parola?). Puoi ricorrere
ad una "like" in   fase di inserimento.
p.s.: non posso impostare il follow/up da qui, ma sarebbe meglio che ti
spostassi su un altro gruppo.


Che cosa stai usando ?
ADO, Bde, DbExpress ... ?
Non si capisce e quindi la domanda così posta sembra riguardare SQL e 
basta!



Ciao,
Non puoi utilizzare delle chiavi Unique sul campo RagioneSociale, perché 
possono esserci omonimi al 100%; è possibile attraverso un componente 
DataAccess inserire direttamente un valore in un campo (es, DbGrid), ma 
a te conviene inserire i dati da trasmettere al Database in campi 
appartenenti ad un Form (es. TMaskEdit), quindi chiedere all'utente di 
registrare i dati inseriti ed in quella fase -tra la richiesta di 
registrazione e la registrazione effettiva- inserire una fase di ricerca:
-- creare una Query filtrata sul campo "RagioneSociale = xyz", 
magari"UpCase(RagioneSociale) = 'XYZ'"; se la Query ha RecordCount > 0 
lasci all'utente la scelta di inserire o meno il nominativo, magari 
presentandogli una griglia dei risultati del filtraggio;
-- lanci una Query.Locate, magari con options [loPartialKey], con il 
valore inserito dall'utente come Ragione Sociale; se ci sono dei match, 
avvisi l'utente, che deciderà sul da farsi;
-- lanci un Table.FindKey([RagioneSociale]), ma solo se il campo è 
indicizzato e, in definitiva, vuoi che non vi siano record con campi 
uguali o simili.
-- se invece opti per l'inserimento direttamente in DbGrid, puoi usare 
un evento onKeyPress , per cui ogni volta che l'utente preme un 
carattere, la procedura in background deve cercare in archivio la 
corrispondenza con la somma dei caratteri fin lì inseriti.
Ovviamente, tutto dipenden dall'architettura che vuoi imprimere alla 
procedura.
Spero di averti risposto.
NioBi


>p.s.: il tuo problema prescinde da Delphi. 
Si ma prima della risposta no 8)


In realtà la strada esposta da Andrea è sbagliata.
Le ditte non necessariamente hanno differente Ragione Sociale, anche se 
nel 90% dei casi è così. Ci possono essere casi di omonimia.
La unique va messa sulla partita IVA (la avrai già suppongo).
Usi ADO oppure BDE ?
In ogni caso potresti inviare una query SQL prima dell'inserimento se 
non ti risponde niente significa che non è presente.
