# Het handboek van &kexi;

## Inleiding

&kexi; is een toepassing om databases te beheren. Het kan gebruikt worden om databases aan te maken, gegevens in te voeren, query's uit te voeren en gegevens te verwerken. Door middel van formulieren kunt u een aangepaste interface voor uw gegevens maken. Alle database-objecten - tabellen, query's en formulieren - worden in de database opgeslagen, waardoor het gemakkelijk is om gegevens en ontwerp met anderen te delen.

&kexi; maakt deel uit van de &calligra;-productiviteitssuite door KDE.

In aanvulling op het opslaan van uw &kexi;-databases in bestanden, kan &kexi; uw gegevens ook op een database-server opslaan. Door gebruik te maken van een database-server kunt u uw database met anderen delen en kunnen meerdere personen de database tegelijkertijd gebruiken. De volgende database-servers worden door &kexi; ondersteund:

- MySQL

- PostgreSQL

U kunt meer informatie over &kexi; vinden op de &kexi;-pagina op de Calligra-website en op de website voor Kexi zelf.

Voor vragen over &kexi; kunt u terecht op twee mailinglijsten De gebruikers-e-maillijst van Kexi is er voor vragen over het gebruik van &kexi; of over het &kexi;-project. De ontwikkelings-e-maillijst van Kexi is er voor vragen over de ontwikkeling van &kexi;. Verdere informatie over hoe u zich kunt aanmelden voor deze lijsten en enkele andere manieren om contact op te nemen met &kexi;-ontwikkelaars, kunt u hier vinden.

Dit handboek van &kexi; 2.5 is bedoeld te zijn gebaseerd op het &kexi;-handbook voor Kexi 1.1. Als u hier aan mee wilt doen, doe dat dan in overleg met Jarosław Staniek, email: kexi at kde.org

## Kexi de basis

- Kexi-databases

- Een nieuw databasebestand maken

- Het hoofdvenster van Kexi

  - Belangrijkste elementen van de toepassing

- Een bestaand Kexi-databasebestand openen

  - Een databasebestand openen in het dialoogvenster Bestaand project openen

  - Een bestaand Kexi-databasebestand openen door op het pictogram van het .kexi-bestand te klikken

- De ingebouwde help gebruiken

### Kexi-databases

Veel toepassingen zoals OpenOffice.org of , LibreOffice of &Microsoft; Excel maken bestanden die documenten genoemd worden. &kexi; maakt ook bestanden, maar we noemen ze &kexi;-databasebestanden of hier eenvoudig databasebestanden.

&kexi; kan, naast databasebestanden, ook databases op database-servers gebruiken, dit is de reden waarom we ze databasebestanden noemen en niet eenvoudig databases.

De term &kexi;-project, of eenvoudig project, wordt ook gebruikt om een &kexi;-database aan te duiden, ongeacht of deze in een bestand of op een database-server is opgeslagen.

&kexi; databasebestanden hebben gewoonlijk de extensie `.kexi`

### Een nieuw databasebestand maken

1. Start &kexi; of, als het al actief is, gebruik Kexi Nieuw... (Ctrl+N).

2. Op de pagina Nieuw project, onder de sectie Blanco projecten, kies Blanco database.

3. Op de pagina Opslagmethode, klik op Bestand.

4. Op Projectitel & bestandsnaam, definieert u een titel en de bestandsnaam van het project.

5. Klik op Volgende om het project aan te maken.

- Wanneer u de projecttitel wijzigt, dan zal de voorgestelde bestandsnaam automatisch mee veranderen.

- U kunt de bestandenbrowser gebruiken om een map te kiezen waar u uw databasebestand op wilt slaan.

### Het hoofdvenster van Kexi

De Werkbalk met tabbladen bovenaan geeft toegang tot de gewone acties en opdrachten.

De Projectnavigator en de Eigenschappenbewerker worden als panelen aan weerszijden van het venster getoond. Deze kunnen van grootte veranderd of verborgen worden. Een paneel kan verborgen worden door op het kruisje bovenin (vlak onder de werkbalk) te klikken.

Database-objecten (tabellen, query's, enz.) in de Projectnavigator kunnen geopend worden door op hun namen te klikken (of te dubbelklikken, dit is afhankelijk van de globale instellingen in KDE).

#### Belangrijkste elementen van de toepassing

De belangrijkste elementen in het venster van &kexi; zijn:

Werkbalk met tabbladen

- Bevat de beschikbare commando's voor de toepassing. In de appendix kunt u een uitgebreide beschrijving van de commando's vinden.

Het paneel Projectnavigator

- Bevat een lijst met objecten (tabellen, query's, formulieren, ...) die in het geopende databaseproject zijn aangemaakt). Bovenin de navigator bevindt zich een werkbalk met commando's voor database-objecten.

Gebied voor geopende database-objecten / vensters met tabbladen

- Een middelste gedeelte van het venster van de toepassing neemt de meeste ruimte. Het gebruikersinterface bevat om te schakelen tabbladen met vensters die altijd zijn gemaximaliseerd.

Het paneel Eigenschappenbewerker

- Bevat een lijst met eigenschappen van het actieve database-object. Voor bepaalde objecten (⪚ formulierwidgets) kunnen er verscheidene tabs zijn.

#### Werkbalk met tabbladen

De werkbalk is de plaats die toegang geeft tot de meeste opdrachten en acties van &kexi;.

Met de acties in de verschillende tabbladen op de werkbalk kunt u:

- Kexi-projecten aanmaken / openen / sluiten

- Database-objecten aanmaken

- Gegevens importeren / exporteren

Afhankelijk van de context kunnen er extra tabbladen zichtbaar zijn:

- Het tabblad Formulierontwerp is zichtbaar als de Ontwerper van formulieren werkelijk wordt gebruikt.

- Het tabblad Rapportontwerp is zichtbaar als de Ontwerper van rapporten werkelijk wordt gebruikt.

#### Het paneel Projectnavigator

Het paneel Projectnavigator is één van de meestgebruikte elementen in het hoofdvenster van &kexi;. Het paneel bevat een lijst met alle objecten die zich in het geopende Kexi-databaseproject bevinden. De objecten zijn onderverdeeld in groepen: tabellen, query's, formulieren, rapporten en scripts.

Het paneel Projectnavigator bevat ook een werkbalk voor de meestgebruikte commando's (van links naar rechts): Open geselecteerd object, Ontwerpen van geselecteerd object en Verwijderen van geselecteerd dbject.

Voor elk object in de lijst kunt u een contextmenu openen met de rechter muisknop.

Dubbelklik met de linker muisknop in de lijst op de naam van het object om het in Dataweergave te openen. Als het venster al geopend is, wordt het geactiveerd zonder de weergave-modus te veranderen.

Hoewel uw besturingssysteem of windowmanager ingesteld kan zijn op enkelvoudig klikken inplaats van dubbelklikken, zal &kexi; dubbelklikken gebruiken in de Projectennavigator om het per ongeluk openen van grote bestanden of het uitvoeren van zoekopdrachten te vermijden.

#### Gebied voor geopende database-objecten / vensters met tabbladen

Wanneer u dubbelklikt op een object in de projectennavigator, dan wordt deze geopend in de Gebied voor geopende database-objecten. Elk venster heeft zijn eigen tabblad in &kexi;.

U kunt de tabbladen verplaatsen met slepen en laten vallen en ze sluiten met de knop helemaal rechts op de tabbladstrip.

Wat later zal er een optie zijn om tabbladen los te maken, waarmee iets kan worden gemaakt wat lijkt op een MDI-interface (multi-display). Dat zou nuttig kunnen zijn voor eigengemaakte oplossingen of meervoudige displays.

#### Het paneel Eigenschappenbewerker

In de Eigenschappenbewerker kunt u de eigenschappen van het object in het actieve venster wijzigen. Afhankelijk van de context, kan het paneel één of meer tabbladen hebben. Het eerste tabblad Eigenschappen, dat altijd zichtbaar is, bevat de lijst met beschikbare eigenschappen.

Regels voor het gebruik van de Eigenschappenbewerker

- Elke regel bevat één eigenschap.

- U kunt de muis of het toetsenbord gebruiken om de waarden van de eigenschappen te wijzigen.

- De meestgebruikte typen voor de waarde van de eigenschappen zijn:

  - een getal; u kunt de waarde direct intypen, of de waarde verhogen of verlagen door met de linker muisknop op de pijltjes te klikken.

  - tekst

  - keuzelijst met waarden

  - Ja/Nee; u kunt de waarde veranderen door op de knop te klikken; Ja (waar) betekent dat de knop ingeschakeld is, Nee (onwaar) betekent dat de knop uitgeschakeld is.

- Wijzigingen worden direct zichtbaar wanneer u een andere regel in de Eigenschappenbewerker selecteert of wanneer u op de toets &Enter; drukt.

- De namen van gewijzigde eigenschappen die nog niet zijn opgeslagen in de database worden in vette tekst gezet.

- Nadat u de waarde van een eigenschap gewijzigd hebt, verschijnt er een knop Ongedaan maken aan de rechterkant in de lijst van de Eigenschappenbewerker. Als u erop klikt kunt u de waarde terugzetten naar de oorspronkelijke waarde die in de database was opgeslagen. De knop is alleen zichtbaar als de betreffende eigenschap geactiveerd is.

Het paneel Eigenschappenbewerker is leeg als:

- er geen venster met een database-object geopend is, of

- het actieve database-object geen eigenschappen heeft; dit is gewoonlijk het geval als het in Dataweergave geopend is in plaats van in Ontwerpweergave.

### Een bestaand Kexi-databasebestand openen

Er zijn twee manieren om een bestaand &kexi;-databasebestand te openen:

#### Een databasebestand openen in het dialoogvenster Project openen

- Start &kexi;. Het dialoogvenster Welkom bij Kexi verschijnt, die u in staat stelt een van de recent gebruikte projecten te openen.

- Als het project niet op de pagina met recent gebruikte projecten aanwezig is kies dan Openen... (&Ctrl;O). U krijgt dan de volgende dialoog te zien:

- Selecteer een map, die het bestand bevat waar u naar zoekt, in de locatiebalk.

- U kunt ofwel een bestand kiezen die onmiddellijk wordt geopend. U kunt ook zijn naam in het veld Naam: invoeren en op Volgende klikken.

Opmerkingen

- Standaard is in de keuzelijst Filter: Alle ondersteunde bestanden (*.kexi, *.kexic, *.kexis, *.mdb) geselecteerd. Als u een bestand met een andere extensie zoekt, kunt u de selectie in het keuzevak Filter: wijzigen in Alle bestanden om alle beschikbare bestanden weer te geven (onafhankelijk van een extensie).

- Als u een bestand van een extern type geselecteerd hebt, zoals een MS Access `.mdb`-bestand, geeft &kexi; u de optie om het bestand te importeren.

- Als u een bestand met koppelingsgegevens hebt geselecteerd (met de extensie `.kexic`) of een snelkoppeling naar een project op databaseserverbestand (met de extensie `.kexis`), dan zal &kexi; de daarvoor bestemde dialoogvensters weergeven.

#### Een bestaand Kexi-databasebestand openen door op het pictogram van het .kexi-bestand te klikken

- Klik in bestandsbeheer of op het bureaublad op het bestandspictogram. &kexi; opent het databaseproject automatisch.

Opmerkingen

Opmerking over databasebestanden die op een andere computer staan. U kunt een databasebestand op bijvoorbeeld een webserver, een FTP-server of een MS Windows netwerk openen. In de KDE kunt u bestanden op een netwerk direct in toepassingen openen en wijzigingen in het bronbestand opslaan, dit geldt echter niet voor databasebestanden. Wanneer u een databasebestand dat op een andere computer staat opent, wordt er een kopie van het het bestand in een tijdelijke map op uw computer opgeslagen en alle wijzigingen worden in dit bestand gemaakt. Het oorspronkelijke bestand blijft ongewijzigd. Om de wijzigingen in het oorspronkelijke bestand op te slaan moet u de kopie van het bestand naar de andere computer kopiëren.

### De ingebouwde help gebruiken

De volgende manieren zijn beschikbaar om toegang te krijgen tot de ingebouwde help in &kexi;:

Het handboek als document.

- Het handboek is beschikbaar door de toets F1 in te drukken of op in de menubalk te klikken en Help te selecteren.

Wat is dit? tips.

- Selecteer Wat is dit? uit het menu dat verschijnt wanneer u op klikt en dan op een gebied van de toepassing klikt om tips hierover te krijgen.

## Eenvoudige databases maken

- Introductie

- Databasetabellen ontwerpen

  - Het venster Tabelontwerp

- Gegevens in tabellen invoeren

- Database-query's ontwerpen

- Formulieren ontwerpen

  - Belangrijkste termen

  - Formulieren versus tabellen

  - Werken met formulierontwerp

  - Het Widgets-tabblad gebruiken

  - Widgets invoegen - tekstvelden

  - Gegevensbronnen toewijzen

  - Tekstlabels invoegen

  - Acties

  - Widget-layouts

- Gegevens in formulieren invoeren

### Inleiding

Om te leren hoe u &kexi; gebruikt, zou u eerst een eenvoudige database kunnen maken met behulp van de meest elementaire functies van &kexi;. Om het eenvoudig te houden, worden hier geen uitgebreide mogelijkheden voor het ontwerpen van databases besproken.

Begin met het maken van een nieuw leeg Telefoonboek.

Als u een nieuw leeg database-project hebt, volg dan de volgende stappen:

1. Databasetabellen ontwerpen. Lees de sectie genaamd Databasetabellen ontwerpen.

2. Voer gegevens in in tabellen. Lees de sectie genaamd Gegevens in tabellen invoeren.

3. Database-queries ontwerpen. Lees de sectie genaamd Database-queries ontwerpen.

4. Formulieren ontwerpen. Lees de sectie genaamd Formulieren ontwerpen.

5. Formulieren gebruiken om gegevens in te voeren. Lees de sectie genaamd Formulieren gebruiken om gegevens in te voeren.

### Databasetabellen ontwerpen

Als eerste worden er twee tabellen aan uw database toegevoegd: `Personen` en `Telefoonnummers`. Dit zijn precies dezelfde tabellen als beschreven in hoofdstuk Database en spreadsheet. Een indeling voor `Personen` kunt u vinden in het gedeelte Integriteit en geldigheid van gegevens in dat hoofdstuk.

1. Kies uit de werkbalk Tabel. U kunt ook op de knop Object aanmaken: tabel in het contextmenu van het item Tabellen in de Projectnavigator klikken.

2. Het venster "Tabelontwerp" verschijnt. Zoals u bovenin het venster kunt zien, stelt &kexi; een generieke naam, zoals Tabel1 voor de nieuwe tabel voor. Het tabelontwerp is nog niet opgeslagen, u kunt er dus eenvoudig een andere naam aan geven. Om dezelfde reden is ook de naam van de tabel nog niet zichtbaar in de Projectnavigator.

#### Het venster Tabelontwerp

##### Het venster "Tabelontwerp" bevat de volgende kolommen:

- - Aanvullende informatie over het veld.

- Veldtitel - veldnaam (ofwel: kolomnaam) die zichtbaar blijft tijdens het invoeren van gegevens.

- Gegevenstype - een keuzelijst die gegevenstypen bevat, zodat een hoofdregel voor de ingevoerde gegevens in een veld opgesteld kan worden. Bijvoorbeeld: wanneer het gegevenstype "heel getal" is, kunnen er geen letters in het veld ingetypt worden.

- Commentaar - hier kunt u allerlei informatie invullen die van nut kan zijn om het doel van het veld duidelijk te maken. Deze extra tekst wordt in het ontwerp opgeslagen en is alleen zichtbaar in de ontwerpweergave.

In het venster Tabelontwerp komt elke rij overeen met een enkel tabelveld. U kunt zien dat u in de ontwerpmodus werkt omdat de knop Ontwerpen is ingeschakeld op de werkbalk van het venster Tabelontwerper.

##### De tabel Personen ontwerpen

Klik in de eerste rij op de cel in de kolom Veldtitel en vul `Naam` in als de veldtitel. Invullen van het veld Veldtitel vult automatisch het veld Naam zoals te zien is in het paneel Bewerker van eigenschappen.

Opmerkingen over veldnamen en opschriften

- Elk veld moet een naam en een opschrift hebben, de velden mogen niet leeg zijn.

- Veldnaam is een woord dat wordt gebruikt door de database, gewoonlijk niet zichtbaar voor gebruikers van de database-toepassing. De naam mag geen speciale (nationale) tekens (zoals ±, ¶, Ü) of witruimte-tekens bevatten. De naam moet alleen gewone letters, cijfers of underscore-teken _ bevatten. Gebruik de laatste in plaats van spaties of mintekens.

- Veldnamen moeten met een letter of met een underscore-teken _ beginnen, nooit met een cijfer.

- Het doet er niet toe of u kleine of hoofdletters gebruikt. Voor &kexi; is de veldnaam `Personen` hetzelfde als `Personen`.

- In de veldtitel kunt u echter alle letters en speciale tekens gebruiken. Deze wordt weergegeven voor de gebruikers van de database.

Vul op dezelfde manier de volgende velden in tabelontwerp in:

- `achternaam`

- `straat`

- `Huisnummer`

- `plaats`

Alle bovenstaande velden, behalve `huisnummer` zijn van het type tekst. Verander het type van het veld `huisnummer` in geheel getal. Om dit te doen klikt u op een cel in de kolom Gegevenstype in de rij `huisnummer` en klik dan op de keuzelijst of op F4. De lijst met gegevenstypen wordt zichtbaar. U kunt ook de pijltjestoetsen Omhoog of Omlaag drukken om een ander type te kiezen. Selecteer het type Geheel getal.

Vanaf nu accepteert het veld `huisnummer` alleen cijfers.

Het ontwerp van de tabel Personen is nu klaar. Klik op de knop Gegevens om over te schakelen naar Gegevensweergave van de tabel. U kunt nu gegevens in de tabel invoeren.

Omdat het ontwerp nog niet in de database opgeslagen is, verschijnt het dialoogvenster Object opslaan als. Hier kunt u een naam voor de nieuwe tabel invullen.

&kexi; biedt een generieke naam zoals Table1. Om de naam te wijzigen, voert u `Personen` in in het veld Opschrift en drukt u op de &Enter;-toets of klikt u op de knop OK. Het veld Opschrift zal worden gebruikt om de tabel aan eindgebruikers van de database te tonen, ⪚ als een formulier. Anders dan de naam mag het opschrift elk teken inclusief spaties en speciale tekens bevatten.

Merk op dat de inhoud van het veld Opschrift automatisch het veld Naam doet invullen. Voor uw gemak wordt vastgehouden aan de regel om alleen letters, cijfers en het teken _ te gebruiken. U kunt desgewenst de inhoud van het veld Naam wijzigen.

1. Er wordt gevraagd of u toestemming geeft voor automatische toevoeging van een primaire sleutel voor de tabel. Klik op de knop Primaire sleutel toevoegen om verder te gaan.

2. De tabel `Personen` is aangemaakt en in de Gegevensweergave geopend. De naam verschijnt in het paneel Projectnavigator.

3. Maak de tabel `Telefoonnummers` aan op dezelfde manier als de tabel `Personen`.

4. Maak een veld `persoon` aan van het type Geheel getal en `telefoonnummer` van het type Tekst. Gebruik hier geen type getal omdat telefoonnummers veel verschillende vormen en voorvoegsels kunnen hebben.

5. Klik op de knop Gegevens op de werkbalk en vul het opschrift `Telefoonnummers` in als opschrift voor de tabel. Laat &kexi;, net als bij de vorige tabel, weer automatisch een primaire sleutel maken.

### Gegevens in tabellen invoeren

U hebt de tabellen `Personen` en `Telefoonnummers` gemaakt, maar er staan nog geen gegevens in. In dit hoofdstuk kunt u lezen hoe u snel en effectief gegevens in de tabel invoert.

Start met de tabel `Personen`. Open het in de Gegevensweeergave met Openen in het contextmenu van de Projectnavigator of de knop op de werkbalk. De huidige cel heeft een dikkere rand (gewoonlijk zwart), een celcursor. De inhoud van de cel, indien aanwezig, is geaccentueerd met een verschillende kleur. De huidige rij, &ie; de rij waar de celcursor zich in bevindt, is aan de linkerkant gemarkeerd met een pijltje.

U kunt door de tabel navigeren met behulp van pijltoetsen, en de PageDown-, PageUp-, Home- en End-toetsen; u kunt ook met de muis in een cel klikken om die te selecteren.

Nadat de tabel `Personen` geopend is, staat de celcursor in de kolom `Id`. De eigenschap "Automatische nummering" is voor die kolom geactiveerd, in de laatste rij staat (autonummer) in blauwe tekst. Dit betekent dat u de rijen niet hoeft te nummeren wanneer u gegevens in een nieuwe rij invoert, de rijen worden automatisch genummerd.

Nieuwe rijen toevoegen en er gegevens in invoeren gaat in &kexi; anders dan in spreadsheets. Om gegevens in een nieuwe rij in te voeren moet u de celcursor naar de laatste rij verplaatsen (met de pijltoetsen of met de muis). De laatste rij is gemarkeerd met een plus-teken. Verplaats de celcursor naar de (tweede) kolom `Naam` en voer een naam in. Voer in de volgende kolommen de achternaam, straat, huisnummer en plaats in. Verplaats de celcursor weer naar de laatste rij ofwel met de Pijl omlaag of door met de muis in de laatste rij te klikken, om een nieuwe rij toe te voegen.

#### Meer over beschikbare acties tijdens gegevensinvoer in tabellen

- Zodra u het eerste teken intypt, verschijnt er een potloodsymbool aan de linkerkant van de rij om aan te geven dat de rij gewijzigd is.

- Dubbelklik met de met de linker muisknop in de cel die u wilt bewerken of op de &Enter;- of F2-toets drukken start eveneens het bewerken van de huidige rij.

- Druk op de &Esc;-toets om de wijzigingen die u in de cel gemaakt hebt te annuleren. Het potloodsymbool verdwijnt echter niet, omdat u misschien in een andere cel van de rij nog iets wilt wijzigen. Om alle wijzigingen in de gehele rij te negeren moet u nogmaals op de &Esc;-toets drukken.

- In plaats van de &Esc;-toets indrukken, kunt u op de knop Rijwijzigingen annuleren in de werkbalk drukken.

- Druk op toetsen &Shift;&Enter; om de wijzigingen in alle cellen in de huidige rij te accepteren.

Voer gegevens in de tabel `Telefoonnummers` in. U moet in de kolom `Persoon` het `Id`-nummer van een persoon uit de tabel `Personen` invullen.

### Database-query's ontwerpen

Het primaire doel van een database is het opslaan en terugvinden van gegevens. In tegenstelling tot gegevens in een spreadsheet, kunt u met &kexi; meer zoekcriteria specificeren. De resultaten worden ook sneller gevonden, zelfs bij grote databases. Dit zijn enkele van de voordelen van databases, maar om effectieve query's uit te voeren, moet u eerst weten hoe u de database laat zoeken naar de gegevens die u wilt zien.

Met behulp van query's kunt u de hoeveelheid gegevens, die in een tabel gevonden worden, beperken tot een voorgedefinieerd aantal rijen en kolommen, maar u kunt ook gegevens uit meerdere tabellen dynamisch samenvoegen (join).

Om een voorbeeld uit de praktijk te testen gaan we de query contacten aanmaken, hierin worden gegevens uit de twee tabellen `Personen` en `Telefoonnummers` samengevoegd (hier ontworpen en met gegevens die hier zijn ingevoerd).

1. Maak een nieuwe lege query door Query in de werkbalk te selecteren. Het ontwerpvenster wordt geopend. Bovenin het venster vindt u de query-relaties en onderin de query-kolommen.

2. Selecteer de tabel `Personen` in de keuzelijst Tabel: bovenin het venster en klik op de knop Invoegen. Er verschijnt een grafische representatie van de tabel in het relatiegedeelte. Doe hetzelfde in de tabel `Telefoonnummers` om hier iets in te voegen.

3. Voeg een query-relatie met de techniek slepen & laten vallen: klik op de veld `Id` in de tabel `Personen` sleep en laat het vallen in het veld `Persoon` van de tabel `Telefoonnummers`. Op deze manier voegt u de beide velden samen door een nieuwe relatie te creëren.

4. Dubbelklik op het veld `naam` in de tabel `Personen` om het veld als een query-kolom toe te voegen. Voeg dan op dezelfde manier uit de tabel `Personen` de velden `achternaam`, `straat`, `huisnummer` en `plaats` en `telefoonnummer` uit de tabel `Telefoonnummers` toe.

5. Het query-ontwerp kan nu getest worden. Klik op de knop Gegevens op de werkbalk om van ontwerpen naar weergave van de gegevens om te schakelen om het resultaat van de query te zien.

6. Sla het query-ontwerp op, zodat u het later weer kunt gebruiken, door op Opslaan op de werkbalk te klikken. Omdat het query-ontwerp nog niet eerder opgeslagen is, moet u er een naam voor invullen. Voer `Contacten` in in het veld Opschrift en klik op de knop OK.

### Formulieren ontwerpen

- Belangrijkste termen

- Formulieren versus tabellen

- Werken met formulierontwerp

- Het Widgets-tabblad gebruiken

- Widgets invoegen - tekstvelden

- Gegevensbronnen toewijzen

- Tekstlabels invoegen

- Acties

- Widget-layouts

#### Belangrijkste termen

Formulier

- Een venster waarin u op een gemakkelijke manier gegevens kunt invoeren en weergeven.

Gegevensbron van het formulier

- Databasetabel of query die de gegevens levert die in het formulier getoond worden. De gegevensbron is nodig omdat formulieren slechts hulpmiddelen zijn om de gegevens te tonen of in te vullen, terwijl tabellen en query's de bron van de gegevens zijn. Aan nieuwe, lege formulieren is nog geen gegevensbron toegewezen, daarom tonen ze de gegevens uit de database pas als u er een gegevensbron aan toewijst.

Formulierveld

- Het equivalent van een kolom in een tabel of query. Velden voor tekst en getallen worden het vaakst gebruikt. Wanneer u een nieuwe waarde invult of de bestaande waarde wijzigt, wordt de ermee verbonden kolom in een tabel of query ook gewijzigd (nadat de wijziging geaccepteerd is).

Formulierontwerp

- Taken die u uitvoert om het uiterlijk en de functies van het formulier te definiëren. Hiervoor moet u een gegevensbron toewijzen, verscheidene typen formuliervelden invoegen en deze op de gewenste locatie plaatsen.

Formulierwidget

- Een element op een formulier. De belangrijkste widgettypen zijn:

  - Widgets die informatie tonen, ⪚ een tekstvak of een afbeeldingsvak. Elke widget van dit type kan verbonden worden met een veld in een gegevensbron (een tabel of een query-kolom). Daarom worden zulke widgets ook wel kortweg formuliervelden genoemd.

  - Widgets die een gespecificeerde actie kunnen uitvoeren, ⪚ een knop waarmee het huidige formulier gesloten kan worden. In andere toepassingen heet dit type widget soms formulierbesturing omdat het een vooraf gedefinieerde actie uitvoert die het gedrag van de databasetoepassing bestuurt.

  - Andere widgets die het uiterlijk van een formulier verfraaien, ⪚ een “lijnwidget” als scheiding tussen twee gebieden op een formulier.

Containerwidget

- Een widget waarin andere widgets geplaatst kunnen worden, bijvoorbeeld frame-widget en tabbladwidget zijn containers. Het oppervlak van een formulier is ook een container. Een opdrachtknop kan niet als container dienst doen omdat het niet mogelijk is om er een ander widget in te plaatsen. Containerwidgets kunnen genest (in andere containerwidgets geplaatst) worden, dit kan nuttig zijn voor ingewikkelde formulieren.

#### Formulieren contra tabellen

In hoofdstuk Gegevens in tabellen invoeren wordt beschreven hoe u gegevens direct in tabellen kunt invullen. In veel gevallen zijn formulieren geschikter om gegevens in te voeren:

- Een tabel kan meer kolommen bevatten dan dat er op het scherm passen. Een formulier kan zulke gegevens tonen in de vorm van meerdere regels.

- Op een formulier kunt u gegevensvelden in logische groepen splitsen zodat ze beter leesbaar worden. U kunt labels met extra informatie invoegen om de gebruikers tips te geven hoe ze het formulier moeten gebruiken of labels met informatie over de betekenis van de gegevensvelden.

- Voor algemene commando's kunnen knoppen op formulieren gebruikt worden, zodat gebruikers de formulieren op een zelfde manier als een losstaande toepassing waar ze mee bekend zijn kunnen gebruiken

Tekstvelden met meerdere regels of afbeeldingen kunnen in de gegevensweergave net zo gemakkelijk weergegeven worden als op formulieren.

#### Werken met formulierontwerp

Net als bij het ontwerpen van een tabel of een query kunt u zowel de Gegevensweergave als de Ontwerpweergave gebruiken. Formulieren worden in de Ontwerpweergave ontworpen. Vaak noemen we het venster waarin de formulieren ontworpen worden Formulierontwerper.

1. Om een nieuw, leeg formulier te creëren kiest u Formulier in de werkbalk. U kunt ook het commando Object aanmaken: Formulier uit de keuzelijstknop op de taakbalk van de Projectnavigator gebruiken of Object aanmaken: Formulier in het contextmenu van de Projectnavigator kiezen.

2. Er verschijnt een nieuw frame, u kunt de grootte wijzigen door de randen te verslepen. Over het formulier is een raster gelegd, zodat de widgets gemakkelijker op de juiste plaats gezet kunnen worden.

Het venster van Formulierontwerp heeft, net als tabelontwerp, een paneel Eigenschappenbewerker. Om ruimte te besparen in het paneel zijn er drie tabbladen met eigenschappen die gerelateerd zijn aan het geselecteerde formulier:

Het tabblad Eigenschappen

- Bevat een lijst met eigenschappen van het geselecteerde widget.

Het tabblad Gegevensbron

- Bevat eigenschappen die specifiek verband houden met de gegevensbron van het nu geselecteerde widget of van het formulier zelf.

Het tabblad Widgets

- Bevat een hiërarchische lijst van alle widgets op het formulier. Met behulp van deze lijst kunt u gemakkelijk widgets op naam zoeken en direct het juiste widget vinden.

De informatie over de naam en het type van het geselecteerde widget vindt u op het eerste en het tweede tabblad.

Er zijn ook extra werkbalken beschikbaar:

- De werkbalk Widgets bevat knoppen om nieuwe widgets op het formulier in te voegen. Selecteer Formulierontwerp om het te tonen.

#### Het tabblad Widgets gebruiken

Het tabblad Widgets in het paneel Eigenschappen toont een lijst met formulierwidgets en hun hiërarchie. Alle widgets op hetzelfde niveau in de hiërarchie staan bij elkaar. De namen van widgets in containers springen in.

Van elk widget wordt de naam en het type vermeld. Het type is ook te zien aan een pictogram links van de naam - hetzelfde pictogram dat in ontwerpmodus op de werkbalk staat.

- Wanneer u op een naam in de lijst klikt, wordt het bijbehorende widget op het formulier geselecteerd. Dit maakt het gemakkelijk om een widget op naam te zoeken, te selecteren en daarna op het tabblad Eigenschappen de eigenschappen ervan te wijzigen

- Wanneer u de &Ctrl;-toets ingedrukt houdt kunt u meerdere widgets uit de lijst selecteren. Om een aantal widgets die onder elkaar staan te selecteren moet u de &Shift;-toets ingedrukt houden.

Het is nuttig, maar niet verplicht, om de widgets duidelijke namen te geven. De naam van een widget is een eigenschap die niet zichtbaar is voor de gebruiker van het formulier. Gebruikers van het formulier zien alleen de tekst die door de eigenschap Tekst bepaald wordt.

#### Widgets invoegen - tekstvelden

Als voorbeeld maken we een formulier dat informatie geeft over personen, &ie; een formulier dat verbonden is met de tabel `Personen`.

Als het formulier gegevens uit een database moet weergeven, moet u de juiste velden op het formulier plaatsen. Hiervoor kunt u de knoppen op de werkbalk Widgets gebruiken. Elke knop correspondeert met één enkel type widget.

1. Klik op de knop Tekstvak op de werkbalk Widgets.

2. Klik op het formulier met de linkermuisknop. Er wordt een nieuw tekstveld op de plaats waar u geklikt hebt geplaatst. Wanneer u een rechthoek tekent met de muis de voordat u de muisknop loslaat, kunt u de gewenste grootte van het widget op het formulier bepalen.

3. Als u het widget wilt verplaatsen, klikt u erop en sleept u het met de muis naar de gewenste plaats. U kunt de grootte van het widget wijzigen door één van de handvatten te verslepen. De handvatten zijn alleen zichtbaar als het widget geselecteerd is, als u een ander widget selecteert of op een lege plaats op het formulier klikt, verdwijnen de handvatten.

4. Klik nogmaals op de knop Tekstvak op de werkbalk en klik daarna op- het formulier om een tweede widget in te voegen. Herhaal dit totdat u drie tekstvakken meer op het formulier hebt. Om het eenvoudig te houden beperken we ons tot vijf gegevensvelden.

- In de ontwerpmodus van formulieren is er een contextmenu beschikbaar, dat geopend kan worden door met de rechter muisknop op een gewenste widget of op het formulier te klikken. Het menu bevat de commando's Knippen, Kopiëren, Plakken, Verwijderen en andere, sommige met submenu's. Voor deze commando's zijn ook sneltoetsen beschikbaar. Sommige commando's zijn alleen beschikbaar voor bepaalde typen widgets.

- Met behulp van de commando's Knippen, Kopiëren en Plakken kunt u widgets verplaatsen of kopiëren naar andere formulieren en zelfs tussen aparte databaseprojecten.

- Wanneer u de &Ctrl;-toets ingedrukt houdt terwijl u op een widget klikt, kunt u meerdere widgets selecteren.

- Als u een kopie van een widget op het formulier wilt maken, kunt u in plaats van Kopiëren en Plakken de &Ctrl;-toets ingedrukt houden terwijl u het widget met de muis versleept. Nadat u de muisknop loslaat, wordt het widget niet verplaatst, maar wordt er een kopie van het widget op de cursorpositie geplaatst.

#### Gegevensbronnen toewijzen

Aan de velden die u ingevoegd hebt, is nog geen gegevensbron toegewezen, ze kunnen dus nog geen informatie uit de database weergeven. Om een gegevensbron toe te wijzen gebruiken we de tabblad (Gegevensbron) in het paneel Eigenschappenbewerker.

Allereerst moet de gegevensbron van het formulier gespecificeerd worden, &ie; de locatie waar de gegevens vandaan gehaald zullen worden. In dit geval gebruiken we de tabel `Personen` als gegevensbron voor het nieuwe formulier.

1. Klik op een lege plaats op het formulier om te zorgen dat de eigenschappen van het formulier gewijzigd worden.

2. Schakel over naar het tabblad (Gegevensbron) en voer de tabelnaam `Personen` in op de keuzelijst van Gegevensbron van formulier of klik op deze naam in de keuzelijst.

U hebt nu de gegevensbron voor het formulier toegewezen. Nu moeten de gegevensbronnen voor de widgets nog gespecificeerd worden.

1. Klik op het eerste tekstveld, bovenin het formulier.

2. Voer de veldnaam `Naam` in in het keuzevak Gegevensbron van het widget op het tabblad (Gegevensbron). U kunt ook deze naam kiezen in de keuzelijst.

3. Klik op het volgende widget voor het tekstveld en voer `Achternaam` voor de gegevensbron in.

4. Op dezelfde manier wijst u gegevensbronnen toe aan de tekstvelden straat huisnummer en plaats.

U kunt nu het formulierontwerp opslaan (u kunt het formulier wel testen als het nog niet opgeslagen is). Om het op te slaan klikt u op de knop Opslaan in de werkbalk. Bij het opslaan wordt een naam voor het formulier gevraagd. Voer `Personen` als opschrift in en klik op de knop OK. De formuliernaam wordt automatisch ingevuld.

U wilt nu waarschijnlijk het formulier testen. Klik op de knop Gegevens op de werkbalk. Als de gegevensbronnen correct zijn toegewezen, ziet u de formuliervelden met de gegevens uit de tabel `Personen`.

- Als u toekenningen van gegevensbronnen aan widgets wilt verwijderen uit een formulierwidget, dan kunt u de knop in het vak Gegevensbron van widget gebruiken.

- Gebruik het pictogram knop van (Ga naar de geselecteerde gegevensbron van het formulier) om de juiste tabel of query in de Projectnavigator te selecteren, zodat u snel een tabel of query als gegevensbron van het formulier kunt openen.

#### Tekstlabels invoegen

Om het voor de gebruiker van het formulier gemakkelijker te maken om de bedoeling van de velden te zien, kunt u er tekstlabels met een duidelijke omschrijving aan toevoegen. Hiervoor gebruikt u het widget Label.

Voeg drie tekstlabelwidgets toe in het formulier, en zet ze aan de linker kant van de tekstvelden (of aan de rechter kant als u de indeling rechts-naar-links gebruikt). Bij het invoegen van een nieuw label verschijnt er een tekstcursor op de locatie waar u de gewenste titel in kunt voeren. Voer achtereenvolgens: `Naam`, `Achternaam`, `Straat`, `Huisnummer` en `Plaats` in. Bovendien voegt u, aan de bovenkant van het formulier, nog een label in met de naam van het formulier, &ie; `Personen`. Vergroot de afmeting van dit label en vergroot de grootte van het lettertype met Lettertype in het tabblad Eigenschappen.

#### Acties

Een Actie is één handeling in de toepassing die de gebruiker kan uitvoeren. De handeling kan ook automatisch uitgevoerd worden als reactie op een bepaalde gebeurtenis, (⪚ na het openen van een formulier).

##### Acties aan knoppen toewijzen

Er kunnen allerlei acties aan knoppen toegewezen worden. De toegewezen actie wordt uitgevoerd nadat er op de knop is geklikt.

Een actie toewijzen:

1. Schakel over naar de Ontwerpweergave als u dat nog niet had gedaan.

2. Selecteer de bestaande knopwidget door er op te klikken of zet een nieuw knopwidget op het formulier. Als u een nieuwe knop invoegt, voer zijn titel in en druk op de &Enter;-toets.

3. Klik op de knopwidget met de rechter muisknop om het contextmenu te tonen.

4. Kies Actie toewijzen... in het contextmenu.

5. Het dialoogvenster Actie toewijzen aan opdrachtknop wordt geopend, hierin staat een lijst met beschikbare acties. Als er een actie aan de widget is toegewezen, is deze geselecteerd. Anders is in de keuzelijst Actiecategorie het item Geen actie geselecteerd.

6. Selecteer het item Toepassingsacties in de lijst Actiecategorie. Er verschijnt een lijst met alle beschikbare acties in de toepassing.

7. Kies één van de acties uit de lijst (⪚ Geselecteerd object verwijderen).

Na omschakelen naar de gegevensweergave van het formulier kunt u kijken of de actie werkt.

- Om een toegewezen actie te verwijderen, kiest u het item Geen actie in de lijst Actiecategorie in het dialoogvenster Actie toewijzen aan knop.

- Acties werken alleen in de gegevensweergave van een formulier. Niet alle toewijzingen van acties zijn zinvol. Bijvoorbeeld de actie Lettertype... is beschikbaar in de gegevensweergave, maar alleen als u een widget in de Ontwerpweergave hebt geselecteerd. Als u wijzigingen doet aan het lettertype dan worden de wijzigingen toegepast op de tekst van dat geselecteerde widget.

#### Widget-layouts

In veel gevallen moeten de widgets overzichtelijk geplaatst en uitgelijnd worden. U kunt de widgets handmatig verplaatsen, uitlijnen en van grootte veranderen, maar dit is arbeidsintensief. Wanneer een gebruiker de grootte van het formulier verandert, wordt geen rekening gehouden met de plaats van de widgets. Bovendien kunt u niet bepalen hoeveel ruimte een formulier nodig heeft, omdat gebruikers met andere schermindelingen en resoluties werken.

Er is een speciaal hulpmiddel waarmee u de widgets op een formulier automatisch kunt indelen: widgets-layout. Hiermee kunt u twee of meer widgets groeperen, zodat deze op de juiste plaats staan en de juiste grootte hebben.

Met layouts wordt het uitlijnen gemakkelijker, tekstvelden staan dichter bij elkaar en de afstand tussen de elementen is overal hetzelfde.

##### Variabele afmetingen van widgets in een layout

U kunt de elementen een vaste grootte geven, maar in &kexi; kunt u ook kiezen uit verscheidene andere manieren om de grootte van elementen in te stellen. Variabele afmetingen bieden een flexibele methode om te bepalen hoeveel een element uitgerekt (of samengedrukt) wordt, afhankelijk van naastgelegen elementen en de beschikbare ruimte op het formulier.

Na het invoegen van widgets op een regel zal deze van grootte veranderen om de zichtbare tekst te laten passen.

In de Eigenschappenbewerker kunt u voor elk element de variabele afmetingen instellen. Deze instellingen staan bij elkaar in de groep eigenschappen Variabele afmetingen.

Deze groep eigenschappen bevat:

Horizontaal variabel afmetingen

- bepalen de horizontale grootte van het widget,

Verticaal variabele afmetingen

- bepalen de verticale grootte van het widget,

Horizontaal uitrekken

- bepaalt de mate waarin de Horizontaal variabele afmetingen beïnvloed worden,

Verticaal uitrekken

- bepaalt de mate waarin de Verticaal variabele afmetingen beïnvloed worden

##### Waarden van variabele afmetingen

De volgende waarden zijn beschikbaar in de keuzelijst bij Hor. var. afm. en Vert. var. afm. in de Eigenschappenbewerker:

Vast

- deze waarde betekent dat de afmetingen van het widget niet automatisch gewijzigd kunnen worden; de afmetingen (breedte of hoogte), die tijdens het ontwerpen gedefinieerd zijn, blijven behouden,

Minimum

- deze waarde betekent dat de oorspronkelijke grootte van het widget als minimale grootte wordt ingesteld, de afmetingen voldoen en het is niet nodig om het widget groter te maken, maar zodra het nodig is, wordt het widget groter gemaakt. Dit type van variabele afmetingen kan worden gebruikt om het widget tot de totale breedte of hoogte te vergroten, in het bijzonder als u de uitrekwaarde op groter dan 0 instelt.

Maximum

- deze waarde betekent dat de oorspronkelijke grootte van het widget als maximale grootte wordt ingesteld en dat het widget kleiner gemaakt kan worden, zonder dat het onbruikbaar of onleesbaar wordt, als andere widgets meer ruimte nodig hebben,

Voorkeur

- deze waarde betekent dat de oorspronkelijke grootte van het widget het beste is en de voorkeur heeft; het widget kan echter groter of kleiner gemaakt worden en het zal leesbaar blijven,

Toenemend

- deze waarde betekent dat de oorspronkelijke grootte van het widget redelijk is, maar het widget kan kleiner gemaakt worden; het kan ook zo groter gemaakt worden om zo veel mogelijk ruimte in te nemen,

Minimum toenemend

- deze waarde betekent dat de oorspronkelijke grootte van het widget toegestaan is; het kan groter gemaakt worden om zo veel mogelijk ruimte in te nemen,

Genegeerd

- deze waarde betekent dat de oorspronkelijke grootte van het widget genegeerd wordt; het widget kan groter gemaakt worden om zo veel mogelijk ruimte in te nemen, maar andere widgets maken dat gewoonlijk niet mogelijk

Verschillende typen widgets hebben ook verschillende standaarden voor de variabele afmetingen; knoppen hebben bijvoorbeeld als standaard dat de variabele afmetingen ingesteld zijn op Minimum (in beide richtingen), terwijl voor tekstvakken de verticaal variabele afmetingen ingesteld zijn op Vast.

De meestgebruikte variabele afmetingen zijn Voorkeur, Minimum en Maximum.

##### Verticaal en horizontaal uitrekken

De eigenschappen Vert. uitrekken en Hor. uitrekken accepteren waarden die groter dan of gelijk aan 0 zijn (de waarde moet een geheel getal zijn). Met behulp van deze eigenschappen kunt u het gedrag van variabele afmetingen preciezer instellen. De standaardwaarden voor beide eigenschappen is 0. Een hogere waarde voor het uitrekken betekent dat het widget meer vergroot wordt dan widgets waarvoor een lagere waarde ingesteld is.

### Gegevens in formulieren invoeren

Het is de taak van de gebruiker van de database om gegevens in te voeren en te bewerken. Het is de taak van de ontwerper om te controleren of de gegevensinvoer en weergave naar verwachting werkt.

Schakel over naar de gegevensweergave om het formulier te testen. De gegevens van één rij (record) uit de database worden in de velden weergegeven. U kunt naar een ander veld navigeren door er met de linker muisknop op de klikken of door op de - en &Shift; -toetsen te drukken. Als u de inhoud van een veld bewerkt drukt u op &Shift; &Enter; of klikt u op Record opslaan op de werkbalk om de gewijzigde rij op te slaan. Klik op Wijzigingen in record annuleren op de werkbalk om de oorspronkelijke inhoud weer terug te zetten. U kunt met de knoppen in de recordnavigator naar andere rijen navigeren. De knoppen van de recordnavigator werken hetzelfde als die in de gegevensweergave van een tabel.

## Kexi instellen

- Zijpanelen vastzetten en losmaken

### Panelen vastzetten en losmaken

De panelen Projectnavigator en Eigenschappenbewerker kunnen op twee manieren losgemaakt worden:

- Dubbelklik op het handvat bovenin het paneel; of

- één keer klikken op de diamantknop bovenaan het paneel naast de x.

Losgemaakte panelen kunnen weer vastgezet worden in het hoofdvenster op de volgende manieren:

- Dubbelklik op het handvat bovenin het venster; of

- één keer klikken op de diamantknop bovenaan het paneel naast de x.

Bij het losmaken van een paneel herinnert &kexi; de laatste vaste positie zodat bij het vastzetten van het paneel, het weer op locatie gezet wordt waar het het laatst werd vastgezet.

## De commando's

- Het tabblad Kexi

- Het tabblad Aanmaken

- Het tabblad Gegevens

- Het tabblad Externe gegevens

- Het tabblad Hulpmiddelen

- Het tabblad Formulierontwerp

- Het tabblad Rapportontwerp

### Het tabblad Kexi

Het tabblad &kexi; is de plaats waar u interactie hebt met de projecten van &kexi;.

Een actie selecteren zal een scherm direct naast het menu openen, die opties biedt over de door u te kiezen actie.

De geboden opties zijn:

Welkom

- Hier kunt u een project selecteren waaraan u recent hebt gewerkt.

Openen

- Hier kunt u een &kexi;-project openen dat ofwel in een bestand is opgeslagen of in een databaseserver.

Sluiten

- Deze actie sluit het nu geopende &kexi; project.

Nieuw

- Hier kunt u de assistent volgen om een nieuw &kexi; project te openen.

Importeren, exporteren of verzenden...

- Hier kunt u de assistent volgen om bestaande gegevens in het nu geopende &kexi; project te importeren.

Afsluiten

- Sluit &kexi;.

### Het tabblad Aanmaken

Met het tabblad Aanmaken kunt u objecten aanmaken die zullen worden toegevoegd aan uw project.

Tabel

- Tabel selecteren neemt u mee naar de tabelontwerper in de ontwerpweergave om u in staat te stellen velddefinities aan uw tabel toe te voegen.

Query

- Query selecteren neemt u mee naar de query-ontwerper in de ontwerpweergave om u in staat te stellen een Query te ontwerpen om eigen resultaten uit uw tabellen in uw project te halen.

Formulier

- Formulier selecteren neemt u mee naar het formulierontwerp in de ontwerpweergave om u in staat te stellen widgets aan uw formulier toe te voegen.

Rapport

- Rapport selecteren neemt u mee naar de rapportontwerper in de ontwerpweergave om u in staat te stellen widgets aan uw rapport toe te voegen.

Script

- Script selecteren neemt u mee naar de scriptbewerker om u in staat te stellen eigen code aan uw project en/of objecten toe te voegen.

### Het tabblad Gegevens

Vanuit het tabblad Gegevens kunt u gegevens in uw tabellen of widgets in uw objecten (formulieren, rapporten, etc) manipuleren

Knippen

- Knippen plaatst de gegevens / het widget op het klembord en verwijdert het uit zijn huidige positie.

Kopiëren

- Kopiëren plaatst de gegevens / het widget op het klembord zonder het uit zijn huidige positie te verwijderen.

Plakken

- Plakken plaatst de gegevens/het widget op het klembord naar de tabel/het object.

Plakken speciaal

- Plakken speciaal wordt gebruikt om willekeurige gegevens op het klembord in een tabel te plaatsen, op een nanier die is te voorspellen zodat het op de juiste wijze wordt toegevoegd volgens de definitie van de tabel.

Zoeken

- Zoeken opent de zoekdialoog om naar specifieke tekst in de gegevens in de database te zoeken.

### Het tabblad Externe gegevens

Vanaf het tabblad Externe gegevens kunt u gegevens uit andere bronnen in uw &kexi; project importeren.

Gegevens uit bestand importeren

- Gegevens uit bestand importeren, toont een dialoog die u in staat stelt om gegevens uit CSV- of platte tekst bestanden naar een nieuwe tabel in uw project te importeren.

Tabellen importeren

- Tabellen importeren, opent de Assistent voor Tabellen importeren die u in staat stelt om gegevens te importeren uit een `fods`-, `mdb`-, `ods`-, `tsv`-bestand of uit een andere databaseserver, naar een nieuwe tabel in uw project.

Gegevens naar bestand exporteren

- Gegevens naar bestand exporteren, toont een dialoog die u in staat stelt om de huidige gegevens in tabellen naar een platte tekst of CSV-bestand te exporteren.

De tabel moet open zijn, om in staat te zijn er gegevens uit te exporteren naar een bestand.

### Het tabblad Hulpmiddelen

Vanuit het tabblad Hulpmiddelen kunt u uw projecten manupileren.

Database comprimeren

- Database comprimeren, controleert op kleine fouten in de database en reduceert de grootte van de database.

U zou regelmatig uw database moeten opslaan om het in goede vorm te houden, speciaal na grote bewerkingen op records (massale toevoegingen, verwijderingen)

### Het tabblad Formulierontwerp

Vanui het tabblad Formulierontwerp kunt u widgets selecteren om aan uw formulier toe te voegen.

Aanwijzer

- Aanwijzer, schakelt naar de selectiemodus van widgets.

Na de selectie van een widget, wordt overgeschakeld naar de toevoegingsmodus van een widget. Daarna kunt u overal klikken op het formulier om het widget te plaatsen.

Label

- Een Label-widget toont voorgedefinieerde informatie op een formulier. Gewoonlijk wordt het gebruikt als tekst naast andere widgets met gegevens.

Tekstvak

- Een Tekstvak is een container die één regel met gegevens uit uw tabel bevat.

Teksteditor

- Een Teksteditor is een container die meerdere regels voor gegevens uit uw tabel kan bevatten.

Keuzelijst

- Een Keuzevak toont een lijst van opties om uit te kiezen.

Keuzevakje

- Een Keuzevakje bevat twee of drie toestanden van gegevens (⪚ aan/uit)

Afbeeldingsvak

- Een Afbeeldingsvak bevat een afbeelding, gebonden aan een veld in een tabel.

Knop

- Een Knop stelt u in staat uit te voeren acties te definiëren bij het erop klikken.

Frame

- Een Frame wordt gebruikt als een container voor andere widgets.

Groepsvak

- Een Groepsvak wordt gebruikt om andere widgets te groeperen en hun status te besturen.

Tabwidget

- Een Tabbladwidget wordt gebruikt als een container voor andere widgets en kan vele pagina's bevatten met verschillende widgets.

Regel

- Een Lijn wordt gebruikt als een logische scheideng tussen verschillende delen van een formulier.

Webbrowser

- Een Webbrowser is een widget die u in staat stelt een webpagina in het formulier te tonen.

Actie toewijzen

- Actie toekennen wordt gebruikt om een uit te voeren actie toe te kennen wanneer er een gebeurtenis plaatsvindt (⪚ klikken op een knop).

### Het tabblad Rapportontwerp

vanuit het tabblad Rapportontwerp kunt u widgets selecteren om toe te voegen aan uw rapport.

Label

- Een Label-widget toont voorgedefinieerde informatie op een rapport. Gewoonlijk wordt het gebruikt als tekst naast andere widgets met gegevens.

Veld

- Een Veld-widget is een container die één regel met gegevens uit uw tabel bevat.

Tekst

- Een Tekst-widget is een container die meerdere regels voor gegevens uit uw tabel kan bevatten.

Afbeelding

- Een Afbeelding-widget bevat een afbeelding, gebonden aan een veld in een tabel.

Activeer

- Een Keuzevakje-widget bevat twee of drie toestanden van gegevens (⪚ aan/uit)

Regel

- Een Lijn wordt gebruikt als een logische scheideng tussen verschillende delen van een formulier.

Grafiek

- Een Grafiek-widget wordt gebruikt om een visuele representatie van uw gegevens presenteert in een grafiek.

Web

- Een Web-widget wordt gebruikt om een minimale webbrowsercomponent te bieden en informatie af te drukken uit een lokale of website op afstand in een rapport.

Barcode

- Een Barcode-widget wordt gebruikt om een af te drukken barcode te maken in een rapport, uit gegevens in een veld.

## Appendix A. Introductie tot databases

- Wat is een database?

- Database and rekenblad

- Database-ontwerp

- Wie heeft een database nodig?

- Software voor het maken van databases

### Wat is een database?

Een database kan gedefinieerd worden als een verzameling gegevens over één onderwerp. Deze is zo georganiseerd dat men gemakkelijk naar informatie kan zoeken, wijzigingen kan maken en nieuwe items toe kan voegen.

Bekijk het onderstaande diagram voor één van de bovenstaande voorbeelden: een telefoonboek.

In de bovenstaande afbeelding ziet u de gegevens van twee contacten, elk op een aparte kaart. Een kaart kan ook een enkele rij in een tabel voorstellen.

### De tabel "Contacten"

Naam | Tel. nr.
Joan | 699 23 43 12
Adam | 711 19 77 21

Termen en definities: Een enkel gegeven dat deel uitmaakt van een grotere verzameling kan een rij of meer professioneel een record genoemd worden. De verzameling wordt gewoonlijk een tabel genoemd. Een logische naam voor de tabel beschrijft de gegevens die erin opgeslagen zijn, in dit geval is dat Contacten. Verder bestaat elke rij in de tabel uit kolommen, ook wel velden genoemd. In de tabel `Contacten` zijn er twee kolommen (velden): Naam en Telefoonnummer.

Voor eenvoudig gebruik kan een database uit een enkele tabel bestaan. Vaak worden deze twee ook als gelijkwaardig gezien. Zoals u zult zien, gebruiken we voor echte databases gewoonlijk meer dan één tabel.

Kortom, u hebt al een eenvoudige database met één tabel `Contacten`.

Bekijk de inhoud op

### Database en spreadsheet (rekenblad)

Hoogstwaarschijnlijk hebt u al spreadsheet-toepassingen gebruikt, zoals Calligra Sheets, LibreOffice Calc of &Microsoft; Excel. In dat geval vraagt u zich misschien af: spreadsheets en databases hebben allebei tabellen, waarom zou ik de laatste gebruiken?

Bij het vergelijken van spreadsheets en databases kunt u de volgende punten tegenkomen die later gedetailleerder ter sprake komen.

#### Waarin verschilt een database van een spreadsheet?

Om de capaciteit groter dan die van een mobiele telefoon te maken, voegt u een kolom (veld) `Adres` aan de tabel `Contacten` toe. Voeg voor iedere persoon meer telefoonnummers (werk, thuis) toe en voeg achternamen aan namen toe. Om het eenvoudiger te maken nemen we het volgende aan:

- De tabel is beperkt tot twee personen (in een echte database kunnen dat er honderden of duizenden zijn)

- Er zijn geen twee personen met dezelfde naam en achternaam

#### De tabel "Contacten"

Naam en achternaam | Tel | Adres
Joan Smith | 699 23 43 12 | Western Gate 1, Warsaw
Adam Willson | 711 19 77 21 | London, Frogs Drive 5
Joan Smith | 110 98 98 00 | Western Gate 1
Smith Joan | 312 43 42 22 | Warsaw, Western Gate 1
ADAM Willson | 231 83 02 04 | Frogs Drive 5, London

Zo'n tabel kan zowel in een spreadsheet als in een database gemaakt worden. In een spreadsheet is dat natuurlijk gemakkelijk te doen. Welk probleem komen we op dit punt tegen?

#### Integriteit van referentiegegevens

Veronderstel dat u een spreadsheet gebruikt en dat u het adres van ten minste één persoon moet veranderen. Er is een klein probleem: u moet het adres vaak in veel rijen veranderen. Joan staat bijvoorbeeld op drie rijen. Er ontstaat een echt probleem als u vergeet om het adres in één van de rijen te veranderen - het adres dat bij deze persoon hoort, is dubbelzinnig, hierdoor verliezen uw gegevens hun integriteit.

Bovendien is er geen eenvoudige manier om een persoon uit de tabel te verwijderen, omdat u eraan moet denken dat alle rijen met betrekking tot die persoon verwijderd moeten worden.

#### Dubbele gegevens

Dit houdt direct verband met het vorige probleem. In de velden Naam en achternaam en Adres zijn dezelfde gegevens meerdere keren ingevoerd. Dit is typerend voor de manier waarop spreadsheets gegevens opslaan, de database wordt onnodig groot en vereist daardoor meer van de computer (meer te verwerken gegevens vereisen meer tijd).

Hoe kunt u deze problemen met behulp van een database oplossen? U kunt de informatie in kleinere stukken opsplitsen door een aanvullende tabel `Personen` aan te maken, deze tabel heeft slechts twee kolommen: `Naam en achternaam` en `Adres`:

#### De tabel Personen

Naam en achternaam | Adres
Joan Smith | Western Gate 1, Warsaw
Adam Willson | Frogs Drive 5, London

Elke rij in de tabel `Personen` komt overeen met een enkele persoon. De tabel `Contacten` is vanaf nu een relatie naar de tabel `Personen`.

#### Integriteit en geldigheid van gegevens

Let op de manier waarop gegevens in de velden `Naam en achternaam` en `Adres` zijn ingevuld. Mensen die gegevens intypen kunnen fouten maken en soms slordig zijn. In ons voorbeeld hebben we namen in verschillende volgordes en vormen (Joan Smith en Smith Joan; Adam en ADAM) en ook verschillende manieren om hetzelfde adres in te typen. Er zijn vast nog meer verschillende manieren te bedenken.

Het bovenstaande laat zien dat, wanneer u ⪚ het telefoonnummer van een persoon met het adres Western Gate 1, Warsaw zoekt, u niet alle resultaten ziet. U krijgt slechts één rij te zien in plaats van drie. Ook vindt u niet alle telefoonnummers voor Joan Smith in het veld `Naam en achternaam`, omdat Smith Joan niet hetzelfde is als Joan Smith.

Hoe kunt u deze problemen oplossen door een database te gebruiken? U kunt dit doen door het ontwerp van de tabel `Personen` te veranderen:

1. Splits de gegevens in het veld Naam en achternaam in twee aparte velden: `Naam` en `Achternaam`.

2. Splits de gegevens in het veld `Adres` in drie aparte velden: `Straat`, `Huisnummer` en `Plaats`.

3. Geldigheid van gegevens garanderen: door er zeker van te zijn dat er geen lege velden zijn, u moet ⪚ altijd een huisnummer invullen.

Een gewijzigde tabel ziet er ongeveer zo uit:

#### De tabel Personen

Naam | Achternaam | Straat | Huisnummer | Plaats
Joan | Smith | Western Gate | 1 | Warsaw
Adam | Willson | Frogs Drive | 5 | London
Voorwaarden
vereist veld | vereist veld | vereist veld | vereist veld | vereist veld

Dankzij het introduceren van de voorwaarde vereist veld kunnen we er zeker van zijn dat ingevulde gegevens compleet zijn. Bij andere tabellen kunt u natuurlijk toestaan dat bepaalde velden leeg blijven.

#### Beperking van gegevensweergave

Een spreadsheet geeft alle rijen en kolommen van de tabel weer, wat lastig kan zijn als er veel gegevens zijn. U kunt in spreadsheets natuurlijk rijen filteren en sorteren, maar dat vereist extra voorzichtigheid. Wanneer u een spreadsheet gebruikt, loopt u het risico dat u vergeet dat de gegevens gefilterd zijn, wat tot vergissingen kan leiden. Bij het berekenen van totalen kunt u denken dat u 100 rijen met gegevens hebt, terwijl er nog 20 extra rijen verborgen zijn.

Als u met een klein gedeelte van de gegevens wilt werken, ⪚ om deze gegevens door een ander te laten bewerken, kunt u deze naar een ander spreadsheet kopiëren en, nadat ze bewerkt zijn weer terugkopiëren. Deze handmatige bewerking kan echter de oorzaak zijn van gegevensverlies of van onjuiste berekeningen.

Om de zichtbaarheid van gegevens te beperken, kunnen database-toepassingen query's, formulieren en rapporten maken.

Een praktische manier om de gegevens te beperken is de volgende uitgebreide versie van de eerder beschreven tabel `Personen`:

#### De tabel Personen

Naam | Achternaam | Straat | Huisnummer | Plaats | Inkomen
Joan | Smith | Western Gate | 1 | Warsaw | 2300
Adam | Willson | Frogs Drive | 5 | London | 1900

We nemen aan dat de nieuwe kolom Inkomen vertrouwelijke gegevens bevat. Hoe kunt u informatie over de personen door uw medewerkers laten inzien, zonder de inkomens bekend te maken? Dit is mogelijk als u ze alleen een query en niet de gehele tabel geeft. De query kan alle kolommen behalve Inkomen selecteren. In de wereld van de database staat zo'n query ook bekend als weergave (view).

#### Prestatie en capaciteit

U werkt waarschijnlijk met een vrij snelle computer, maar u zult ook inzien dat dat bij grote, logge spreadsheets niet echt helpt. Het gebrek aan efficiëntie wordt ten eerst veroorzaakt door het ontbreken van indexen die het zoekproces versnellen (databases hebben die wel). Ook het gebruik van een klembord om gegevens te kopiëren kan na verloop van tijd lastig worden.

Het duurt lang om spreadsheets die veel gegevens bevatten te openen. Een spreadsheet laadt heel veel gegevens in het computergeheugen. De meeste van deze gegevens hebt u waarschijnlijk niet direct nodig. Databases laden, in tegenstelling tot spreadsheets, de gegevens alleen wanneer ze nodig zijn.

In de meeste gevallen hoeft u er niet om te denken hoe de database de gegevens opslaat. Dit betekent dat het volgende voor databases, in tegenstelling tot spreadsheets, niet uitmaakt:

- De volgorde van de rijen, u kunt deze immers veranderen als dat nodig is. Bovendien kunt u dezelfde gegevens in andere volgorden in meer weergaven tegelijk zien.

- Hetzelfde geldt voor de kolommen (velden) in de tabel.

Samen met Beperking van gegevensweergave beschreven in het vorige gedeelte, bepalen deze eigenschappen de voordelen van databases.

#### Gegevensinvoer

De nieuwere versies van toepassingen om spreadsheets te creëren bieden de mogelijkheid om formulieren voor gegevensinvoer te ontwerpen. Zulke formulieren zijn nuttig als de gegevens niet gemakkelijk in een tabel getoond kunnen worden, ⪚ omdat de tekst te lang is of omdat niet alle kolommen op het scherm passen.

In dit geval is de manier waarop de spreadsheet werkt problematisch. Velden voor gegevensinvoer worden her en der in de spreadsheet geplaatst en zijn vaak niet beschermd tegen (bedoelde of onbedoelde) bewerking door andere gebruikers.

#### Rapporten

In databases kunnen gegevens gegroepeerd, beperkt en verzameld worden in de vorm van een rapport. Spreadsheets worden gewoonlijk in de vorm van kleine tabellen afgedrukt zonder volledige automatische controle over de verdeling van de pagina's en de indeling van de velden.

#### Programmeren

Toepassingen voor het creëren van databases beschikken vaak over volwaardige programmeertalen. Nieuwere spreadsheets hebben deze mogelijk ook, maar berekeningen worden nog steeds gedaan door het wijzigen van de velden en het kopiëren van gegevens, zonder rekening te houden met de eerder genoemde regels voor relevantie en integriteit.

In een spreadsheet worden de gegevens gewoonlijk in een grafische gebruikersinterface verwerkt, waardoor de snelheid achteruit kan gaan. Databases kunnen in de achtergrond werken, buiten de grafische interface om.

#### Gebruik door meer personen tegelijk

Het is moeilijk om met meer personen tegelijk aan een spreadsheet te werken. Zelfs als het technisch mogelijk is, zoals bij de nieuwste toepassingen, dan vereist het nog een hoge mate van discipline, aandacht en kennis van de gebruikers; en deze eigenschappen kunnen niet gegarandeerd worden.

Een klassieke manier om gegevens in een spreadsheet met anderen te delen is: het gehele bestand versturen (gewoonlijk per email) of het bestand op een netwerk opslaan. Deze manier van werken is niet effectief voor grote groepen - gegevens die op een bepaalde tijd nodig zijn, kunnen geblokkeerd zijn doordat iemand anders eraan werkt.

Databases zijn juist ontworpen om de gegevens voor meer personen tegelijk toegankelijk te maken. Zelfs in de eenvoudigste versies kunnen rijen in een bepaalde tabel geblokkeerd worden, waardoor de tabelgegevens gemakkelijk gedeeld kunnen worden.

#### Beveiliging

Het beveiligen van een spreadsheet of bepaalde delen ervan met een wachtwoord is vaak niet meer dan symbolisch. Nadat een spreadsheet op een computernetwerk opgeslagen is, kan iedereen die het bestand kan kopiëren ook proberen het wachtwoord te achterhalen. Dit is vaak niet eens moeilijk als het wachtwoord in hetzelfde bestand als de spreadsheet opgeslagen is.

Functies om het bewerken of het kopiëren van een spreadsheet (of een deel ervan) te blokkeren, zijn eveneens gemakkelijk te kraken.

Databases (behalve die in een bestand opgeslagen zijn in plaats van op een server) hoeven niet als een enkel bestand beschikbaar te zijn. U krijgt toegang tot een database via een computernetwerk, gewoonlijk moet u een gebruikersnaam een een wachtwoord opgeven. U krijgt alleen toegang tot de delen (tabellen, formulieren of zelfs alleen bepaalde rijen en kolommen) die aan u toegewezen zijn door het instellen van toegangsrechten.

Toegangsrechten bepalen of gegevens bewerkt of alleen gelezen kunnen worden. Als bepaalde gegevens niet voor u beschikbaar zijn, worden die ook niet naar uw computer gestuurd, er is dan ook geen mogelijkheid om de gegevens zo gemakkelijk te kopiëren, zoals dat wel bij spreadsheets kan.

### Database-ontwerp

Over het ontwerpen van een database moet zorgvuldig nagedacht worden. U kunt waarschijnlijk wel inzien dat het wijzigen van de tabellen van `Personen`, zoals voorgesteld werd in hoofdstuk Integriteit en geldigheid van gegevens, problemen kan opleveren als de tabel veel gegevens bevat. Bijvoorbeeld: een veld hernoemen is gemakkelijk, maar het splitsen van het veld Adres in aparte velden is lastig werk en vereist veel aandacht.

Om zulke situaties te vermijden moet u nadenken over uw databaseproject voordat u het daadwerkelijk op de computer creëert en voordat anderen het gaan gebruiken. Door in het begin wat meer tijd te investeren, kunt u later vrijwel zeker veel tijd bij uw dagelijks werk besparen.

### Wie heeft een database nodig?

#### Gebruik een spreadsheet als:

- u de uitgebreide mogelijkheden niet nodig hebt en als de hoeveelheid gegevens niet steeds groter wordt (maar kunt u dat met zekerheid voorspellen?)

- u niet in staat bent om de methodes om een database te maken te leren. U zou er dan over kunnen denken om deze taak uit te besteden of om eenvoudigere hulpmiddelen te gebruiken.

- u ingewikkelde spreadsheets gebruikt en het ontbreekt u aan tijd of geld om over te schakelen naar databases. Bedenk of dit geen doodlopende weg is. Reken niet op magische hulpmiddelen die uw spreadsheet (hoe goed ontworpen ook) in een database veranderen.

#### Overweeg om databases te gebruiken als:

- uw verzameling gegevens met de week groeit.

- u vaak nieuwe spreadsheets maakt, tussen spreadsheets heen en weer kopieert, en het gevoel krijgt dat het werk steeds lastiger wordt. In dit geval wordt de moeite van het overschakelen snel terugverdiend.

- u rapporten en overzichten maakt waarvoor de tabelweergave van een spreadsheet niet geschikt is. U kunt overwegen om over te schakelen naar een database met formulierweergaven.

### Software voor het maken van databases

Tot nu toe hebt u iets geleerd over de algemene eigenschappen van databases zonder details over specifieke toepassingen om ze te ontwerpen.

De eerste databases zijn tegelijk met grote mainframes in de jaren 60 gebouwd, ⪚ IBM System/360. Dat was voordat de pc's hun intrede deden. Deze databases werden onderhouden door gespecialiseerd personeel. Hoewel de hardware van die computers onberekenbaar was, ze erg langzaam waren en weinig opslagruimte hadden, blijft één van de eigenschappen van de databases ook nu nog een aantrekkelijk voordeel: veel gebruikers kunnen tegelijkertijd toegang tot de gegevens hebben via een netwerk.

In de jaren 70 ontwikkelden wetenschappers de theorie van relationele databases (termen zoals: tabel, record, veld, relationeel en vele anderen). Op basis van deze theorie zijn de IBM DB2 en Oracle-databases gecreëerd, die verder ontwikkeld werden en nog steeds gebruikt worden. Aan het einde van de jaren 70 kwamen de eerste pc's op de markt. Hun gebruikers konden langzaamaan steeds meer verschillende toepassingen gebruiken, ook die voor het creëren van databases.

Voor grote databases van bedrijven is de situatie niet veranderd: ze hebben nog steeds krachtige computers of aan elkaar geschakelde computers, clusters genoemd, nodig. Dit valt echter buiten het bereik van dit handboek.

Op het gebied van toegankelijke databases met een grafische gebruikersinterface voor pc's kunt u kiezen uit de volgende mogelijkheden:

- DBase - een hulpmiddel om databases te beheren voor DOS, populair in de jaren 80. Bestanden in DBase-formaat worden nog steeds in speciale gevallen gebruikt omdat hun structuur zo eenvoudig is.

- FoxPro - een toepassing die op DBase lijkt (begin jaren 90). Na de overname door Microsoft werd er een grafische gebruikersinterface aan toegevoegd, sinds die tijd werd het gebruikt om databases op pc's te creëren. Het product is nog steeds op de markt, hoewel het een beetje verouderd lijkt.

- Microsoft Access - een toepassing voor databases (gegevens en ontwerpen van grafische interfaces) met veel vereenvoudigingen en daarom geschikt voor beginners, ontworpen eind jaren 80, gebaseerd op 16-bits architectuur. Dit is ook nu nog op de markt en wordt nog veel gebruikt, vooral door kleine bedrijven waar efficiëntie en de toegang van meer gebruikers tegelijk niet zo belangrijk zijn.

- FileMaker - een populaire toepassing die wel wat op MS Access lijkt wat betreft eenvoud, draait op Windows en Macintosh platforms, op de markt sinds 1985.

- Kexi - een toepassing voor meerdere platforms (&UNIX;/&Linux;, Windows, &MacOS; X) ontworpen in 2003, ontwikkeld volgens Open Source principes, onderdeel van de globale KDE gemeenschap, doe onder andere dingen levert als een grafische omgeving voor &UNIX;/&Linux; systemen. Een belangrijke bijdrage aan de ontwikkeling van Kexi is het bedrijf OpenOffice Poland.

## Appendix B. Kexi vergelijken met andere database-toepassingen

- Gegevenstypen

### Gegevenstypen

Hoewel verschillende database-toepassingen gelijksoortige functies hebben, gebruiken ze vaak andere termen. Om het u gemakkelijk te maken vindt u hier een overzicht van de terminologie in &kexi; en de corresponderende termen die in andere database-toepassingen gebruikt worden. Dit hoofdstuk kan nuttig zijn bij de migratie van databases van de ene toepassing naar een andere.

De tabel hieronder laat zien hoe de gegevenstypen in &kexi; corresponderen met gegevenstypen in andere database-toepassingen.

Sommige van de gegevenstypen zijn subtypen van andere typen. Het type Lange tekst is bijvoorbeeld een subtype van het type Tekst. Als u een subtype in &kexi; wilt gebruiken, moet het bijbehorende basistype (in dit geval Tekst) in het tabelontwerp kiezen en daarna het subtype kiezen bij de instelling Subtype in de Eigenschappenbewerker.

### Vergelijking van de gegevenstypen in Kexi en in andere database-toepassingen.

&kexi; | MS Access | dBase/FoxPro | Paradox
Tekst (Text) | Tekst | Teken | Alfanumeriek
Lange tekst (Long text) | Memo | Memo | Memo
Datum/Tijd (Date/Time) | Datum, Tijd | Datum | DatumTijd
Heel getal (Integer Number) | Getal (Integer) | Numeriek | Integer
Groot heel getal (Big Integer Number) | Long Integer | Numeriek | Long Integer
Drijvende kommagetal (Floating Point Number) | Enkele/dubbele precisiegetal | Drijvend | Getal

## Appendix C. Voor SQL gereserveerde woorden

De volgende lijsten bevatten woorden die intern door &kexi; worden gebruikt bij het werken met gegevensbronnen.

Bij het ontwerpen van uw database zou uw best moeten doen om het gebruikt van deze gereserveerde woorden te vermijden omdat u anders problemen kunt krijgen met uw databasebestand of deze zelfs kunt beschadigen.

Als u ze toch gereserveerde woorden wilt gebruiken omsluit ze dan met dubbele aanhalingstekens .

### Voor Kexi-SQL gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik in Kexi-SQL:

- AFTER

- ALL

- ASC

- BEFORE

- BEGIN

- BETWEEN

- BY

- CASCADE

- CASE

- CHECK

- COLLATE

- COMMIT

- CONSTRAINT

- CROSS

- DATABASE

- DEFAULT

- DELETE

- DESC

- DISTINCT

- DROP

- END

- ELSE

- EXPLAIN

- FOR

- FOREIGN

- FULL

- GROUP

- HAVING

- IGNORE

- INDEX

- INNER

- INSERT

- INTO

- KEY

- LIMIT

- MATCH

- NATURAL

- OFFSET

- ORDER

- OUTER

- PRIMARY

- REFERENCES

- REPLACE

- RESTRICT

- ROLLBACK

- ROW

- SET

- TEMPORARY

- THEN

- TRANSACTION

- UNION

- UNIQUE

- UPDATE

- USING

- VALUES

- WHEN

### Voor Kexi-SQLite Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-SQLite Driver:

- ABORT

- ATTACH

- CLUSTER

- CONFLICT

- DEFERRED

- DEFERRABLE

- DETACH

- EACH

- EXCEPT

- FAIL

- GLOB

- IMMEDIATE

- INITIALLY

- INSTEAD

- INTERSECT

- ISNULL

- NOTNULL

- OF

- PRAGMA

- NAAR VOREN

- STATEMENT

- TEMP

- TRIGGER

- VACUUM

- VIEW

### Voor Kexi-MySQL Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-MySQL Driver:

- ACTION

- ADD

- AGAINST

- AGGREGATE

- ALTER

- ANALYZE

- ANY

- ASCII

- AUTO_INCREMENT

- AVG

- AVG_ROW_LENGTH

- BACKUP

- BDB

- BERKELEYDB

- BIGINT

- BINARY

- BINLOG

- BIT

- BLOB

- BOOL

- BOOLEAN

- BOTH

- BTREE

- BYTE

- CACHE

- CHANGE

- CHANGED

- CHAR

- CHARACTER

- CHARSET

- CHECKSUM

- CIPHER

- CLIENT

- CLOSE

- COLLATION

- COLUMN

- COLUMNS

- COMMENT

- COMMITTED

- COMPRESSED

- CONCURRENT

- CONVERT

- CUBE

- CURRENT_DATE

- CURRENT_TIME

- CURRENT_TIMESTAMP

- CURRENT_USER

- DATA

- DATABASES

- DATE

- DATETIME

- DAY

- DAY_HOUR

- DAY_MICROSECOND

- DAY_MINUTE

- DAY_SECOND

- DEALLOCATE

- DEC

- DECIMAL

- DELAYED

- DELAY_KEY_WRITE

- DESCRIBE

- DES_KEY_FILE

- DIRECTORY

- DISABLE

- DISCARD

- DISTINCTROW

- DIV

- DO

- DOUBLE

- DUAL

- DUMPFILE

- DUPLICATE

- DYNAMIC

- ENABLE

- ENCLOSED

- ENGINE

- ENGINES

- ENUM

- ERRORS

- ESCAPE

- ESCAPED

- EVENTS

- EXECUTE

- EXISTS

- EXPANSION

- EXTENDED

- FALSE

- Snel

- FIELDS

- FILE

- FIRST

- FIXED

- FLOAT

- FLOAT4

- FLOAT8

- FLUSH

- FORCE

- FULLTEXT

- FUNCTION

- GEOMETRY

- GEOMETRYCOLLECTION

- GET_FORMAT

- GLOBAL

- GRANT

- GRANTS

- HANDLER

- HASH

- HELP

- HIGH_PRIORITY

- HOSTS

- HOUR

- HOUR_MICROSECOND

- HOUR_MINUTE

- HOUR_SECOND

- IDENTIFIED

- IF

- IMPORT

- INDEXES

- INFILE

- INNOBASE

- INNODB

- INSERT_METHOD

- INT

- INT1

- INT2

- INT3

- INT4

- INT8

- INTERVAL

- IO_THREAD

- ISOLATION

- ISSUER

- KEYS

- KILL

- LAST

- LEADING

- LEAVES

- LEVEL

- LINES

- LINESTRING

- LOAD

- LOCAL

- LOCALTIME

- LOCALTIMESTAMP

- LOCK

- LOCKS

- LOGS

- LONG

- LONGBLOB

- LONGTEXT

- LOW_PRIORITY

- MASTER

- MASTER_CONNECT_RETRY

- MASTER_HOST

- MASTER_LOG_FILE

- MASTER_LOG_POS

- MASTER_PASSWORD

- MASTER_PORT

- MASTER_SERVER_ID

- MASTER_SSL

- MASTER_SSL_CA

- MASTER_SSL_CAPATH

- MASTER_SSL_CERT

- MASTER_SSL_CIPHER

- MASTER_SSL_KEY

- MASTER_USER

- MAX_CONNECTIONS_PER_HOUR

- MAX_QUERIES_PER_HOUR

- MAX_ROWS

- MAX_UPDATES_PER_HOUR

- MEDIUM

- MEDIUMBLOB

- MEDIUMINT

- MEDIUMTEXT

- MICROSECOND

- MIDDLEINT

- MINUTE

- MINUTE_MICROSECOND

- MINUTE_SECOND

- MIN_ROWS

- MOD

- MODE

- MODIFY

- MONTH

- MULTILINESTRING

- MULTIPOINT

- MULTIPOLYGON

- NAMES

- NATIONAL

- NDB

- NDBCLUSTER

- NCHAR

- NEW

- NEXT

- NO

- NONE

- NO_WRITE_TO_BINLOG

- NUMERIC

- NVARCHAR

- OLD_PASSWORD

- ONE_SHOT

- OPEN

- OPTIMIZE

- OPTION

- OPTIONALLY

- OUTFILE

- PACK_KEYS

- PARTIAL

- PASSWORD

- POINT

- POLYGON

- PRECISION

- PREPARE

- PREV

- PRIVILEGES

- PROCEDURE

- PROCESS

- PROCESSLIST

- PURGE

- QUERY

- QUICK

- RAID0

- RAID_CHUNKS

- RAID_CHUNKSIZE

- RAID_TYPE

- READ

- REAL

- REGEXP

- RELAY_LOG_FILE

- RELAY_LOG_POS

- RELAY_THREAD

- RELOAD

- RENAME

- REPAIR

- REPEATABLE

- REPLICATION

- REQUIRE

- RESET

- RESTORE

- RETURNS

- REVOKE

- RLIKE

- ROLLUP

- ROWS

- ROW_FORMAT

- RTREE

- SAVEPOINT

- SECOND

- SECOND_MICROSECOND

- SEPARATOR

- SERIAL

- SERIALIZABLE

- SESSION

- SHARE

- SHOW

- SHUTDOWN

- SIGNED

- SIMPLE

- SLAVE

- SMALLINT

- SOME

- SONAME

- SOUNDS

- SPATIAL

- SQL_BIG_RESULT

- SQL_BUFFER_RESULT

- SQL_CACHE

- SQL_CALC_FOUND_ROWS

- SQL_NO_CACHE

- SQL_SMALL_RESULT

- SQL_THREAD

- SSL

- START

- STARTING

- STATUS

- STOP

- STORAGE

- STRAIGHT_JOIN

- STRING

- STRIPED

- SUBJECT

- SUPER

- TABLES

- TABLESPACE

- TERMINATED

- TEXT

- TIME

- TIMESTAMP

- TINYBLOB

- TINYINT

- TINYTEXT

- TRAILING

- TRUE

- TRUNCATE

- TYPE

- TYPES

- UNCOMMITTED

- UNICODE

- UNLOCK

- UNSIGNED

- UNTIL

- USAGE

- USE

- USER

- USER_RESOURCES

- USE_FRM

- UTC_DATE

- UTC_TIME

- UTC_TIMESTAMP

- VALUE

- VARBINARY

- VARCHAR

- VARCHARACTER

- VARIABLES

- VARYING

- WARNINGS

- WITH

- WORK

- WRITE

- X509

- YEAR

- YEAR_MONTH

- ZEROFILL

### Voor Kexi-PostgreSQL Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-pqxx Driver:

- ABORT

- ABSOLUTE

- ACCESS

- ACTION

- ADD

- AGGREGATE

- ALTER

- ANALYSE

- ANALYZE

- ANY

- ARRAY

- ASSERTION

- ASSIGNMENT

- AT

- AUTHORIZATION

- BACKWARD

- BIGINT

- BINARY

- BIT

- BOOLEAN

- BOTH

- CACHE

- CALLED

- CAST

- CHAIN

- CHAR

- CHARACTER

- CHARACTERISTICS

- CHECKPOINT

- CLASS

- CLOSE

- CLUSTER

- COALESCE

- COLUMN

- COMMENT

- COMMITTED

- CONSTRAINTS

- CONVERSION

- CONVERT

- COPY

- CREATEDB

- CREATEUSER

- CURRENT_DATE

- CURRENT_TIME

- CURRENT_TIMESTAMP

- CURRENT_USER

- CURSOR

- CYCLE

- DAY

- DEALLOCATE

- DEC

- DECIMAL

- DECLARE

- DEFAULTS

- DEFERRABLE

- DEFERRED

- DEFINER

- DELIMITER

- DELIMITERS

- DO

- DOMAIN

- DOUBLE

- EACH

- ENCODING

- ENCRYPTED

- ESCAPE

- EXCEPT

- EXCLUDING

- EXCLUSIVE

- EXECUTE

- EXISTS

- EXTERNAL

- EXTRACT

- FALSE

- FETCH

- FIRST

- FLOAT

- FORCE

- FORWARD

- FREEZE

- FUNCTION

- GLOBAL

- GRANT

- HANDLER

- HOLD

- HOUR

- ILIKE

- IMMEDIATE

- IMMUTABLE

- IMPLICIT

- INCLUDING

- INCREMENT

- INHERITS

- INITIALLY

- INOUT

- INPUT

- INSENSITIVE

- INSTEAD

- INT

- INTERSECT

- INTERVAL

- INVOKER

- ISNULL

- ISOLATION

- LANCOMPILER

- LANGUAGE

- LAST

- LEADING

- LEVEL

- LISTEN

- LOAD

- LOCAL

- LOCALTIME

- LOCALTIMESTAMP

- LOCATION

- LOCK

- MAXVALUE

- MINUTE

- MINVALUE

- MODE

- MONTH

- MOVE

- NAMES

- NATIONAL

- NCHAR

- NEW

- NEXT

- NO

- NOCREATEDB

- NOCREATEUSER

- NONE

- NOTHING

- NOTIFY

- NOTNULL

- NULLIF

- NUMERIC

- OF

- OFF

- OIDS

- OLD

- ONLY

- OPERATOR

- OPTION

- OUT

- OVERLAPS

- OVERLAY

- OWNER

- PARTIAL

- PASSWORD

- PATH

- PENDANT

- PLACING

- POSITION

- PRECISION

- PREPARE

- PRESERVE

- PRIOR

- PRIVILEGES

- PROCEDURAL

- PROCEDURE

- READ

- REAL

- RECHECK

- REINDEX

- RELATIVE

- RENAME

- RESET

- RESTART

- RETURNS

- REVOKE

- ROWS

- RULE

- SCHEMA

- SCROLL

- SECOND

- SECURITY

- SEQUENCE

- SERIALIZABLE

- SESSION

- SESSION_USER

- SETOF

- SHARE

- SHOW

- SIMPLE

- SMALLINT

- SOME

- STABLE

- START

- STATEMENT

- STATISTICS

- STDIN

- STDOUT

- STORAGE

- STRICT

- SUBSTRING

- SYSID

- TEMP

- TEMPLATE

- TIME

- TIMESTAMP

- TOAST

- TRAILING

- TREAT

- TRIGGER

- TRIM

- TRUE

- TRUNCATE

- TRUSTED

- TYPE

- UNENCRYPTED

- ONBEKEND

- UNLISTEN

- UNTIL

- USAGE

- USER

- VACUUM

- VALID

- VALIDATOR

- VARCHAR

- VARYING

- VERBOSE

- VERSION

- VIEW

- VOLATILE

- WITH

- WITHOUT

- WORK

- WRITE

- YEAR

- ZONE

### Voor Kexi-Oracle Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-Oracle Driver:

- ADMIN

- AFTER

- ALLOCATE

- ANALYZE

- ARCHIVE

- ARCHIVELOG

- AUTHORIZATION

- AVG

- BACKUP

- BECOME

- BEFORE

- BEGIN

- BLOCK

- BODY

- CACHE

- CANCEL

- CASCADE

- CHANGE

- CHARACTER

- CHECKPOINT

- CLOSE

- COBOL

- COMMIT

- COMPILE

- CONSTRAINT

- CONSTRAINTS

- CONTENTS

- CONTINUE

- CONTROLFILE

- COUNT

- CURSOR

- CYCLE

- DATABASE

- DATAFILE

- DATE

- DBA

- DEC

- DECLARE

- DISABLE

- DISMOUNT

- DOUBLE

- DUMP

- EACH

- ENABLE

- END

- ESCAPE

- EVENTS

- EXCEPT

- EXCEPTIONS

- EXEC

- EXECUTE

- EXPLAIN

- EXTENT

- EXTERNALLY

- FETCH

- FLUSH

- FORCE

- FOREIGN

- FORTRAN

- FOUND

- FREELIST

- FREELISTS

- FUNCTION

- GO

- GOTO

- GROUPS

- INCLUDING

- INDICATOR

- INITRANS

- INSTANCE

- INT

- KEY

- LANGUAGE

- LAYER

- LINK

- LISTS

- LOGFILE

- MANAGE

- MANUAL

- MAX

- MAXDATAFILES

- MAXINSTANCES

- MAXLOGFILES

- MAXLOGHISTORY

- MAXLOGMEMBERS

- MAXTRANS

- MAXVALUE

- MIN

- MINEXTENTS

- MINVALUE

- MODULE

- MOUNT

- NEW

- NEXT

- NOARCHIVELOG

- NOCACHE

- NOCYCLE

- NOMAXVALUE

- NOMINVALUE

- NONE

- NOORDER

- NORESETLOGS

- NORMAL

- NOSORT

- NUMERIC

- OFF

- OLD

- ONLY

- OPEN

- OPTIMAL

- OWN

- PACKAGE

- PARALLEL

- PCTINCREASE

- PCTUSED

- PLAN

- PLI

- PRECISION

- PRIMARY

- PRIVATE

- PROCEDURE

- PROFILE

- QUOTA

- READ

- REAL

- RECOVER

- REFERENCES

- REFERENCING

- RESETLOGS

- RESTRICTED

- REUSE

- ROLE

- ROLES

- ROLLBACK

- SAVEPOINT

- SCHEMA

- SCN

- SECTION

- SEGMENT

- SEQUENCE

- SHARED

- SNAPSHOT

- SOME

- SORT

- SQL

- SQLCODE

- SQLERROR

- SQLSTATE

- STATEMENT_ID

- STATISTICS

- STOP

- STORAGE

- SUM

- SWITCH

- SYSTEM

- TABLES

- TABLESPACE

- TEMPORARY

- THREAD

- TIME

- TRACING

- TRANSACTION

- TRIGGERS

- TRUNCATE

- UNDER

- UNLIMITED

- UNTIL

- USE

- USING

- WHEN

- WORK

- WRITE

### Voor Kexi-Sybase Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-Sybase Driver:

- ACTION

- ADD

- AGAINST

- AGGREGATE

- ALTER

- ANALYZE

- ANY

- ASCII

- AUTOINCREMENT

- AVG

- AVG_ROW_LENGTH

- BACKUP

- BDB

- BERKELEYDB

- BIGINT

- BINARY

- BINLOG

- BIT

- BLOB

- BOOL

- BOOLEAN

- BOTH

- BTREE

- BYTE

- CACHE

- CHANGE

- CHANGED

- CHAR

- CHARACTER

- CHARSET

- CHECKSUM

- CIPHER

- CLIENT

- CLOSE

- COLLATION

- COLUMN

- COLUMNS

- COMMENT

- COMMITTED

- COMPRESSED

- CONCURRENT

- CONVERT

- CUBE

- CURRENT_DATE

- CURRENT_TIME

- CURRENT_TIMESTAMP

- CURRENT_USER

- DATA

- DATABASES

- DATE

- DATETIME

- DAY

- DAY_HOUR

- DAY_MICROSECOND

- DAY_MINUTE

- DAY_SECOND

- DEALLOCATE

- DEC

- DECIMAL

- DELAYED

- DELAY_KEY_WRITE

- DESCRIBE

- DES_KEY_FILE

- DIRECTORY

- DISABLE

- DISCARD

- DISTINCTROW

- DIV

- DO

- DOUBLE

- DUAL

- DUMPFILE

- DUPLICATE

- DYNAMIC

- ENABLE

- ENCLOSED

- ENGINE

- ENGINES

- ENUM

- ERRORS

- ESCAPE

- ESCAPED

- EVENTS

- EXECUTE

- EXISTS

- EXPANSION

- EXTENDED

- FALSE

- Snel

- FIELDS

- FILE

- FIRST

- FIXED

- FLOAT

- FLOAT4

- FLOAT8

- FLUSH

- FORCE

- FULLTEXT

- FUNCTION

- GEOMETRY

- GEOMETRYCOLLECTION

- GET_FORMAT

- GLOBAL

- GRANT

- GRANTS

- HANDLER

- HASH

- HELP

- HIGH_PRIORITY

- HOSTS

- HOUR

- HOUR_MICROSECOND

- HOUR_MINUTE

- HOUR_SECOND

- IDENTIFIED

- IF

- IMPORT

- INDEXES

- INFILE

- INNOBASE

- INNODB

- INSERT_METHOD

- INT

- INT1

- INT2

- INT3

- INT4

- INT8

- INTERVAL

- IO_THREAD

- ISOLATION

- ISSUER

- KEYS

- KILL

- LAST

- LEADING

- LEAVES

- LEVEL

- LINES

- LINESTRING

- LOAD

- LOCAL

- LOCALTIME

- LOCALTIMESTAMP

- LOCK

- LOCKS

- LOGS

- LONG

- LONGBLOB

- LONGTEXT

- LOW_PRIORITY

- MASTER

- MASTER_CONNECT_RETRY

- MASTER_HOST

- MASTER_LOG_FILE

- MASTER_LOG_POS

- MASTER_PASSWORD

- MASTER_PORT

- MASTER_SERVER_ID

- MASTER_SSL

- MASTER_SSL_CA

- MASTER_SSL_CAPATH

- MASTER_SSL_CERT

- MASTER_SSL_CIPHER

- MASTER_SSL_KEY

- MASTER_USER

- MAX_CONNECTIONS_PER_HOUR

- MAX_QUERIES_PER_HOUR

- MAX_ROWS

- MAX_UPDATES_PER_HOUR

- MEDIUM

- MEDIUMBLOB

- MEDIUMINT

- MEDIUMTEXT

- MICROSECOND

- MIDDLEINT

- MINUTE

- MINUTE_MICROSECOND

- MINUTE_SECOND

- MIN_ROWS

- MOD

- MODE

- MODIFY

- MONTH

- MULTILINESTRING

- MULTIPOINT

- MULTIPOLYGON

- NAMES

- NATIONAL

- NDB

- NDBCLUSTER

- NCHAR

- NEW

- NEXT

- NO

- NONE

- NO_WRITE_TO_BINLOG

- NUMERIC

- NVARCHAR

- OLD_PASSWORD

- ONE_SHOT

- OPEN

- OPTIMIZE

- OPTION

- OPTIONALLY

- OUTFILE

- PACK_KEYS

- PARTIAL

- PASSWORD

- POINT

- POLYGON

- PRECISION

- PREPARE

- PREV

- PRIVILEGES

- PROCEDURE

- PROCESS

- PROCESSLIST

- PURGE

- QUERY

- QUICK

- RAID0

- RAID_CHUNKS

- RAID_CHUNKSIZE

- RAID_TYPE

- READ

- REAL

- REGEXP

- RELAY_LOG_FILE

- RELAY_LOG_POS

- RELAY_THREAD

- RELOAD

- RENAME

- REPAIR

- REPEATABLE

- REPLICATION

- REQUIRE

- RESET

- RESTORE

- RETURNS

- REVOKE

- RLIKE

- ROLLUP

- ROWS

- ROW_FORMAT

- RTREE

- SAVEPOINT

- SECOND

- SECOND_MICROSECOND

- SEPARATOR

- SERIAL

- SERIALIZABLE

- SESSION

- SHARE

- SHOW

- SHUTDOWN

- SIGNED

- SIMPLE

- SLAVE

- SMALLINT

- SOME

- SONAME

- SOUNDS

- SPATIAL

- SQL_BIG_RESULT

- SQL_BUFFER_RESULT

- SQL_CACHE

- SQL_CALC_FOUND_ROWS

- SQL_NO_CACHE

- SQL_SMALL_RESULT

- SQL_THREAD

- SSL

- START

- STARTING

- STATUS

- STOP

- STORAGE

- STRAIGHT_JOIN

- STRING

- STRIPED

- SUBJECT

- SUPER

- TABLES

- TABLESPACE

- TERMINATED

- TEXT

- TIME

- TIMESTAMP

- TINYBLOB

- TINYINT

- TINYTEXT

- TRAILING

- TRUE

- TRUNCATE

- TYPE

- TYPES

- UNCOMMITTED

- UNICODE

- UNLOCK

- UNSIGNED

- UNTIL

- USAGE

- USE

- USER

- USER_RESOURCES

- USE_FRM

- UTC_DATE

- UTC_TIME

- UTC_TIMESTAMP

- VALUE

- VARBINARY

- VARCHAR

- VARCHARACTER

- VARIABLES

- VARYING

- WARNINGS

- WITH

- WORK

- WRITE

- X509

- YEAR

- YEAR_MONTH

- ZEROFILL

### Voor Kexi-xBase Driver gereserveerde woorden

Deze lijst bevat sleutelwoorden die zijn gereserveerd voor gebruik door de Kexi-xBase Driver:

- ABORT

- ATTACH

- CLUSTER

- CONFLICT

- DEFERRED

- DEFERRABLE

- DETACH

- EACH

- EXCEPT

- FAIL

- GLOB

- IMMEDIATE

- INITIALLY

- INSTEAD

- INTERSECT

- ISNULL

- NOTNULL

- OF

- PRAGMA

- NAAR VOREN

- STATEMENT

- TEMP

- TRIGGER

- VACUUM

- VIEW

Gereserveerde woorden worden voor elke driver gescheiden gehouden zodat ze ook als referentie kunnen worden gebruikt.

## Appendix D. Ondersteunde bestandsformaten

### Formaat komma-gescheiden waarden (CSV)

&kexi; is is staat om gegevens te importeren en te exporteren van/naar een verscheidenheid of indelingen met komma-gescheiden waarden (CSV-bestanden). De meeste toepassingen voor rekenbladen en databases kunnen deze indeling importeren en exporteren, waarmee dit een toepasselijke indeling is om tekstuele gegevens tussen verschillende toepassingen uit te wisselen.

&kexi; also ondersteunt een aantal opties die ingesteld kunnen worden voor het uitvoeren van de import:

- gegevenstype voor elke kolom,

- andere tekens voor veldscheiding zoals tabs,

- verschillende tekens rondom tekst,

- aangegeven aantal records die overgeslagen kunnen worden, indien nodig,

- dubbele scheidingstekens die overgeslagen kunnen worden,

- waarden uit de eerste rij die gebruikt kunnen worden om kolomnamen in te stellen,

- tekstcodering (UTF-8 is de standaard),

- datumformaat (gedefinieerd door het besturingssysteem is de standaard),

- vooraan en achteraan komende witruimte verwijderen van de teksten.

Toont bij importeren van &kexi; een voorbeeld van de geïmporteerde gegevens. De meest geschikte set opties wordt automatisch gedetecteerd door &kexi; gebaseerd op het geleverde CSV-bestand.

### Microsoft Access (MDB) bestandsformaat

#### Overzicht

Ondersteuning voor het importeren van Microsoft Access databases (2003 of ouder) is in &kexi; ingebouwd. Access databases kunnen alleen geïmporteerd worden in een &kexi; database. Het kan niet gebruikt worden om de database te bewerken of te exporteren naar een Access database. Het zou echter ook in staat moeten zijn om databases aangemaakt door andere toepassingen die de JET-database-engine gebruiken, te importeren. Importeren van `.accdb` databases geïntroduceerd in MS Access 2007 worden nu niet ondersteund.

Om een database te importeren:

1. Kies in het &kexi; menu het commando Importeren, exporteren of verzenden...

2. Klik op de knop Database importeren.

3. Gebruik de importassitent door het gewenste .mdb-bestand te selecteren.

#### Functies

De importfunctie is met succes gebruikt om een Northwind database te importeren, goed bekend bij MS Access gebruikers. Veel andere Access sjabloondatabases kunnen ook worden geïmporteerd.

#### Ondersteunde functies

Importeren van de volgende veldtypen is getest en werkt in het algemeen goed:

- Tekstvelden

- Memovelden

- Gegevensvelden

- Numerieke waarden

#### Niet ondersteunde functies

Op dit moment worden alleen tabellen geïmporteerd. Bij importeren slaat &kexi; de volgende objecten over:

- Queries

- Formulieren

- Scripts

- Rapporten

De volgenden zijn niet getest:

- Importeren van binaire objecten

## Dankbetuigingen en licentie

&kexi; Copyright 2002-2012 Het Kexi-team:

Kexi-ontwikkelaars:

- Jaroslaw Staniek (staniek kde.org)

- OpenOffice Polska, LLC (info openoffice.com.pl)

- Lucijan Busch (lucijan kde.org)

- Cedric Pasteur (cedric.pasteur free.fr)

- Adam Pigg (adam piggz.fsnet.co.uk)

- Martin Ellis (martin.ellis kdemail.net)

- Sebastian Sauer (mail dipe.org)

- Christian Nitschkowski (segfault_ii web.de)

- Peter Simonsson (psn linux.se)

- Joseph Wenninger (jowenn kde.org)

- Seth Kurzenberg (seth cql.com)

- Laurent Montel (montel kde.org)

- Till Busch (till bux.at)

De documentatie is geschreven door Martin A. Ellis (martin.ellis kdemail.net), Jaroslaw Staniek (staniek kde.org) met bijdragen van Anne-Marie Mahfouf, Raphael Langerhorst, Michal Kubicki en Aron Stansvik.

Dit programma is beschikbaar onder de licentie van de GNU Lesser General Public License.

&meld.fouten;&vertaling.natalie;&vertaling.freek; &underFDL;
&documentation.index;