6. Importeren en exporteren

Je hoeft echt niet dadelijk ODBC, Open DataBase Connectivity te gaan gebruiken; gegevens uit Access in een Wordbrief zetten of een Exceltabel in Access opnemen, daar hebben we het ook over.

6.1. Exporteren

Als je een databaseobject exporteert, worden de gegevens zo goed mogelijk geconverteerd naar de bestandsindeling van de doeltoepassing.

6.1.1. Koppelen aan een standaardbrief in Word

Adresgegevens uit een database worden vaak gebruikt als gegevensbron voor een gepersonaliseerde brief in Word.
Werkwijze:

  1. Open de database en klik op de tabel of query in het navigatiepaneel.
  2. Activeer lint Externe gegevens en klik op Word Merge.
  3. Geef aan of je een bestaand Worddocument wil gebruiken of een nieuw maken. OK.
  4. Ofwel kan je nu het document selecteren en openen, ofwel klik je onderaan op de taakbalk op de knipperende Wordknop en start Word met een leeg document.
  5. Rechts op het scherm zie je de wizard Afdruk Samenvoegen en verder heb je het lint Verzendlijsten als hulpmiddel.
    • Meer hulp nodig? Bekijk de uitleg van Verzendlijsten in Word.

6.1.2. Andere exportmogelijkheden

Op lint Externe gegevens, sectie Exporteren zie je de exportopties:

  • Opgeslagen Exportgegevens: telkens je gegevens exporteert, vraagt Access of de reeks acties opgeslagen moet worden. Eenmaal opgeslagen, vind je die actiereeks hier terug.
  • Excel: selecteer het gewenste Accessobject in het navigatiedeelvenster, klik op de knop, kies de locatie voor het Excelbestand, bekijk nog even de opties en exporteer.
  • Tekstbestand: exporteer het geselecteerde Accessobject naar een zuiver tekstbestand (*.txt), zonder opmaak dus.
  • XML-bestand: exporteer een tabel of query naar een gestructureerd tekstbestand
  • PDF of XPS: exporteer het geselecteerde Accessobject naar een Portable Document Format, een document dat je met een gratis PDF-reader kan openen of een XML Paper Specification, een algemeen Microsoft document.
  • E-mail: exporteer het geselecteerde Accessobject als bijlage bij een e-mail in een Excel-, web- of tekstformaat.
  • Access: exporteer het geselecteerde Accessobject naar een andere Accessdatabase.
  • Meer: verander het geselecteerde object in een Worddocument, Sharepointlijst, ODBC-bestand of webpagina.

Kijk trouwens ook eens bij Bestand – Opslaan Als.


6.2. Importeren

Access kan uit verscheidene bestandsindelingen importeren. Notaties worden veelal correct geïnterpreteerd maar andere opmaak gaat meestal verloren.

Voorwaarden voor een geslaagde import:

De mogelijkheden zie je op lint Externe gegevens.

6.2.1. 'Vreemde' gegevens importeren

Bij sommige indelingen krijg je hulp van een wizard, bij andere komt er meer 'handwerk' bij kijken.

  1. Open de database waarin de 'vreemde' gegevens terecht moeten komen.
  2. Klik op lint Externe gegevens bij de eerste knop, Nieuwe Gegevensbron op de indeling waarin de data nu opgeslagen zijn: Excel, een andere Access-DB of een SQL-server-DB, een gewoon tekstbestand of eentje met XML-structuur, enz.
  3. Selecteer het bestand waaruit je wil importeren via knop Bladeren.
  4. Bepaal of de brongegevens in een nieuwe tabel komen of toegevoegd worden aan een bestaande.
    • In het tweede geval moet de structuur van bron- en doeltabel wel goed overeenkomen.
  5. Afhankelijk van de gekozen indeling stelt de wizard nog enkele vragen, Access voegt er zonodig een primaire sleutel aan toe en klaar.
  6. Zal je een gelijksoortige handeling nog nodig hebben? Laat de importstappen dan opslaan. Achteraf vind je ze via de knop Opgeslagen Importbewerkingen.

Kijk ook eens bij Bestand – Openen – Bladeren. Rechts zie je een keuzelijst met soorten bestanden die je rechtstreeks kan openen.

6.2.2. Accessobjecten importeren

Uiteraard kan je ook allerhande objecten uit een andere Accessdatabase importeren:

  1. Maak of open de database waarin de 'vreemde' gegevens terecht moeten komen.
  2. Klik op lint Externe gegevens bij knop Nieuwe Gegevensbron op Uit Database – Access.
  3. Selecteer de database waaruit je wil importeren via knop Bladeren.
  4. Bovenaan in het importvenster zie je welke objecten je kan importeren: import
  5. Klik op de knop Opties voor extra mogelijkheden:
    • Standaard worden de relaties tussen gerelateerde tabellen mee overgenomen;
    • Menu's en Werkbalken zal alle aangepaste menu's en werkbalken mee kopiëren;
    • Import-/Exportspecificaties zal alle instellingen i.v.m. importeren en exporteren uit de brondatabase overnemen;
    • Navigatiedeelvenstergroepen: links in het Accessvenster zie je normaal het navigatiedeelvenster – en dat kan je naar wens indelen. Met deze opties neem je zo'n aangepaste indeling mee over.
    • Tabellen importeren: je kan enkel de structuur overnemen of structuur plus inhoud.
    • Query's importeren: je kan een query onveranderd importeren of laten omzetten in een tabel.
  6. Selecteer het object of de objecten die je wil importeren en klik op OK.

6.2.3. Tabellen kopiëren

Heb je een tabel nodig – gegevens en/of structuur – die al in een andere database zit? Geen probleem, die kopieer je.

  1. Open de database die de basistabel bevat en kopieer die: Ctrl-C of knop Kopiëren op lint Start of rechtsklik op de tabel en kies Kopiëren.
  2. Activeer de doeldatabase (kan ook dezelfde zijn als de bron), rechtsklik in het navigatiepaneel en kies Plakken.
  3. Typ een naam voor de nieuwe tabel en bepaal wat je precies nodig hebt: alleen de structuur of structuur én gegevens.
    • Bovendien kan je de naam van een bestaande tabel typen en de gegevens daaraan toevoegen – als de structuur overeenkomt.

6.2.4. Tabellen koppelen

Deze techniek gebruik je om tabellen uit verschillende databases te relateren, zonder ze daadwerkelijk op te nemen in één bestand.
Aanpassingen in de brontabel worden automatisch doorgevoerd in de gekoppelde tabel.

Gekoppelde tabellen herken je aan het pijltje in het navigatiepaneel en eventueel het pictogram van het bronprogramma.

De werkwijze is gelijklopend aan die van importeren:

  1. Open de database waarin de 'vreemde' gegevens terecht moeten komen.
  2. Klik op lint Externe gegevens bij knop Nieuwe Gegevensbron op de indeling waarin de data nu opgeslagen zijn: Excel, een andere Access-DB of een SQL-server-DB, een gewoon tekstbestand of eentje met XML-structuur, enz.
  3. Selecteer het bestand waaruit je wil importeren via knop Bladeren.
  4. Activeer optie Koppelen aan de Gegevensbron door een Gekoppelde Tabel te Maken.
  5. Beantwoord eventuele verdere vragen van de wizard en bepaal of je de koppelstappen wil laten opslaan.

Als je een gekoppelde tabel niet meer nodig hebt en verwijdert, blijft de brontabel intact.

De koppelingen kan je ook controleren: kies op lint Externe gegevens de optie Koppelingsbeheer. Daar zie je alle verwijzingen naar de bronobjecten en kan je ze eventueel aanpassen.


6.3. Databases converteren

Vanaf Access 2007 worden databases opgeslagen in de ACCDB-bestandsindeling, in oudere versies krijgen ze extensie *.MDB.
De ACCDB-indeling ondersteunt nieuwe functies zoals velden met meer waarden in, gegevensmacro's en publiceren naar Sharepoint, maar enkel MDB ondersteunt replicatie of beveiliging op gebruikersniveau.

Een MDB-database kan je zonder meer openen en gebruiken in Access 2016, maar het omgekeerde geldt niet: een ACCDB-database kan je niet openen in Access 2003 of ouder.

MDB converteren naar ACCDB is eenvoudig: open Access, kies Bestand – Openen en open de 'oude' database.
Kies dan Bestand – Opslaan Als en bewaar ze in ACCDB-indeling.
Als het nog een Access 97-bestand was, wordt een 'moderne' kopie opgeslagen. Het oude bestand blijft in de originele toestand bewaard.

Heb je een ACCDB-database gemaakt en wil je ze in een oude Accessversie gebruiken?
Je kan proberen om ze te converteren naar MDB via Bestand – Opslaan Als – Database, maar als je 'nieuwe' functies gebruikt hebt (zoals rapporten met totalen), lukt dat niet.

Oplossing: begin een nieuwe, lege database, sla ze op als Access-2000-DB (*.MDB) en kopieer de objecten hierin. Tabellen en query's geven normaal geen problemen, formulieren en rapporten werken echter misschien niet meer.
In zo'n database met MDB-indeling kan je dan wel objecten op de 'oude' manier maken.

Ken je nog iemand die met Access 95/97 werkt? Tracht die persoon te motiveren tot een update ...


6.4. Webapps

Een Access-webapp was een nieuw type database in Access 2013, dat je vervolgens met anderen kan delen als een SharePoint-app in een webbrowser.

Voordat je een Access-webapp kan maken, moet je een SharePoint-site hebben waarop je de app kan hosten, via een Office 365-abonnement dat sites omvat of via een on-premises SharePoint-implementatie. Access-apps werken niet met Office 365 Home.

Anderzijds kan je elk Accessobject exporteren als HTML-pagina, al geven rapporten over het algemeen het beste resultaat.
De webpagina bevat altijd een tabel, hoe de oorspronkelijke lay-out er ook uitziet.

  1. Selecteer het object dat je wil exporteren in het navigatiepaneel.
  2. Activeer lint Externe Gegevens en kies in de sectie Exporteren bij Meer – HTML-Document.
  3. Accepteer de voorgestelde locatie en naam of blader naar een nieuwe locatie en geef eventueel zelf een naam op. OK.
  4. Open de Bestandsverkenner, blader naar de locatie en dubbelklik op het HTML-bestand. Je browser start en je kan het resultaat bewonderen.

6.5. SQL

Om gegevens uit een database in een ander programma te gebruiken zal je meestal een query in SQL, Structured Query Language nodig hebben.
In Access kan je ze voorbereiden (en uitproberen) in een queryvenster:

  1. Open een queryvenster in ontwerpweergave
  2. Maak eventueel al (een deel van) de query in het QBE-venster (query by example).
  3. Bekijk en/of bewerk de SQL-instructie via knop Weergave – SQL-Weergave.

6.4.1. Gegevens opvragen

Het basiscommando om gegevens op te vragen is SELECT.

Een opdracht eindigt altijd met puntkomma.

Selecteer alles uit 1 tabel: SELECT *
FROM tabelnaam;
Selecteer kolom(men) uit 1 tabel: SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam;
Alias voor kolomnaam: kolomnaam AS [alias]
of: kolomnaam "alias"
Geen dubbele records: SELECT DISTINCT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam;
Toon de lijst gesorteerd: SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam
ORDER BY kolomnaam;
Voorwaarde opgeven: SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam
WHERE kolomnaam vergelijkingsoperator waarde;
Voorwaarde en gesorteerd: SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam
WHERE kolomnaam vergelijkingsoperator waarde
ORDER BY kolomnaam;
Groeperen op kolomwaarden SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam
GROUP BY kolomnaam;
Groeperen met voorwaarde binnen de groep SELECT kolomnaam1 (, kolomnaam2, ...)
FROM tabelnaam
GROUP BY kolomnaam
HAVING kolomnaam vergelijkingsoperator waarde;
Alles samen SELECT kolomnaam1 AS [alias] (, kolomnaam2 AS [alias], ...)
FROM tabelnaam
WHERE kolomnaam vergelijkingsoperator waarde
GROUP BY kolomnaam
HAVING kolomnaam vergelijkingsoperator waarde
ORDER BY kolomnaam;

De vergelijkingsoperatoren zijn:

= is gelijk aan
> is groter dan
>= is groter dan of gelijk aan
< is kleiner dan
<= is kleiner dan of gelijk aan
<> is verschillend van
BETWEEN w1 AND w2 tussen waarde1 en (inclusief) waarde2
IN(w1, w2, enz) is gelijk aan w1 of w2 of enz.
LIKE 'patroon' is zoals patroon, met wildcards ? voor één teken en * voor willekeurig aantal tekens
IS NULL is leeg
IS NOT NULL is niet leeg

6.4.2. Selecteren met berekeningen

Maastal zal je een alias voorzien, zodat je berekende kolom een duidelijke titel krijgt.

Tel het aantal records SELECT COUNT(*) AS [alias]
FROM tabelnaam;
Selecteer met berekening SELECT kolomnaam + - * / getal AS [alias]
FROM tabelnaam;
Selecteer met berekeningsfunctie SELECT functie(kolomnaam) AS [alias]
FROM tabelnaam;
waarbij de functie kan zijn: SUM(), AVG(), MIN(), MAX()

6.4.3. Selecteren uit meer tabellen

Om gegevens uit gerelateerde tabellen te tonen, gebruiken we JOIN in SQL.

Een inner join geeft als resultaat enkel de records die een overeenkomende waarde hebben in de andere tabel.
Wil je uit één van beide tabellen ook de records die niet verbonden zijn met records uit de andere tabel, dan heb je een outer join nodig.

Toon de overeenkomende records uit beide tabellen SELECT *
FROM tabel1 INNER JOIN tabel2
ON tabel1.sleutelkolom = tabel2.sleutelkolom;
Toon alle records uit tabel1 en de overeenkomende uit tabel2 SELECT *
FROM tabel1 LEFT JOIN tabel2
ON tabel1.sleutelkolom = tabel2.sleutelkolom;
Toon alle records uit tabel2 en de overeenkomende uit tabel1 SELECT *
FROM tabel1 RIGHT JOIN tabel2
ON tabel1.sleutelkolom = tabel2.sleutelkolom;

6.4.4. Data Manipulation Language

Strikt genomen dient SQL enkel om gegevens op te vragen, maar meestal rekent men DML ook onder SQL.
We zijn bezig met data manipulatie als we gegevens toevoegen, aanpassen of verwijderen.

Gegevens toevoegen INSERT INTO doeltabel niets of (kolomnaam1 [, kolomnaam2, ...])
VALUES (waarde1 [, waarde2, ...]);
Gegevens uit andere tabel toevoegen INSERT INTO doeltabel niets of (kolomnaam1 [, kolomnaam2, ...])
[ IN andereDatabase ]
SELECT * of kolomnaam1, [, kolomnaam2, ...]
FROM brontabel;

VALUES: tekstwaarden staan tussen enkele aanhalingstekens, numerieke waarden niet. Uiteraard moeten het type van kolomnaam1 en waarde1 overeenkomen.

Gegevens aanpassen UPDATE tabelnaam
SET kolomnaam1 = expressie [, kolomnaam2 = expressie2, ...]
WHERE voorwaarde;
 
Gegevens verwijderenDELETE * FROM tabelnaam WHERE voorwaarde;