Pregunta

Me han pedido que busque en FileMaker para crear una aplicación de base de datos bastante simple. La aplicación gestionará la información de contacto, cierta información sobre los eventos organizados por la organización y, y aquí es donde estoy luchando, la información de RSVP que vincula los contactos y eventos, así como almacena algunos datos sobre el pago.

Lo que me gustaría usar es algún tipo de formulario en el que el usuario pueda buscar un contacto (cualquier combinación de nombre / apellido) y un evento (cualquier combinación de nombre / fecha), seleccione cada uno de dos listas respectivas (donde también se muestra toda la otra información, para distinguir los resultados), agregue información adicional y presione enviar.

Lo más cercano que he llegado hasta ahora es un formulario donde el usuario puede ingresar un ContactId y EventId manualmente, lo que significa que primero tiene que ir a otra vista, buscar los registros y copiar / pegar la identificación números.

  • ¿Realmente no hay forma de acercarme a mi visión usando FileMaker?

  • ¿Sería una mejor opción construir una nueva aplicación personalizada usando, por ejemplo, C # y MsSQL?

  • Si es así, ¿cómo vendo esto a mi contratista? Como esta sería mi primera aplicación comercial en ese caso, obviamente hay un "factor de seguridad". que habla a favor de un producto establecido. Y luego ni siquiera hemos mencionado que el costo probablemente aumentaría, ya que desarrollar una nueva aplicación desde cero tomaría mucho más tiempo.

Nota: No tengo experiencia previa con FileMaker. He intentado leer la documentación, pero no he podido encontrar ningún tutorial que me acerque a mis necesidades específicas. Tengo bastante experiencia en MsSQL, así que sé esto y aquello sobre la administración de bases de datos en general, pero no en FileMaker.

¿Fue útil?

Solución

Hay muchas formas de hacerlo. Esta es una forma rápida de hacer que funcione.

Digamos que tiene dos tablas como esta:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails

Cree una nueva tabla de enlaces entre ellos que también almacene la información adicional de RSVP que desee.

RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo

Crear una tabla FORM

FORM
--------
ContactSearch
cContactMatch = Calculation, If(isEmpty(ContactSearch) ; "ALL" ; ContactSearch)
EventSearch
cEventMatch = Calculation, If(isEmpty(EventSearch) ; "ALL" ; EventSearch)

Agregue los siguientes campos a las tablas Contactos y Eventos:

Contacts
--------
cMatchField = Calculation, Stored, (FirstName + NEWLINE + LastName + NEWLINE + ALL + NEWLINE + Firstname LastName) 

Events
--------
cMatchField = Calculation, Stored, (EventDate + NEWLINE + EventDetails + NEWLINE + ALL)

Esto significa que cMatchField for Contacts se verá así:

John
Smith
John Smith
ALL

En el diagrama de relación, conecte las tablas de esta manera:

FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText

Cree un diseño llamado FORMULARIO basado en la tabla FORM.

Agregue los campos ContactSearch y EventSearch al diseño. Agregue el campo PaymentInfo.

Agregue dos PORTALES al diseño, uno para la tabla Contactos, uno para los Eventos.

De forma predeterminada, debería ver todos los registros en cada uno de estos portales.

Escriba una secuencia de comandos, o use un activador de secuencia de comandos, que actualice el diseño cada vez que uno de esos campos de búsqueda salga / se modifique. Esto debería actualizar los portales y mostrarle los registros relacionados que le interesen.

Agregue un botón a cada fila en los portales y llame a un script que establezca una variable global para ese ID de filas del portal.

Por ejemplo:

Script: Set Selected Contact ID
Set Variable ($ContactID ; Contacts::ContactID)

Script Set Selected Event ID
Set Variable ($EventID ; Events::EventID)

Agregue otro botón al diseño y un nuevo 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

Uf.

Y debería estar de regreso, listo para buscar Contactos, Eventos y " Enviar " el formulario para crear más RSVP.

FileMaker es divertido, ¿eh?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top