Newsgroup: it.comp.macintosh
Titolo: FileMaker 3.0

E' possibile fare in modo con FileMaker 3.0 che ti avverta se stai
inserendo un record uguale ad uno precedentemente inserito? Se si come?
(immagino si necessario fare uno script di ricerca per i campi
desiderati ad ogni inserimento di record. Mi sa che diventa un po'
complesso..)
ciao
maxo
-- 
====================================================
 
Togliere XXX dall'indirizzo per rispondere via email

 complesso..)
Non c'e' bisogno di nessuno script!
Basta che nelle opzioni di immissione del campo vai alla voce verifica e
selezioni "unico". Puoi anche scegliere se forzare l'immissione di un
dato duplicato o meno.
(quanto mi piace filemaker :-)))
-- 
Sergio Aletta
nyr...@thebrain.net
Note: 
the address at the left of the @ is ROT13 encoded

 (quanto mi piace filemaker :-)))
Grazie Sergio, funziona!!!!!!!


 selezioni "unico"
si' ma se ti interessa l'unicita' del record e non quella dei singoli
campi come fai?
Insomma supponi di avere tre campi e di non volere due record con tutti
e tre i campi uguali ma di accettare due record che differiscono anche
di un sol campo...
mi spiego?
-- 
     OO   
    O  O  (o)(o)        Nicolo' Zen
    O       oo          
nz...@leonardo.math.unipd.it
     O ooo  <>  ooo     DorsoDuro3300, 30123, Venezia (tel.041 5201364)

 mi spiego?
Si, ti sei spiegato benissimo, ma non mi sono mai posto questo problema:
ad occhio la vedo un po' complicata, ma non e' detto che non si possa
fare; se ho un po' di tempo provo e ti faccio sapere.


      O ooo  <>  ooo     DorsoDuro3300, 30123, Venezia (tel.041 5201364)
--
+-------------------------+
|                         |
|     Stefano Lamberti    |
|
lamb...@mailbox.dsnet.it
|
|                         |
+-------------------------+

 Ciao
Una domanda: non e' un po' uno spreco di risorse? Il campo quattro in
pratica replica tutti i dati delle schede! o forse non li replica ma
semplicemente li "punta"?
Ed il fatto che il campo quattro sia di tipo testo non crea problemi nel
caso in cui uno degli altri campi sia di un tipo incompatibile con il
testo (che so, un'immagine)?
Comunque adotto di buon grado il tuo suggerimento.
ciao


      O ooo  <>  ooo     DorsoDuro3300, 30123, Venezia (tel.041 5201364)
Effettivamente il quarto campo riprende il contenuto dei primi tre ma non vedo
altra soluzione. Se uno dei campi fosse immagine il controllo di unicita' non
protrebbe essere effettuato da FM. Potresti ovviare inserendo una descrizione
dell'immagine in un ulteriore campo e utilizzare questa per il controllo.
Esiste tuttavia un'altra soluzione che pero' presuppone comununque la creazione di
un quarto campo, questa volta calcolato, avente la medesima formula dello script.
Successivamente crei uno script con un loop che confronti il dato del campo
calcolato con tutti i campi degli altri records (la minestra e' sempre la stessa).
Per quanto mi sia sforzato non ho trovato altre soluzioni al tuo quesito.
Ciao


 avviserà se la ricorrenza e' doppia.
Ho provato a mettere in pratica il tuo suggerimento e funziona ma:
1 - bisogna ogni volta lanciare lo script per verificare l'esistenza di
quella combinazione di campi;
2 - la verifica fallisce se lo script viene lanciato all'esterno del
campo di controllo del record da verificare, ma se il campo e'
nascosto?!?!;
quindi non va bene neanche per verificare la bonta' di un archivio
preesistente.
Insomma io vorrei che la verifica venisse fatta automaticamente man mano
che si inseriscono i campi la cui combinazione deve esser unica...


 Ho trovato uno script che fa al tuo caso:
poni dupFile a "Duplicate Records Database" -- stores the name of the
database
poni dupCheck a "Unique ID" -- stores the name of the duplicate checking
field
metti "" dentro lastRecord --sets up the variable lastRecord
metti 0 dentro numDeleted --sets up the variable numDeleted
utilizza l'applicazione "FileMaker Pro" --activates FileMaker Pro
        attiva
        mostra ogni record di database dupFile
        ordina formato 1 per campo dupCheck
        metti (conta record di database dupFile) dentro recordCount
--counts records
        ripeti per |i| da recordCount a 1 col passo -1
                metti cella dupCheck di record |i| dentro thisRecord
--copies record
                se thisRecord = lastRecord allora --compares record 
                        elimina record |i| --if duplicate, deletes
record
                        metti 1 + numDeleted dentro numDeleted
                altrimenti
                        metti thisRecord dentro lastRecord
                fine se
        fine di ripeti
        finestra di messaggio (numDeleted come stringa) & ¬
                " records were deleted" pulsanti {"OK"} pulsante
proposto 1
        --displays number of records deleted
fine utilizza
Per utilizzarlo devi mettere il nome del file al posto di "duplicate
records database" e il nome del campo per "unique ID" tante volte quanti
sono i campi( es poni dupCheck a "nome"
                 poni dupCheck a "cognome")
Quindi con script maker fai uno script :"esegui Applescript" incollando
il testo dello script; 
Ho provato e funziona
ciao
Oscar Toni

 il testo dello script; 
Ho osservato attentamente il tuo script ma (confesso che non conosco
AppleScript) ho delle perplessita':
1) come faccio a porre la stessa variabile DupCheck contemporaneamente a
"nome" e " cognome"?
2) lo script confronta interi records non solo i campi incriminati,
ovvero non intercetta records diversi con la medesima combinazione di
campi che voglio sia unica.
ancora una parola: cosa si intende per "cella" in 
-metti cella dupCheck di record |i| dentro thisRecord-?
ciao


 ho trovato altre soluzioni al tuo quesito. Ciao
Ho trovato sulla famosa guida presa in edicola questa soluzione:
NOTA: per semplicita' si suppone di dover controllare l'esistenza di
doppioni in un archivio "rubrica" in cui si vuole che la coppia di campi
"nome" e "cognome" identifichi univocamente una scheda.
1) si costruisce un campo "servizio" di tipo numero con opzione di
inserimento automatico con "numero di serie"
questo serve in pratica per costringere le schede a differenziarsi tutte
le une dalle altre per almeno il campo "servizio"
2) si costruisce un campo "chiave" di tipo calcolato con formula
nome&cognome.
questo serve ad individuare le informazioni che vogliamo siano
necessarie e sufficienti per individuare ogni singola scheda
3) si costruisce una relazione "doppioni" tra l'archivio "rubrica" e se'
stesso collegando tra loro i rispettivi campi "chiave".
4) si costruisce un nuovo campo calcolato di nome "duplicato?" con
formula if(servizio=doppioni::servizio;0;1)
Il risultato e' che nel campo "duplicato?" di un record compare 0 se
quel record non ha doppioni oppure e' il primo di una serie di doppioni,
mentre compare 1 se e' un doppione successivo.
In pratica se ci sono due record con nome Mario e cognome Rossi, il
primo viene con campo "duplicato?" 0 mentre il secondo viene con 1.
mi sono spiegato?
