Criar “formas complexas” em FileMaker - é mesmo possível?
Pergunta
I foram convidados a olhar para FileMaker para criar um aplicativo de banco de dados muito simples. A aplicação irá lidar com informações de contato, algumas informações sobre eventos organizados pela organização e - e isso é onde eu estou atualmente lutando -. Informação de RSVP que ligam os contatos e eventos, bem como lojas de alguns dados sobre o pagamento
O que eu gostaria de usar algum tipo de formulário onde o usuário começa a procurar um contacto (qualquer combinação de primeira apelido /) e um evento (qualquer combinação de nome / data), selecione cada de duas respectivas listas (onde todas as outras informações é exibida, bem como, para distinguir os resultados), acrescentar algumas informações adicionais e clique em enviar.
O mais próximo que eu comecei até agora é um formulário onde o usuário pode inserir um ContactId e EventId manualmente, o que significa que ele / ela primeiro tem que ir para outro ponto de vista, procurar os registros, e copiar / colar o id números.
-
Não há realmente nenhuma maneira de se aproximar de minha visão usando FileMaker?
-
Será que uma opção melhor ser a construção de um novo aplicativo, personalizado usando, por exemplo, C # e MsSQL?
-
Se sim, como faço para vender isso para o meu contratante? Como isso seria, nesse caso, a minha primeira aplicação comercial, não é, obviamente, um "fator de segurança" que fala a favor de um produto estabelecido. E então nós nem sequer mencionou que o custo provavelmente aumentar, assim como o desenvolvimento de um novo aplicativo a partir do zero levaria muito mais tempo.
Nota: Eu não tenho nenhuma experiência anterior com FileMaker. Eu tentei ler a documentação, mas eu não tenho sido capaz de encontrar qualquer tutoriais que me levam mais perto de minhas necessidades específicas. Eu estou bastante experiente em MSSQL, então eu sei isso e aquilo sobre o gerenciamento de banco de dados em geral -. Não apenas em FileMaker
Solução
Há um monte de maneiras de fazer isso. Esta é uma maneira rápida de fazê-lo funcionar.
Vamos dizer que você tem duas tabelas como este:
Contacts Events
-------- --------
ContactID EventID
FirstName EventDate
LastName EventDetails
Criar uma nova tabela de ligação entre eles que também armazena a informação de RSVP extra que você quiser.
RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo
Criar uma tabela FORM
FORM
--------
ContactSearch
cContactMatch = Calculation, If(isEmpty(ContactSearch) ; "ALL" ; ContactSearch)
EventSearch
cEventMatch = Calculation, If(isEmpty(EventSearch) ; "ALL" ; EventSearch)
Adicione os seguintes campos para os contatos e eventos tabelas:
Contacts
--------
cMatchField = Calculation, Stored, (FirstName + NEWLINE + LastName + NEWLINE + ALL + NEWLINE + Firstname LastName)
Events
--------
cMatchField = Calculation, Stored, (EventDate + NEWLINE + EventDetails + NEWLINE + ALL)
Isto significa que o cMatchField para contatos será algo parecido com isto:
John
Smith
John Smith
ALL
No diagrama de relacionamento, conectar as tabelas como este:
FORM
--------
cContactMatch = CONTACTS/cMatchText
cEventMatch = EVENTS/cMatchText
Crie um formulário de layout chamado com base na tabela FORM.
Adicione os campos ContactSearch e EventSearch ao layout. Adicione o campo PaymentInfo.
Adicionar dois portais para o layout, um para a tabela de contatos, um para os eventos.
Por padrão, você deve ver todos os registros em cada um desses portais.
Escrever um script, ou usar um gatilho roteiro, que atualizará o layout sempre que um desses campos de pesquisa é encerrado / Modificado. Isso deve atualizar os portais e mostrar-lhe os registros relacionados que você está interessado.
Adicionar um botão para cada linha nos portais e chamar um script que define uma variável global para que portal linhas ID.
Por exemplo:
Script: Set Selected Contact ID
Set Variable ($$ContactID ; Contacts::ContactID)
Script Set Selected Event ID
Set Variable ($$EventID ; Events::EventID)
Adicionar outro botão para o layout e um novo 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
Ufa.
E você deve estar de volta, pronto para procurar contatos, eventos, e "Enviar" a forma de criar mais RSVPs.
FileMaker é divertido, né?