Creare "forme complesse" in FileMaker - è persino possibile?
Domanda
Mi è stato chiesto di cercare FileMaker per creare un'app di database piuttosto semplice. L'applicazione gestirà le informazioni di contatto, alcune informazioni sugli eventi ospitati dall'organizzazione e - ed è qui che sto attualmente lottando - le informazioni RSVP che collegano i contatti e gli eventi, oltre a memorizzare alcuni dati sul pagamento.
Quello che vorrei usare è un tipo di modulo in cui l'utente può cercare un contatto (qualsiasi combinazione di nome / cognome) e un evento (qualsiasi combinazione di nome / data), selezionare ciascuno da due rispettivi elenchi (dove vengono visualizzate anche tutte le altre informazioni, per distinguere i risultati), aggiungi alcune informazioni aggiuntive e premi invia.
Il più vicino che ho ottenuto finora è un modulo in cui l'utente può inserire manualmente un ContactId e EventId, il che significa che deve prima andare in un'altra vista, cercare i record e copiare / incollare l'id numeri.
-
Non c'è davvero modo di avvicinarmi alla mia visione usando FileMaker?
-
Un'opzione migliore sarebbe quella di creare una nuova app personalizzata usando ad esempio C # e MsSQL?
-
In tal caso, come posso venderlo al mio appaltatore? Poiché in questo caso si tratterebbe della mia prima applicazione commerciale, esiste ovviamente un "fattore di sicurezza". che parla a favore di un prodotto affermato. E poi non abbiamo nemmeno menzionato che il costo probabilmente aumenterebbe, poiché lo sviluppo di una nuova app da zero richiederebbe molto più tempo.
Nota: non ho precedenti esperienze con FileMaker. Ho provato a leggere la documentazione, ma non sono stato in grado di trovare tutorial che mi avvicinino alle mie esigenze specifiche. Ho una discreta esperienza in MsSQL, quindi conosco questo e quello sulla gestione del database in generale, ma non su FileMaker.
Soluzione
Ci sono molti modi per farlo. Questo è un modo rapido per farlo funzionare.
Supponiamo che tu abbia due tabelle come questa:
Contacts Events
-------- --------
ContactID EventID
FirstName EventDate
LastName EventDetails
Crea tra loro una nuova tabella di collegamenti che memorizza anche le informazioni RSVP extra che desideri.
RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo
Crea una tabella FORM
FORM
--------
ContactSearch
cContactMatch = Calculation, If(isEmpty(ContactSearch) ; "ALL" ; ContactSearch)
EventSearch
cEventMatch = Calculation, If(isEmpty(EventSearch) ; "ALL" ; EventSearch)
Aggiungi i seguenti campi alle tabelle Contatti ed Eventi:
Contacts
--------
cMatchField = Calculation, Stored, (FirstName + NEWLINE + LastName + NEWLINE + ALL + NEWLINE + Firstname LastName)
Events
--------
cMatchField = Calculation, Stored, (EventDate + NEWLINE + EventDetails + NEWLINE + ALL)
Ciò significa che cMatchField for Contacts avrà un aspetto simile al seguente:
John
Smith
John Smith
ALL
Nel diagramma delle relazioni, collega le tabelle in questo modo:
FORM
--------
cContactMatch = CONTACTS/cMatchText
cEventMatch = EVENTS/cMatchText
Crea un layout chiamato FORM basato sulla tabella FORM.
Aggiungi i campi ContactSearch ed EventSearch al layout. Aggiungi il campo PaymentInfo.
Aggiungi due PORTALI al layout, uno per la tabella Contatti, uno per gli Eventi.
Per impostazione predefinita, dovresti vedere tutti i record in ciascuno di questi portali.
Scrivi uno script o usa un trigger di script che aggiorna il layout ogni volta che uno di questi campi di ricerca viene chiuso / modificato. Questo dovrebbe aggiornare i portali e mostrarti i relativi record che ti interessano.
Aggiungi un pulsante a ogni riga nei portali e chiama uno script che imposta una variabile globale su quell'ID di righe del portale.
Ad esempio:
Script: Set Selected Contact ID
Set Variable ($ContactID ; Contacts::ContactID)
Script Set Selected Event ID
Set Variable ($EventID ; Events::EventID)
Aggiungi un altro pulsante al layout e un nuovo script.
Script: Create RSVP
# Check that a contact and event have been selected
If(isEmpty($ContactID) or isEmpty($EventID)
Exit Script
End If
# Get the payment info that has been entered
Set Variable ($PaymentInfo ; FORM::PaymentInfo)
# Create the RSVP Link record
Go To Layout(RSVP)
Create New Record
Set Field(fk_ContactID ; $ContactID)
Set Field(fk_EventID ; $EventID)
Set Field(PaymentInfo ; $PaymentInfo)
Commit Records
Go to Layout (Original Layout)
# Clear the search fields
Set Field(PaymentInfo; "")
Set Field(ContactSearch; "")
Set Field(EventSearch; "")
Set Variable($ContactID; "")
Set Variable($EventID; "")
Commit Records
Refresh Screen
Uff.
E dovresti essere di ritorno, pronto a cercare Contatti, Eventi e " Invia " il modulo per creare più RSVP.
FileMaker è divertente, eh?