4th Dimension Learning: De Basis
Jeff Hopkins is een 4D-partner, Expert FileMaker Pro-ontwikkelaar, eigenaar van HPO SOFT en oprichter van de non-profit Association of Database Developers, Inc. Wanneer hij niet een van de bovenstaande rollen vervult, werkt hij onvermoeibaar om anderen te helpen op diverse databasediscussielijsten.
Belangrijkste inzichten
- Bouw in 4D in een specifieke volgorde: Tabellen → Gegevensvelden → Formulieren → Berekeningen/Methoden. Vooruitlopen zorgt voor herwerk.
- U kunt een complete, nuttige flat-file-applicatie met één tabel bouwen zonder één enkele methode te schrijven — met uitzondering van één optionele berekening (een “Objectmethode”).
- De menubalk van 4D’s ontwerpmodus verandert afhankelijk van welk venster geopend is. Als het Structuurmenu verdwijnt, sluit dan alle geopende vensters (niet de 4D-applicatie zelf) en het keert terug.
- 4D en FileMaker Pro (FMP) delen een low-code-filosofie, maar 4D legt vooraf meer structuur bloot — waardoor de volgorde van aanmaak belangrijker is.
- Maak tijdens het leren meerdere kleine testdatabases in plaats van één grote; het gedrag van 4D is soms verrassend, en experimenteren is de snelste manier om dit te internaliseren.
- Zodra u de basisprincipes van flat-files hier onder de knie heeft, worden gerelateerde bestanden, methoden, berekeningen, runtimes, gecompileerde versies en webhosting allemaal bereikbaar.
i. Introductie
Zoals aangegeven in Deel I, zal in het volgende document 4D staan voor 4th Dimension en FMP voor FileMaker Pro. Het volgende document is gemaakt op een Macintosh. Hoewel er kleine verschillen kunnen zijn in sommige schermafbeeldingen bij het gebruik van 4D voor Windows, zou dezelfde procedure op beide platforms moeten werken.
Velen zullen zeggen dat je een programmeur moet zijn om 4D-programma’s te maken. Hoewel dat zeker niet schaadt, kun je, net als bij FMP, veel doen zonder ooit in de programmering of het schrijven van scripts te duiken. Dit deel neemt de lezer mee door de ontwikkeling van een eenvoudig flat-file met één tabel. Met uitzondering van één eenvoudige berekening (een zogenaamde “Objectmethode”) zullen er geen methoden of berekeningen zijn.
De reden dat ik dit doe, is omdat u, zodra u het volgende onder de knie heeft, kunt doorgaan naar de echt leuke dingen — gerelateerde bestanden, methoden, berekeningen, runtimes, gecompileerde versies en webhosting.
Ik heb gemerkt dat het in het begin het moeilijkst is om het overzicht te bewaren van waar u zich in 4D bevindt, omdat 4D niet altijd doet wat u zou verwachten. Ik raad aan om meerdere testdatabases te maken, zoals beschreven in dit deel, en te experimenteren met verschillende opties. In sommige gevallen zult u aangenaam verrast zijn, maar in andere gevallen kunt u in eerste instantie gefrustreerd raken.
Deel II laat zien hoe u:
Gerelateerd: — Een spreadsheet-eenvoudige interface bovenop een echte relationele database, met automatiseringen, weergaven en deelbare interfaces..
- Een nieuwe database maakt
- 4D-database-eigenschappen instelt
- Tabellen maakt
- Gegevensvelden maakt
- Formulieren maakt
- Een waardenlijst (keuzelijst) maakt
- Voorbeeldgegevens invoert
Volgorde van database-aanmaak
Het zal de nieuwe 4D-ontwikkelaar helpen om de juiste volgorde van het maken van een 4D-database te begrijpen. Eerst moet er een Tabel worden aangemaakt. Vervolgens worden de Gegevensvelden aangemaakt. Ten slotte worden de Invoer- en uitvoerformulieren gemaakt. Berekeningen/Methoden worden gemaakt voor de gegevensvelden.
Opmerking: Er zijn nog veel andere details die moeten worden afgehandeld, maar het bovenstaande is de basis voor wat in dit deel wordt behandeld.
Deze volgorde is niet willekeurig — het weerspiegelt hoe de structuureditor van 4D is opgebouwd. Een formulier is een lay-out van een tabel, dus de tabel moet bestaan voordat het formulier ernaar kan verwijzen. Een gegevensveld hoort bij een tabel, dus de tabel moet bestaan voordat het veld dat kan. Een berekening of methode verwijst doorgaans naar velden, dus die velden moeten eerst bestaan. Als u probeert in de verkeerde volgorde te werken, zal 4D u tegenhouden of u dwingen terug te gaan.
Als u aan het winkelen bent: — Een die aansluit op de bredere Zoho-suite en prijzen per gebruiker in plaats van per app..
Een handig mentaal model: denk aan de structuur (tabellen en velden) als het skelet en de formulieren als de huid. U kunt geen huid over een skelet draperen dat nog niet is gebouwd. Methoden en berekeningen zijn de spieren die het skelet laten bewegen — en die komen als laatste, omdat ze afhankelijk zijn van de kennis van hoe het skelet eruitziet.
Waarom de volgorde in de praktijk belangrijk is
- Tabellen eerst — een tabel is de container voor een categorie records (klanten, facturen, producten). Alles andere hangt hieraan vast.
- Velden tweede — velden definiëren wat u daadwerkelijk opslaat: een naam, een datum, een prijs, een status. Bepaal hier zorgvuldig de veldtypen, want het later wijzigen van een veldtype kan bestaande gegevens ongeldig maken.
- Formulieren derde — formulieren zijn de manier waarop mensen de gegevens zien en bewerken. U kunt meerdere formulieren bouwen voor dezelfde tabel (een invoerformulier, een lijstweergave, een geprinte rapportindeling).
- Methoden en berekeningen als laatste — deze automatiseren het gedrag. Omdat ze verwijzen naar velden en formulieren, voorkomt het bouwen ervan als laatste dat er gebroken referenties ontstaan.
Als u uit een spreadsheet-achtergrond komt, is de verleiding groot om direct gegevens te gaan typen. Weersta dat. In 4D, zoals in elke relationele database, is de structuur het fundament en worden de gegevens daarna ingegoten.
Teruggaan om een tabel toe te voegen of te bewerken
Het kan zijn dat u terug wilt gaan om nieuwe gegevensvelden of een nieuwe tabel of een formulier toe te voegen. Dit is niet zo eenvoudig als men zou verwachten.
Stel dat u een formulier hebt bewerkt en besluit dat u nog een tabel wilt toevoegen. Normaal gesproken zou u in de ontwerpmodus “Nieuwe tabel” selecteren in het Structuurmenu. Maar wacht, er is geen Structuurmenu. Wat is er gebeurd?
4D heeft de menubalk van de ontwerpmodus gewijzigd. U moet alle 4D-vensters sluiten (niet 4D, alleen de geopende vensters) en het Structuurmenu zal opnieuw verschijnen. Nu kunt u de tabellen zien om deze te bewerken of om nieuwe aan te maken. U kunt nu ook gegevensvelden bewerken en maken.
Om nieuwe formulieren te bewerken of te maken is het menu Tools in de ontwerpmodus altijd aanwezig, zodat dat geen verwarring zou mogen veroorzaken.
Dit is een van de meest voorkomende verwarringspunten voor nieuwe 4D-ontwikkelaars, en het is de moeite waard om te begrijpen waarom het gebeurt, in plaats van alleen maar de workaround uit het hoofd te leren. 4D gebruikt een contextgevoelige menubalk: de menu’s die u ziet, weerspiegelen het soort venster dat momenteel de focus heeft.
Wanneer een formuliervenster geopend is, gaat 4D ervan uit dat u aan een formulier werkt en worden formulierrelevante menu’s weergegeven. Het Structuurmenu – dat tabellen en velden bestuurt – wordt alleen weergegeven als er geen formulier- (of ander gespecialiseerd) venster geopend is.
Praktische tips voor het navigeren door de ontwerpmodus
- Bij twijfel: alles sluiten. Door alle geopende vensters te sluiten, keert u terug naar de “home”-status waar het volledige Structuurmenu beschikbaar is.
- Sluit 4D niet af. Het sluiten van vensters is niet hetzelfde als het afsluiten van de applicatie. Uw database blijft open; alleen de bewerkingsvensters sluiten.
- Sla op voordat u sluit. Als u niet-opgeslagen formulierbewerkingen heeft, sluit u het venster bewust en bevestigt u de opslagprompt in plaats van het programma geforceerd af te sluiten.
- Gebruik het menu Tools voor formulieren. Omdat het menu Tools altijd aanwezig is in de ontwerpmodus, is het bewerken van formulieren het enige gebied waar de “sluit-alles-dans” niet nodig is.
- Verwacht dat dit in het begin tegennatuurlijk aanvoelt. De meeste ontwerptools hebben een statische menubalk. De dynamische menubalk van 4D is meer contextbewust, maar het duurt een sessie of twee voordat het niet meer verrassend is.
Zodra u de regel internaliseert — de menubalk volgt het venster — verdwijnt de verwarring grotendeels. U stopt met zoeken naar een ontbrekend menu en vraagt u in plaats daarvan af: “Wat voor soort venster is er momenteel open?”
Veldtypen en waardenlijsten kiezen
Hoewel dit deel bewust programmeren vermijdt, verdienen twee ontwerpbeslissingen echt nadenken omdat ze later moeilijk ongedaan te maken zijn: veldtypen en waardenlijsten.
Veldtypen
Wanneer u een gegevensveld maakt, kiest u welk soort gegevens het bevat. De gebruikelijke categorieën in 4D (en in de meeste databases uit dit tijdperk) zijn:
- Tekst / String — namen, adressen, vrije notities. Flexibel, maar niet numeriek sorteerbaar.
- Getal — hoeveelheden, prijzen, ID’s. Sorteerbaar en bruikbaar in berekeningen.
- Datum — kalenderdata. 4D slaat deze op een manier op die datumberekeningen en sorteren ondersteunt.
- Tijd — kloktijden en duur.
- Boolean — een ja/nee- of waar/onwaar-vlag.
- Afbeelding — afbeeldingen of graphics die bij het record zijn opgeslagen.
Een praktische regel: kies het meest specifieke type dat past. Als een waarde een getal is, sla deze dan op als een getal en niet als tekst — anders zullen de sortering en berekeningen zich onverwacht gedragen. Als een waarde een datum is, sla deze dan op als een datum, zodat 4D deze chronologisch kan sorteren in plaats van alfabetisch.
Waardenlijsten (Keuzelijsten)
Een waardenlijst (ook wel een keuzelijst genoemd) is een vooraf gedefinieerde reeks opties waaruit een gebruiker kan kiezen in plaats van te typen. Het is een van de meest waardevolle low-code-functies in 4D omdat het:
- Typefouten voorkomt — “Active”, “active” en “Actve” worden onmogelijk.
- Gegevensinvoer versnelt — kiezen uit een lijst in plaats van typen.
- Consistentie afdwingt — elk record gebruikt dezelfde woordenschat, wat rapportage en sortering betrouwbaar maakt.
Waardenlijsten kunnen statisch zijn (een vaste lijst die u zelf typt, zoals een lijst met Amerikaanse staten of een set statuscodes) of dynamisch (gebaseerd op gegevens, zoals een lijst met bestaande klantnamen). Voor een eerste flat-file database is een statische lijst het eenvoudigste en meest leerzame uitgangspunt.
Hoe te beslissen: veldtype vs. waardenlijst
| Beslissing | Kies dit wanneer… | Let op voor… |
|---|---|---|
| Tekstveld | De waarde vrije vorm en onvoorspelbaar is | Kan niet numeriek sorteren; gevoelig voor typefouten |
| Getalveld | De waarde wordt gebruikt in berekeningen of numerieke sortering | Sla ID’s niet op als tekst als u ze wilt sorteren |
| Datumveld | De waarde een kalenderdatum is | Opmaakverschillen tussen platforms |
| Boolean-veld | De waarde echt uit twee toestanden bestaat | Gebruik het niet voor statussen met drie toestanden |
| Statische waardenlijst | De opties vaststaan en bekend zijn | Moet handmatig worden bewerkt als opties wijzigen |
| Dynamische waardenlijst | De opties komen uit bestaande records | Afhankelijk van de vraag of de gegevens al schoon zijn |
Voorbeeldgegevens invoeren
Zodra de tabellen, velden, formulieren en waardenlijsten op hun plek staan, is de laatste stap in dit deel het invoeren van voorbeeldgegevens. Dit is geen tijdverdrijf — het is een validatiestap. Het invoeren van een handvol realistische records brengt onmiddellijk ontwerpproblemen aan het licht:
- Een veld dat een getal had moeten zijn, accepteert tekst.
- In een waardenlijst ontbreekt een optie die je daadwerkelijk nodig hebt.
- Een formulier is zo ingedeeld dat het invoeren van gegevens onhandig is.
- Een datumveld wordt weergegeven in een onverwacht formaat.
Het vroegtijdig invoeren van voorbeeldgegevens, terwijl de structuur nog vers is en gemakkelijk te wijzigen, is veel goedkoper dan het ontdekken van dezelfde problemen nadat u honderden echte records hebt ingevoerd. Behandel de voorbeeldgegevens als een testharnas voor uw ontwerp.
Dankbetuigingen
Speciale dank aan: James Fortier voor het aanleveren van enkele bronnen en het helpen bij het proeflezen van het document.
Copyright © 1994-2000 HPO Soft. Alle rechten voorbehouden.
Veelgestelde vragen
Waarom verdwijnt het Structuurmenu in de 4D Design-modus?
4D gebruikt een contextgevoelige menubalk, dus de weergegeven menu’s zijn afhankelijk van welk venster momenteel de focus heeft. Wanneer een formuliervenster (of een ander gespecialiseerd venster) geopend is, verbergt 4D het Structuurmenu en worden in plaats daarvan formulierrelevante menu’s weergegeven. Sluit alle geopende vensters – maar niet de 4D-applicatie zelf – en het Structuurmenu verschijnt opnieuw, zodat u tabellen en velden kunt bewerken.
Moet ik een programmeur zijn om een 4D-database te bouwen?
Nee. Net als bij FileMaker Pro kunt u in 4D veel bereiken zonder ooit een methode of script te schrijven. In dit deel wordt een complete flat-file-applicatie met één tabel gebouwd zonder enige methode, afgezien van één optionele berekening die een Objectmethode wordt genoemd. Programmeren wordt later waardevol wanneer u overgaat naar gerelateerde bestanden, automatisering en webhosting.
Wat is de juiste volgorde voor het maken van een 4D-database?
Maak eerst de Tabel, vervolgens de Gegevensvelden, daarna de Invoer- en Uitvoerformulieren, en ten slotte de Berekeningen/Methoden voor de gegevensvelden. Deze volgorde is van belang omdat formulieren verwijzen naar tabellen, velden bij tabellen horen en methoden doorgaans naar velden verwijzen – dus bouwen in de verkeerde volgorde dwingt tot terugwerken of leidt tot verbroken verwijzingen.
Wat is een Waardenlijst in 4D en waarom zou ik er een gebruiken?
Een Waardenlijst (ook wel een keuzelijst genoemd) is een vooraf gedefinieerde reeks opties waaruit een gebruiker kiest in plaats van vrije tekst te typen. Het voorkomt typefouten, versnelt de gegevensinvoer en dwingt consistentie tussen records af, wat op zijn beurt het sorteren en rapporteren betrouwbaar maakt. Waardenlijsten kunnen statisch zijn (een vaste lijst die u definieert) of dynamisch (gebaseerd op bestaande gegevens).
Moet ik getallen en datums opslaan als tekstvelden?
Nee – kies het meest specifieke veldtype dat bij de gegevens past. Getallen moeten worden opgeslagen als getalvelden zodat ze correct worden gesorteerd en berekend, en datums moeten worden opgeslagen als datumvelden zodat 4D ze chronologisch sorteert in plaats van alfabetisch. Het opslaan van numerieke waarden of datumwaarden als tekst is een veelvoorkomende beginnersfout die later zorgt voor verwarrend sorteer- en berekeningsgedrag.
Waarom meerdere testdatabases maken in plaats van één?
4D gedraagt zich niet altijd zoals een nieuwkomer verwacht, dus experimenteren in kleine, wegwerpbare testdatabases stelt u in staat om verschillende opties uit te proberen zonder echt werk te riskeren. Sommige gedragingen zult u in het begin prettig handig vinden en andere frustrerend, en de snelste manier om het verschil te leren is door praktijkgerichte herhaling in een veilige sandbox.
Probeer FileMaker 45 dagen gratis
Het langlopende relationele databaseplatform voor teams die aangepaste apps nodig hebben op desktop, internet en mobiel vanuit één bestand.