EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Welkom bij de introductie van Visual DataFlex Data Access Worldwide is de leverancier van Visual DataFlex. Sinds 1976 levert Data Access gereedschappen om database toepassingen te bouwen. In de huidige versie wordt voor het eerst een speciale ‘Personal Edition’ geleverd. Deze gratis, geheel functionele versie mag alleen voor noncommerciële- en privédoeleinden worden gebruikt. Deze introductie heeft tot doel om u wegwijs te maken in de eerste beginselen van het programmeren met Visual DataFlex Studio. We doen het aan de hand van een eenvoudige case. Eerst maken we een Windows toepassing, gevolgd door een Internet toegang op de database. Daarbij zal het zoveel mogelijk beperkt blijven tot de mogelijkheden die middels drag & drop al gemaakt kunnen worden. Schroom echter niet om u verder in de achterliggende programmeertaal te verdiepen! We zetten graag eerst een paar concepten voor u op een rijtje. Welke database U kunt met elke populaire database werken. De combinatie van Visual DataFlex Personal met MS Sql Express is bijvoorbeeld erg krachtig. Visual DataFlex wordt met nodige database drivers geleverd, maar voor deze introductie gaan we uit van de DataFlex database. Later kan de database gemakkelijk omgezet worden naar een ander type, zelfs het converteren van alle gegevens gaat dan automatisch. Databases worden onderhouden in de DataBaseBuilder. De eerste vier tabpagina’s zijn er om de database structuur te onderhouden. Workspace Voordat u een nieuw project begint dient eerst een omgeving te worden gemaakt op uw PC, dit is een workspace. Op de harde schijf wordt dan een aantal mappen gemaakt waarin de database, de broncode en dergelijke zullen worden opgeslagen. In een workspace worden een of meerdere projecten gemaakt. Dit zijn de uiteindelijke programma’s, of ‘executables’. De workspace- en projectinformatie wordt in de Studio weergegeven in de Workspace Explorer. Object Georiënteerd Visual DataFlex is een object georiënteerde programmeertaal. Dit betekent dat voor veel voorkomende onderdelen die een ontwikkelaar nodig zal hebben er een klasse bestaat. Deze klasse is eigenlijk een beschrijving van hoe zo’n onderdeel eruit ziet, wat het precies doet, en in het programma wordt een object van een bepaalde klasse gebruikt. Het voordeel hiervan is, dat er een heleboel details niet meer door u geprogrammeerd hoeven te worden en u zich kunt concentreren op de inhoudelijke functionaliteit van de applicatie.
www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Data Dictionary Bij het invoeren van gegevens wil men altijd dat de invoer zo correct en consistent mogelijk wordt ingevoerd. Voordat een record wordt opgeslagen, willen we vaak de gegevens valideren. Een voorbeeld is dat een postcode in Nederland altijd uit 4 cijfers, een spatie en twee (hoofd)letters bestaat. Of bijvoorbeeld dat een klant niet meer mag bestellen dan een bepaalde kredietlimiet toestaat. Hier wordt vaak ook wel naar gerefereerd als ‘Business Rules’. Het is het handigst om al deze regels op een plek bij te houden; dat gebeurt in de Data Dictionary. Het voordeel is dat deze regel dan voor elke programma zal worden toegepast en dus maar een keer hoeft te worden geprogrammeerd en ook bij wijzigingen alleen op die ene plek hoeft te worden aangepast. Een ander voordeel is, dat wanneer we later bijvoorbeeld op MS Sql over zouden gaan, de regels gewoon blijven werken! De Data Dictionary Builder is onderdeel van de DataBase Builder. De laatste vier tabpagina’s zijn er om Data Dictionaries te onderhouden. Een Case: Media uitleen We gaan een kleine database toepassing bouwen die we Media Uitleen gaan noemen. We gaan een tabel maken, waarin we al onze CD’s, DVD’s, boeken en degelijke willen gaan opslaan. We gaan ook een tabel maken om Personen in bij te houden. Vervolgens verbinden we deze twee tabellen zodat we van elk medium kunnen bijhouden of deze nog bij u zelf in de kast staat, of dat deze is uitgeleend aan een van uw kennissen. In het kort gaan we de volgende stappen uitvoeren: -
In Databas Builder maken we tabel ‘Media’. Geef het een unieke zoeksleutel en een aantal velden
om Auteur/Artiest, Type (CD, Boek, DVD) misschien ook prijs en aanschafdatum bij te houden. In de
tabel plaatsen we ook een veld PersoonID, om te kunnen koppelen naar de tabel Personen.
-
Maak tabel ‘Personen’. Ook deze krijgt weer een unieke sleutel en wordt gekoppeld aan Media.
Verder houden we adres, telefoon, geboortedatum en dergelijk bij van Personen.
-
In de Studio maken we eerst met behulp van de wizard een ‘Personen View’ om gegevens voor
Personen in te voeren. Een View in Visual DataFlex is een venster, een scherm om gegevens
in te voeren.
-
Op handmatige wijze, maar met drag & drop maken we een View om Media in te voeren. We
compileren en testen ons eerste resultaat.
-
Vervolgens wordt een aantal meer geavanceerde functies ingebouwd:
o
Zorgen dat het Media- en Personennummer automatisch door het systeem
worden gemaakt.
Zorg dat op zoekvelden gebruiksvriendelijke zoeklijsten (Selection Lists)
o
beschikbaar komen.
Zorg dat de gebruiker het veld Media.Type altijd op dezelfde manier invult, door er
o
een combobox met een vast aantal mogelijkheden voor vast te leggen.
Geef bij Media de mogelijkheid er een plaatje van het kaft, CD en dergelijke
o
bij op te slaan.
Maak de database toegankelijk via het Internet!
o
www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Getting Started! Start de Visual DataFlex Studio op, we gaan allereerst een nieuwe Workspace maken. Onder File in het menu starten we de keuze voor New Workspace… We geven de workspace een naam en in ons voorbeeld laten we de workspace op C:\Project\Media Uitleen opslaan.
We accepteren alle defaults (Next, Next…) en sluiten de wizard af. De workspace zal er uiteindelijk als volgt uit komen te zien:
www.visualdataflex.com
Visual
EVALUATIE GIDS VISUAL DATAFLEX
DataFlex
Omdat we alle defaults hebben geaccepteerd, zal de DataBase Builder automatisch gestart worden. En kunnen we beginnen met de tabel Personen te gaan maken.
Tip: Rechtsboven is het volgende icoon zichtbaar:
Dit geeft aan dat de (fysieke) tabel kan worden gewijzigd.
In de titelbalk staat ook ‘Exclusive’ en dat klopt: De bestanden kunnen op dat moment niet door een ander worden benaderd of in gebruik zijn, totdat de tabel weer wordt vrijgegeven. We gaan PersoonID het sleutelveld maken. Elk Persoonsrecord kan daar op worden teruggevonden. Geef voor het gemak dit veld ook dezelfde naam. Maak ook de overige velden aan, maar experimenteer gerust met extra velden, om bijvoorbeeld Schoenmaat of e-mail adres bij te houden? Om later snel Personen op te kunnen zoeken gaan we ook nog een paar Indexen aanmaken. Stel dat we het zoeken op Naam, Voornaam en Postcode mogelijk willen maken. We moeten er daarbij voor zorgen dat elke Index op zich uniek is. Deze afbeelding laat zien dat de Index 2 uit twee segmenten bestaat, nl. de Achternaam en de PersoonID. Deze laatste maakt de index uniek. Ook staat bij Achternaam de Ignore Case aan. Dit betekent dat als een gebruiker zoekt op ‘Jansen’ het voor de volgorde niet uitmaakt of dat bij het zoeken als ‘JANSEN’, ‘jansen’ of ‘Jansen wordt ingevoerd. We gaan nu naar de vijfde tabpagina, Column Settings, om eenvoudige validaties in de DataDictionary in te kunnen stellen.
www.visualdataflex.com
Visual
EVALUATIE GIDS VISUAL DATAFLEX
DataFlex
Als we het veld PersoonID selecteren, kunnen we hiervan instellen dat het een Key Field is. Dit betekent dat nadat dit record is opgeslagen, deze waarde niet meer veranderd mag worden. En dat willen we, zodat de referentiële integriteit bewaakt wordt. Maak zelf ook een paar Business Rules: -
Zorg dat het invullen van het veld Achternaam altijd verplicht is (Required)
-
Zorg dat Postcode en Plaats altijd in hoofdletters worden ingevoerd (Capslock)
Kies in het menu onder File, om de tabel op te slaan:
twee maal gevolgd door
‘OK’ en sluit DataBase Builder af om terug te keren naar de Studio. In de Studio in het menu kiezen we voor File, New, Project… en we maken het Windows project met de naam Media Uitleen aan. In de Studio wordt nu automatisch code gemaakt om mee te beginnen. We hoeven met deze code verder niks te doen. We kunnen nu een invoerscherm gaan maken en dat doen we eerst met de Data Entry Wizard. Klik hiervoor weer op File, dan New en nu op View / Report. Zoals u ziet, is dit een scherm van waaruit veel typen componenten kunnen worden gemaakt. We kiezen in dit geval dus voor het icoon ‘Data Entry Wizard’. En vullen de gegevens als volgt in: -
Het object krijgt de naam oPersonen, de bestandsnaam Personen en de omschrijving Personen.
-
We gaan een eenvoudig invoerscherm maken, Simple Form Entry View
-
We kiezen de tabel Personen (niet dat er veel keuze is op dit moment)
-
We laten alle velden (kolommen) op het scherm plaatsen. www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Door op twee plaatsen Tab’s in te voegen kunnen we een redelijk overzichtelijk scherm maken met de wizard. Het ziet er op het scherm dan zo uit:
Verder accepteren we alle defaults en keren na Finish weer terug in de Studio. Daar zien we het scherm dat de wizard voor ons heeft gemaakt. Dit is nu geheel te modelleren als u wilt, simpel door met de muis elementen te slepen en te verkleinen of vergroten. We adviseren op dit moment alleen een aanpassing te maken en dat is om de Tab pagina’s een andere naam te geven. Open in het menu onder View daarom de keuze Object Properties en klik met de muis ergens in de Tabpagina die nu nog de naam Tab Page label heeft. Vindt in de lijst met object properties nu het label en verander het in ‘Adres’. Verander het andere label in ‘Overige’ – of wat u wilt. Tip: Als u het Label in de lijst niet kunt vinden, dan heeft u met de muis op de Tabpagina kop geklikt, of op een ander object. Zorg dat u ergens in de tabpagina zelf klikt. We kunnen nu ons eerste Visual DataFlex programmaatje gaan testen. Hiervoor moet het gecompileerd worden; op basis van de gegeneerde code maakt de compiler er een executable van, een .exe die iemand kan opstarten om Personen te gaan invoeren. Compileren kan op een aantal manieren opgestart worden: -
Druk op de F8 toets
-
Kies in het menu onder Project voor Compile
-
Klik met de muis op het blauwe driehoekje:
www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Voer nu een aantal records in. Merk daarbij het volgende op: -
Begin bij het eerste record in te voeren met PersoonID ‘1’, de volgende ‘2’ en zo verder
(straks meer hierover).
-
Records opslaan kan door de F2 Toets in te drukken, of het icoontje te klikken.
-
Scherm schoonmaken voor nieuwe invoer door F5 toets
-
Record verwijderen gaat met Shift-F2
-
Als u meerdere records heeft aangemaakt dan kunt u door de database bladeren met behulp van
de toetsen F7 (vorige) en F8 (volgende)
-
Dit zoeken werkt alleen als de cursor zich in een van de volgende velden bevindt: PersoonID,
Achternaam, Voornaam en Postcode. En dat is logisch: dit waren de enige velden waarop een
index was gedefinieerd.
Sluit de applicatie af, om naar de Studio terug te keren. We gaan nu de tabel voor Media maken en het benodigde invoerscherm ervoor. Kies in het menu onder Tools voor DataBase Builder en maak een nieuwe tabel met de naam Media. De tabel zal de volgende velden hebben:
Let op: -
In het veld Type willen bijhouden of het een CD, DVD, BOEK o.i.d. is.
-
De aanschafdatum is van het type Date
-
De Prijs is numeriek met formaat 4,2. Dat wil zeggen dat er 4 posities voor en 2 na de komma
kunnen staan.
-
Het veld PersoonID gaan we gebruiken om te laten wijzen naar de sleutel in de Personen tabel. We
zorgen er daarom voor dat het van het zelfde type is (Numeriek) en de zelfde grootte (6 posities).
www.visualdataflex.com
Visual
EVALUATIE GIDS VISUAL DATAFLEX
DataFlex
Sleutel en Indexen MediaID zal het sleutelveld worden. Daarnaast maken we een index op Titel, Auteur en Type. Om te zorgen dat deze indexen uniek worden, voegen we bij elke het veld MediaID toe, zodat de index altijd uniek zal zijn. Ook schakelen we bij deze velden de Case Insensitive optie in. Tip: We hebben tot nu toe uitgelegd dat indexen worden aangemaakt zodat er tijdens het raadplegen en onderhoud van de database gemakkelijk op gezocht kan worden. Indexen hebben nog een andere belangrijke functie, en dat is het aangeven van een bepaalde volgorde bij het maken van rapporten en overzichten. Het is niet moeilijk om achteraf nog indexen toe te voegen. We gaan nu de relatie leggen tussen de twee tabellen. Kies daarvoor het tabblad genaamd Relationships en kies het tweede icoon (Add a relationship). In de kolommen From Table en To Table, en de onderliggende velden, zorgt u nu dat de tabel Media naar Personen wijst, via de velden PersoonID in beide tabellen. Het moet er dan als volgt uit zien:
Ten slotte gaan we nog wat Business Rules in de DataDictionary toevoegen. Maak het veld MediaID een Key Field en zorg dat de Titel een verplicht in te voeren veld is. Het veld Type moet altijd hoofdletters zijn (Capslock) maar daar gaan we nog iets extra’s mee doen. We willen ervoor zorgen dat de gebruiker altijd een zelfde naam geeft aan het type medium. Als het een CDRom is, altijd ‘CD’ en als het een boek is altijd ‘BOEK’. Indien dit niet een eenduidige, consistente naam is, wordt het later erg lastig om bijvoorbeeld in een lijst alleen CD’s te selecteren of alle boeken. We gaan een eenvoudige, statische validatie maken, op het veld Type die er zo gaat uit zien:
Als u nog meer opties wilt, voeg die gerust toe. In dit voorbeeld wordt invoer op deze waarden getoetst en het is niet mogelijk om de waarde leeg te laten (De optie Blanks is niet ingeschakeld!).
www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Tip: Het is nu nog niet van belang, maar als u een kijkje neemt in de tab Structures ziet u dat de tabel Personen blijkbaar bij Media in de structure is opgenomen. Dit is een hint die aangeeft dat validaties niet alleen op enkelvoudige tabellen, maar ook op gerelateerde tabellen plaatsvinden. We slaan nu de tabel Media op en sluiten de DataBase Builder om weer naar de Studio terug te keren. We gaan nu niet met de Wizard maar handmatig een nieuwe View maken om de gegevens in te voeren. Kies in het menu onder File weer voor New, View / Report maar kies nu het tweede icoon: Data Entry View. We geven het object de naam ‘oMedia’ en het bestand op schijf zal Media.Vw heten. Tip: Het scherm vermeldt al dat het component aan het project Media Uitleen zal worden toegevoegd – het zal na compilatie automatisch in het menu van de applicatie verschijnen. Later kan het menu middels de MenuBuilder aangepast worden. Time-Out! Een nieuw concept: Data Awareness Voordat we nu verder gaan, leggen we een nieuw concept uit, Data Awareness. Visual DataFlex is een gereedschap om database toepassingen mee te maken. Na het eerste voorbeeld hebben we gezien dat we dus een invoerscherm (interface) maken om gegevens in een database in te voeren. De onderdelen van de interface, namelijk de invoervelden worden dus schijnbaar gekoppeld aan de onderliggende velden in de tabellen. Dat klopt, dat is precies wat er gebeurd is, maar er zit nog een laag tussen, namelijk de Data Dictionaries. In Visual DataFlex zijn er verschillende typen componenten. Een belangrijk onderscheid tussen componenten is of ze ‘data aware’ zijn, of niet. Als ze het wel zijn, hoeft u er alleen een of meerder Data Dictionary Objecten (DDO’s) aan toe te voegen, om over de gewenste data (tabellen) te kunnen beschikken. Zouden we in de onderliggende broncode van het programma kijken, dan zijn data aware componenten herkenbaar aan het begin van de naam met ‘db’. Voorbeelden zijn een dbView, dbForm en dbGrid.
We gaan verder. Waar we nu in de Studio naar kijken is een lege dbView. Het eerste wat we gaan doen is bepalen welke tabellen we hiermee gaan onderhouden. Open in het Menu onder View nu de DDO Explorer. In de DDO explorer zijn nog geen tabellen gekozen. Klik met de rechtermuis knop op de tekst DDOs for oMedia om ze toe te voegen. Kies de tabel Media. Er wordt de vraag gesteld of dit ook de Main File moet zijn. Dit betekent in het algemeen dat wanneer er op Save of Delete wordt gedrukt, het om de tabel media gaat. Er wordt dan dus in de tabel media een record opgeslagen danwel verwijderd. NB: Omdat we in DataBase Builder de relatie al hadden aangegeven met Personen, is deze ook automatisch in de lijst opgenomen. En dat moet ook, want we gaan bijhouden wie over de media beschikt.
www.visualdataflex.com
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Selecteer in de DDO Column Selector alle velden uit de tabel Media door middel van de checkboxen, en sleep ze op de View. Sleep op dezelfde manier uit de tabel Personen het veld Achternaam op de View. Verwijder via de Object Properties de tekst ‘Achternaam’ en maak het
scherm verder af, zodat het er bijvoorbeeld zo
uit komt te zien als hierboven weergegeven.
Hier links ziet u hoe het eruit ziet als het
programma gecompileerd is (F8) en
uitgevoerd wordt (F5).
Op zich kunt u nu een nieuw gegeven in Media invoeren en er een persoon aan koppelen door in het veld PersoonID te bladeren middels F7 en F8. Laten we het programma wat gebruiksvriendelijker maken. Volgorde van invoer Indien u net als in het voorbeeld de velden PersoonID/Achternaam van positie heeft verwisseld met Opmerking dan zult u tijdens invoer merken dat na de invoer van de prijs eerst om invoer van Opmerkingen wordt gevraagd en niet PersoonID. We kunnen blijkbaar de positie op het scherm wel veranderen, maar het systeem blijft de vorige volgorde voor invoer handhaven. Dit kunnen we eenvoudig corrigeren: Open in het Menu, View de Code Explorer. Selecteer in het object oMedia het veld oMedia_ Opmerking en klik met de rechtermuisknop hierop. Verplaats het object nu twee posities naar beneden. (Kies ‘Move Down’ of gebruik de toetsen Alt+CursorDown). Automatische sleutels genereren Zowel voor Personen als Media hebben we unieke, numerieke sleutels gedefinieerd. Dit nummer is eigenlijk helemaal niet interessant voor de gebruiker en het is lastig om te onthouden wat nu het laatst ingevoerde nummer is, om je volgende ID weer te kunnen invoeren. We gaan dit daarom automatiseren, dat gaat in twee stappen: 1.
We maken een extra tabel. En in deze tabel slaan we altijd maar een (1) record op. Dit noemen we
wel een systeemtabel. In die tabel zetten we twee numerieke velden: LaatstePersonen
en LaatsteMedia.
2.
Vervolgens gaan we in de Data Dictionaries van Media en Personen zorgen dat de ID’s altijd
automatisch worden opgehoogd, dankzij deze systeemtabel. www.visualdataflex.com
10
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Zo ziet de tabel System er uit:
Om te zorgen dat het ook werkelijk een systeemtabel wordt, niet vergeten aan te vinken bij ‘System file’.
Nu moeten we nog zorgen dat in de Data Dictionaries van Personen en Media de waarden automatisch worden opgehoogd, bij elk nieuw record. Open daarom de tabel Personen in de DataBase Builder.
Selecteer het veld PersoonID, ga naar de Tab Column Settings en kies daarin weer de Tab Other. Bij het veld Auto Increment is een knop, die laat de tabel System zien. Kies daarin het veld LaatstePersoon. Klik OK, en sla de wijziging op.
www.visualdataflex.com
11
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Doe nu het zelfde met de tabel Media. Zorg ervoor dat de Auto Increment waarde wordt bijgehouden in het veld LaatsteMedia in het systeembestand. Sluit de DataBase Builder af om terug te keren naar de Studio. Zo. Nu zou het eigenlijk wel moeten werken… ware het niet dat er al records zijn aangemaakt, die volgnummer 1, 2,3 etc. hebben. De velden in het systeembestand hebben initieel de waarde ‘0’ dus bij het aanmaken van het eerst volgende record zal het proberen om een record aan te maken met PersoonID ‘1’, en dat kan niet, want die bestaat al. De applicatie zal dus een fout geven, en het is niet meer mogelijk om nieuwe records aan te maken. Om dit op te lossen, starten we een ander handig gereedschap in Visual DataFlex: Database Explorer. Database Explorer (vaak DBExplorer genoemd) geeft de mogelijkheid om snel rechtstreeks in tabellen te wijzigen. Dit is een typisch ontwikkelaars gereedschap – weet wat je ermee doet, want dit gereedschap geeft de mogelijkheid om alle ingebouwde validaties en beveiligingen te omzeilen! Start Database Explorer in het menu onder Tools. Het eerste wat we doen, is het mogelijk maken om gegevens te wijzigen. Klik daarvoor op het kleine icoontje helemaal links onderin, zodat het rode rondje grijs wordt. Dus:
wordt:
Laten we aannemen dat niet meer dan 10 records zijn ingevoerd: Voer nu voor zowel LaatstePersonen als LaatsteMedia de waarde 10 in. Het volgende record zal dus volgnummer 11 krijgen. Voordat we gaan compileren maken we nog snel even twee kleine wijzigingen: Ga naar Database Builder en open de tabel Media. Ga in Column Settings voor het veld Type naar de tab Appearance en kies voor dbComboForm. Want eigenlijk willen we graag dat deze keuze altijd vanuit een default Combobox worden getoond. Geef bij Options aan dat het veld Type Capslock moet zijn. En maak het veld MediaID Autofind. Let op: Nu gaan we een stukje programmacode aanpassen! Dubbelklik in het design van de Studio op het veld Type. De Studio brengt u nu automatisch in de code en wel op de plek van het invoerveld (dbForm) voor Media Type. Een regel in de code ziet er als volgt uit: Object oMedia_Type is a dbForm Nu willen we echter dat het een object van de klasse dbComboForm wordt. Verander de code in: Object oMedia_Type is a dbComboForm www.visualdataflex.com
12
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Druk nu op de F7 toets. Dit is de schakelaar om te wisselen tussen de design- en programmeermode. U ziet al dat het invoervenster in een combobox is veranderd, wellicht wilt u het veld iets breder maken. Druk op F5 om te compileren en starten. Het is nu niet meer nodig om zelf het volgnummer (PersoonID of MediaID) in te voeren. We hebben nu de volgende verbeteringen aangebracht: -
We hebben gezorgd dat de ID’s voor Persoon en Media automatisch opgehoogd worden.
-
Als iemand bij Media een nummer invoert en op Tab klikt, dan zoekt Visual DataFlex vanzelf het
bijbehorende record. Deze aanpassing kan natuurlijk ook bij Personen ingevoerd worden.
-
Het invoeren van een Type bij Media is nu logischer, namelijk de codes waren altijd in hoofdletters,
die komen er nu vanzelf in en er wordt een Combobox gebruikt. Dat is voor dit soort invoer
toepasselijker dan een pop-up lijst.
-
Door de Appearance in de Database Builder op Combobox te zetten zal dit veld voortaan default
als zodanig verschijnen als het vanuit de DDO Explorer op een dbView wordt gesleept.
Maar het kan nog fraaier. Als er maar een paar records in de tabellen zitten is het geen probleem om met F7 en F8 door de tabel te bladeren. Maar als het er meer worden, moeten we een betere manier vinden, we gaan Selectionlists maken. Dit zijn pop-up lijsten met geavanceerdere zoekmethoden. In het menu van de Studio, onder File, klikken we naar New, Dialog / Lookup en we starten de Lookup Wizard. We gaan als eerste een Selectionlist maken voor Personen, waarin we de velden Achternaam, Voornaam en telefoon laten zien. We accepteren verder alle defaults en compileren het programma opnieuw (F5). Bij Achternaam en Voornaam zijn nu automatisch knoppen toegevoegd (Prompt Buttons). Door hierop te klikken (of op F4) komt de Selectionlist ter beschikking, en biedt de volgende standaard functionaliteit: -
Afhankelijk van de kolom waarin de cursor staat, wordt de volgorde in de lijst aangepast.
-
Door te beginnen te typen komt vanzelf een zoek-scherm naar voren, door op Enter te drukken
brengt het systeem u naar het gewenste record.
-
Doordat we met indexen werken zal de snelheid bij een tabel met een grootte van 10 records
nagenoeg net zo snel reageren als wanneer er vele miljoenen records in zouden zitten!
Het is nu eenvoudig om zelf een SelectionList te maken voor de tabel Media. Misschien kunt u proberen om deze niet met de wizard te maken, maar ‘met de hand’ door middel van drag & drop. In dat geval een paar tips: Kies via File, New,Dialog / Lookup: Table Lookup. Kies via de DDO Selector de goede tabellen en velden. Om details in de nieuwe Lookup aan te passen, kijk bij Object Properties op de Tab Column Properties:
www.visualdataflex.com
13
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Iets geavanceerder: Het is nu niet meer zo moeilijk om een scherm te maken waarbij we per persoon automatisch een lijstje (dbGrid: haal deze uit de Data Controls in de Class Palette) kunnen tonen van uitgeleende media, zodat het uit komt te zien zoals het scherm hiernaast afgebeeld. Door nu door Personen te bladeren, verschijnt vanzelf welke Media zij op dit moment hebben geleend. Dit heet een ‘constraint’: Er wordt eigenlijk door de tabel Media gebladerd, geconstrained, gefilterd op Personen. Om dit te kunnen bewerkstelligen weer een paar tips: -
Maak een nieuwe dbView en kies via de DDO Explorer voor Media en Personen.
-
Sleep Voornaam en Achternaam erop.
-
Zet in de Object Properties de tekst voor Achternaam weg
-
Verander de tekst van Voornaam in Naam
-
Haal de Prompt Button weg uit het Achternaam veld (vindt de Prompt_Button_Mode in de lijst en
zet hem naar de waarde PBPromptOff ).
-
Controleer in de DDO Explorer of er wel een Constraint wordt gelegd op Personen:
www.visualdataflex.com
14
Visual
EVALUATIE GIDS VISUAL DATAFLEX
DataFlex
Indien dit niet het geval is, klik dan met de rechtermuisknop op de tabel Media en kies voor Add/Change Constraint, en voeg een Constraint op Personen toe. Afbeeldingen De allerlaatste toevoeging op de Windows applicatie is dat we er een plaatje bij willen hebben. Laten we zeggen dat we bij de Media een afbeelding willen opslaan. In de eerste plaats moet dan de tabel aangepast worden: -
Open de Tabel Media in Database Builder en voeg een veld toe met de naam Afbeelding.
-
Het is van het type Text, met een lengte van 128. Hierin zal niet het plaatje zelf worden opgeslagen,
maar het pad naar de locatie en de naam van de afbeelding.
-
Open de View voor Media weer, en maakt hem iets groter.
-
Sleep uit Class Palette, DataControls een dbBitmap en plaats het op de View.
-
In de Tab Data Bindings van de Object Properties kan nu via Data Source (Entry Item) worden
aangegeven dat hier het veld Media.Afbeelding dient te worden gebruikt.
-
Compileer en start de applicatie (F5).
Zoek nu een van de Media op, en dubbelklik op de container waar de afbeelding in moet komen. Nu kunt u een Bitmap selecteren van de harde schijf en na het record op te slaan, zal dit plaatje bij deze CD, of dit boek worden bewaard! Rapporten en lijsten. Een van de krachtigste manieren om lijsten te maken en te integreren met Visual DataFlex applicaties is via de Crystal Reports Integrator. Dit is een wizard die geheel automatisch een rapport in de applicatie integreert, en daarbij rapporten kan opstarten vanuit het menu en zelfs selectie kriteria kan afvragen of sorteervolgorde aangeven. Het is eenvoudig: Maak een rapport met Crystal Reports en start de wizard, de rest volgt vanzelf.
www.visualdataflex.com
15
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Indien u niet over een licentie van Crystal Reports beschikt, neem dan contact op met Data Access Europe BV (
[email protected]) om over een probeer licentie te beschikken of het product te bestellen. Een alternatieve manier is om rapporten zelf te programmeren met Winprint. Gelukkig zijn daar ook wizards voor, om een snelle start te maken. In enkele seconden is een lijst gemaakt van alle Media, met een break op Auteur:
Laten we de database naar het Internet brengen! In Visual DataFlex is het mogelijk om dezelfde data en dezelfde business rules te gebruiken tussen Windows en Web. En ook voor Web Services, maar dat laatste gaat buiten het bestek van deze introductie. Time-out: Even het web-concept uitleggen. Visual DataFlex maakt voor Internetapplicaties gebruik van de WebApp Application Server. Deze draait op Internet Information Server van Microsoft. Het gaat te ver om er heel gedetailleerd op in te gaan, maar dit is wat er gebeurt: Een Visual DataFlex applicatie staat op de server klaar. Als er een http request aankomt bij de server, zal de betreffende applicatie worden aangeroepen. In deze applicatie bevinden zich Web Business Objects (WBO) onderdelen die vergelijkbaar zijn met Views in de Windows versie en de link leggen naar de data en de logica (Data Dictionaries). De WBO zorgt dat de goede gegevens gevonden worden, formatteert de interface in HTML en stuurt deze terug naar de gebruiker, die in zijn of haar browser de informatie ziet. Op deze manier kunnen heel krachtige database applicaties via een browser worden geleverd. Let’s Get Started! Om snel een voorbeeld te maken gaan we de wizards gebruiken. We maken eerst een nieuw Project. File, New, Project: Web Project. Het zal weer Media Uitleen heten, maar de broncode zal WebApp.src gaan heten. Via File, New, Web Object gaan we nu de WBO Report Wizard starten. We gaan een lijst van Media maken en noemen het object oMediaReport. Op de lijst kiezen we voor de velden Media.Titel, Auteur en Type. Van Personen kiezen we de voor- en achternaam. We accepteren alle defaults, totdat we aan het scherm Drilldown komen. Wat we namelijk gaan doen is het volgende. www.visualdataflex.com
16
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Als we straks het rapport opstarten, dan willen we vanuit een regel in het rapport een drilldown kunnen doen. En dan willen we belanden in een scherm waarin we de gegevens kunnen onderhouden. We gaan er van uit dat het onderhoudsscherm dat nog gemaakt moet gaan worden de naam MediaWebEntry zal gaan krijgen:
Dus: Als we straks in de lijst op de Media Titel klikken, krijgen we een drill-down. We accepteren verder alle defaults, maken de wizard verder af en compileren en starten de applicatie (F5). De browser wordt gestart en de lijst kan nu opgeroepen worden vanuit het menu. Het ziet er als volgt uit:
Als we nu op de titel klikken, zal er een fout optreden. En dat is logisch, de onderliggende pagina die we aanroepen hebben we nog niet gemaakt. Laten we dat doen door via File, New, Web Object nu de WBO Entry Wizard te starten. We accepteren alle defaults, tot we namen moeten geven. Zorg er nu voor dat de bestandsnaam precies zo zal luiden als we eerder hebben opgegeven: ‘MediaWebEntry’. Verder kiezen we de tabel Media en laten alle velden van Media zien en de Voor- en achternaam uit Personen.
www.visualdataflex.com
17
EVALUATIE GIDS VISUAL DATAFLEX
Visual
DataFlex
Op het scherm met de naam ‘Buttons’ kiezen we ervoor om het eerder gemaakt rapport aan te roepen, we laten dat naar MediaReport.ASP wijzen. We accepteren weer alle defaults, sluiten de wizard af en drukken op F5 om te compileren/starten!
Door nu op de knop List te klikken navigeren we automatisch naar de lijst. Klikken we daarin op een titel, dan komen we in het onderhoudsscherm terecht. Als uw ISP uw PC thuis een vast IP-adres geeft, dan kunt u uw database publiceren, zodat men vanaf het Internet bij alle gegevens kunt komen. Let dan wel op: Iemand die erbij kan, kan al uw gegevens aanpassen! Get Started! Hiermee eindigt de eerste, korte introductie voor Visual DataFlex. Nu is het aan u om zelf een database te maken en programma’s om uw gegevens op te slaan. Om meer te weten te komen is de volledige handleiding beschikbaar. Ook is er meer te vinden op de volgende site: www.visualdataflex.com. Of stel vragen aan mensen op een speciaal forum: news://news.dataaccess.com/visual-dataflex (newsgroup). Indien de helpbestanden, of newsgroups niet helpen, mail dan gerust naar:
[email protected]
www.visualdataflex.com
18