Microsoft Office Online
Aanmelden bij Mijn Office Online (Wat is dit?) | Aanmelden

 
 
Microsoft Office Access
Zoeken
Zoeken
 
  • Koop Office 2007 - Deze aanbieding is alleen geldig voor de download versie in de MS Store: (c) Microsoft
Koop Office 2007
 
 
 
Waarschuwing: u wilt deze pagina weergeven met een niet-ondersteunde browser. Deze website wordt het best bekeken met Microsoft Internet Explorer 6.0 of hoger, Firefox 1.5 of Netscape Navigator 8.0 of hoger. Meer informatie over ondersteunde browsers.

Printervriendelijke versiePrintervriendelijke versie Bladwijzer maken en delenDelen
Problemen met query's oplossen (MDB)
Van toepassing op: Microsoft Office Access 2003
 

Alle query's

WeergevenEr verschijnt onverwachts een bericht

WeergevenEr verschijnt een bericht met een melding over een SQL-syntaxisfout

WeergevenHet bericht 'Kan de naam naam niet verbinden' verschijnt

Dit bericht kan verschijnen als u in het dialoogvenster Queryparameters niet expliciet de parameters hebt gedefinieerd die worden gebruikt voor een kruistabelquery (kruistabelquery: een query waarmee de som, het gemiddelde, het aantal of een ander type totaal van records wordt berekend, waarna het resultaat wordt gegroepeerd op grond van twee typen informatie: de informatie links van het gegevensblad en de informatie boven aan het gegevensblad.) of een query waarop een kruistabelquery of grafiek gebaseerd is. U kunt dit probleem als volgt oplossen:

  1. Geef in de query met de parameter in kwestie de juiste parameter en het bijbehorende gegevenstype op in het dialoogvenster Queryparameters.

    WeergevenWerkwijze

    1. Klik op Parameters in het menu Query.

    2. Typ in de eerste parametercel de eerste aanwijzing die u in het queryraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) hebt ingevoerd.

    3. Klik rechts van de cel Gegevenstype op het gewenste gegevenstype (gegevenstype: het kenmerk van een veld dat bepaalt welk type gegevens daarin kunnen worden opgeslagen. Gegevenstypen zijn onder andere Booleaans, Integer, Lang, Valuta, Enkel, Dubbel, Datum, Reeks en Variant (standaardtype).).

      Gegevenstype van het parameterveld: Mogelijke gegevenstypen voor de cel Gegevenstype:
      Valuta, Datum/tijd, Memo, OLE-object, Tekst en Ja/nee  Valuta, Datum/tijd, Memo, OLE-object, Tekst en Ja/nee
      Numeriek Byte, Enkel, Dubbel, Integer, Lange integer en Replicatie-id. Deze gegevenstypen komen overeen met de vijf instellingen van de eigenschap Veldlengte van het gegevenstype Numeriek.
      Onbekend Waarde. Dit is een algemeen gegevenstype waarbij elk gegevenstype kan worden gebruikt.
      Binair Binaire waarde. Wordt gebruikt bij parameterquery's die gericht zijn op gekoppelde tabellen (gekoppelde tabel: een tabel die is opgeslagen in een bestand buiten de geopende database vanwaar Access toegang tot records kan krijgen. U kunt records in een gekoppelde tabel bewerken, toevoegen en verwijderen, maar u kunt niet de structuur van de tabel wijzigen.) waarin dit gegevenstype wordt herkend (in Microsoft Access wordt dit gegevenstype niet herkend).
    4. Herhaal de stappen 2 en 3 voor elke parameter waarvoor u een gegevenstype wilt instellen.

  2. Stel vervolgens in dezelfde query de eigenschap Kolomkoptekst in.

    WeergevenWerkwijze

    U kunt van kolomkoppen in een kruistabelquery (kruistabelquery: een query waarmee de som, het gemiddelde, het aantal of een ander type totaal van records wordt berekend, waarna het resultaat wordt gegroepeerd op grond van twee typen informatie: de informatie links van het gegevensblad en de informatie boven aan het gegevensblad.) de volgorde wijzigen of het aantal beperken. Zo kunt u in kolomkoppen die de maanden van het jaar bevatten de maanden in chronologische volgorde weergeven, in plaats van op alfabet. Bovendien kunt u de weergegeven kolomkoppen beperken tot de maanden januari tot en met juni.

    1. Open de kruistabelquery in de ontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.).
    2. Klik op de achtergrond van de ontwerpweergave van de query buiten het ontwerpraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) en de lijsten met velden (lijst met velden: een venster dat alle velden bevat uit de onderliggende recordbron of het onderliggende databaseobject. Alleen in de ontwerpweergave van een Data Access-pagina bevat de lijst met velden alle recordbronnen en bijbehorende velden uit de onderliggende database.).
    3. Klik op Eigenschappen Knopvlak op de werkbalk om het eigenschappenvenster van de query weer te geven.
    4. Typ in het vak van de eigenschap Kolomkoptekst de kolomkoppen die u wilt weergeven in de volgorde waarin u deze wilt weergeven. Typ tussen de kolomkoppen een komma of het lijstscheidingsteken dat bij de instellingen voor uw land of regio hoort. (Zie Landinstellingen in het Configuratiescherm van Microsoft Windows als u wilt weten wat het lijstscheidingsteken is voor uw land.)

      De kolomkopteksten die u invoert, moeten exact gelijk zijn aan de kolomkopteksten in het gegevensblad van de query. Als een kolomkoptekst in het gegevensblad bijvoorbeeld `USA' is, moet u als kolomkop `USA' invoeren, niet `VS' (als u op ENTER drukt of de aanwijzer verplaatst, worden de kopteksten tussen dubbele aanhalingstekens geplaatst).

    5. Klik op Beeld Knopvlak op de werkbalk om het queryresultaat te bekijken.

      Opmerkingen  

WeergevenEr verschijnt een bericht met de melding dat inbreuk wordt gemaakt op een sleutel

In de volgende gevallen is sprake van een sleutelconflict:

Als u een dergelijke query start, worden de records die het sleutelconflict hebben veroorzaakt, niet bijgewerkt.

Als u records wilt wijzigen die inbreuk maken op de referentiële integriteit, kunt u de relatie tussen de desbetreffende tabellen verbreken. U kunt ook de referentiële integriteit uitschakelen en vervolgens de tabellen een voor een wijzigen. In dat geval is het echter mogelijk dat de resulterende gegevens in de twee tabellen strijdig zijn met elkaar.

WeergevenEr verschijnt een bericht met de melding dat inbreuk wordt gemaakt op een validatieregel

Er is sprake van een inbreuk op een validatieregel (validatieregel: een eigenschap die geldige invoerwaarden definieert voor een veld of record in een tabel, besturingselement of formulier. Access geeft het bericht weer dat is opgegeven in de eigenschap ValidationText als de regel wordt overtreden.) als u probeert records bij te werken of toe te voegen die strijdig zijn met de validatieregels voor een veld of record.

WeergevenGegevens beperken of valideren

Een validatieregel voor velden wordt gebruikt om de ingevoerde waarde in een veld te controleren wanneer de gebruiker het veld verlaat. Een validatieregel voor records bepaalt wanneer een volledige record mag worden opgeslagen. In tegenstelling tot validatieregels voor velden, kunnen validatieregels voor records naar andere velden verwijzen.

U kunt ook nagaan of gegevens die al aanwezig waren voordat u een validatieregel definieerde of de eigenschappen Vereist of Lengte nul toestaan instelde, in strijd zijn met de huidige instellingen.

  1. Open een tabel in de ontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.).
  2. Ga op een van de volgende manieren te werk:

    WeergevenEen validatieregel definiëren waarmee wordt bepaald welke waarden in een veld kunnen worden ingevoerd

    1. Klik in het bovenste gedeelte van het venster op het veld waarvoor u een validatieregel wilt definiëren.
    2. Klik in het onderste gedeelte van het venster op het vak van de eigenschap Validatieregel en typ vervolgens de validatieregel, of klik op de knop Opbouwen Knopvlak als u de validatieregel met behulp van de opbouwfunctie voor expressies (opbouwfunctie voor expressies: een Access-hulpprogramma voor het maken van expressies. Het bevat een aantal algemene expressies die u kunt selecteren.) wilt maken.

      Als u bijvoorbeeld wilt voorkomen dat een gebruiker een order van minder dan 10 eenheden invoert, kunt u voor het veld Aantal de validatie-expressie '>9' definiëren.

    3. Typ in het eigenschappenvak Validatietekst het foutbericht dat moet worden weergegeven wanneer niet aan de regel wordt voldaan.

      Voor de validatie-expressie '>9' kunt u bijvoorbeeld typen: 'U moet 10 of meer eenheden bestellen'.

    4. Als u een validatieregel instelt voor een veld dat gegevens bevat, wordt u gevraagd of u de nieuwe regel op bestaande gegevens wilt toepassen wanneer u de tabel opslaat. Als u op Ja klikt, wordt u gewaarschuwd wanneer de bestaande gegevens in strijd zijn met de validatieregel.

    WeergevenEen validatieregel definiëren die bepaalt wanneer een record mag worden opgeslagen

    1. Klik op Eigenschappen Knopvlak op de werkbalk om het eigenschappenvenster van de tabel weer te geven.
    2. Typ de validatieregel in het eigenschappenvak Validatieregel, of klik op de knop Opbouwen Knopvlak als u de validatieregel met behulp van de opbouwfunctie voor expressies (opbouwfunctie voor expressies: een Access-hulpprogramma voor het maken van expressies. Het bevat een aantal algemene expressies die u kunt selecteren.) wilt maken.

      U kunt bijvoorbeeld de validatie-expressie '[Vereiste datum]<=[Orderdatum]+30' definiëren om ervoor te zorgen dat de ingevoerde datum in het veld Vereiste datum niet meer dan 30 dagen na de orderdatum valt.

    3. Typ in het eigenschappenvak Validatietekst het foutbericht dat moet worden weergegeven wanneer niet aan de regel wordt voldaan.

      Voor de validatie-expressie '[Vereiste datum]<=[Orderdatum]+30' kunt u bijvoorbeeld typen: 'De vereiste datum mag niet meer dan 30 dagen na de orderdatum vallen'.

    4. Als u een validatieregel instelt in een tabel die gegevens bevat, wordt u gevraagd of u de nieuwe regel op bestaande gegevens wilt toepassen wanneer u de tabel opslaat. Als u klikt op Ja, wordt u gewaarschuwd wanneer de bestaande gegevens in strijd zijn met de validatieregel.

    WeergevenGegevens controleren die al aanwezig waren voordat u een validatieregel opgaf

    • Klik met de rechtermuisknop op de titelbalk van de tabel en klik op Validatieregels testen.

      Er verschijnt een waarschuwingsbericht als de bestaande gegevens in strijd zijn met een validatieregel of met de instelling van de eigenschappen Vereist of Lengte nul toestaan.

WeergevenHet bericht 'Query bevat dubbelzinnige outer joins' verschijnt

Wanneer het volgende bericht wordt weergegeven:

'De SQL-instructie kan niet worden uitgevoerd omdat deze niet-eenduidige outer joins bevat.'

hebt u geprobeerd een SQL-instructie uit te voeren die meerdere joins (join: een verbinding tussen een veld in een tabel of query en een veld met hetzelfde gegevenstype in een andere tabel of query. Een join geeft de relatie tussen gegevens aan. Niet-overeenkomende records kunnen wel of niet worden opgenomen, afhankelijk van het type join.) bevat. Er zijn drie typen joins in Microsoft Access: inner joins (inner join: een join waarbij records in twee tabellen worden gecombineerd en toegevoegd aan het resultaat van een query, mits de waarden van de velden in de join voldoen aan een opgegeven voorwaarde. In een query is de standaardjoin tussen tabellen een inner join waarmee alleen records uit beide tabellen worden geselecteerd als de waarden van de velden in de join gelijk zijn.) (ook wel equi joins genoemd), left outer joins (outer join: een join waarbij overeenkomende records uit twee tabellen worden gecombineerd tot één record in de queryresultaten, en één tabel deelneemt met alle records, zelfs als de waarden in het gekoppelde veld niet overeenkomen met de waarden in de andere tabel.) en right outer joins. Bij een combinatie van joins zijn de resultaten van de query afhankelijk van het type join en de volgorde waarin de joins worden uitgevoerd.

WeergevenVoorbeeld van meervoudige joins met drie tabellen

Stel dat u drie tabellen hebt, Consultants, Active Consultants en Projects. U maakt een SQL-query door deze tabellen op de volgende manier te koppelen:

Consultants LEFT OUTER JOIN Active Consultants INNER JOIN Projects
								

Deze query kan op twee manieren worden verwerkt:

  • (Consultants LEFT OUTER JOIN Active Consultants) INNER JOIN Projects
    										

Eerst wordt in Access een left outer join gemaakt waarmee de tabellen Consultants en Active Consultants worden gekoppeld. Vervolgens wordt een inner join gemaakt waarmee de resultaten van die twee tabellen worden gekoppeld aan de tabel Projects.

  • Consultants LEFT OUTER JOIN (Active Consultants INNER JOIN Projects)
    										

Er wordt een left outer join gemaakt die de tabel Consultants koppelt aan de resultaten van de inner join tussen de tabellen Active Consultants en Projects.

Omdat deze twee koppelingsmethoden in Microsoft Access verschillende resultaten kunnen opleveren, moet u expliciet opgeven welke methode u wilt gebruiken. Dit doet u door een van de joins te wijzigen of door de query op te splitsen in twee query's.

WeergevenEenduidige meervoudige joins

Bij verwerking van de volgende combinaties van joins wordt slechts één resultaat gegenereerd en wordt er geen foutbericht weergegeven over niet-eenduidige outer joins:

  • Consultants INNER JOIN Active Consultants INNER JOIN Projects
    										
  • Consultants INNER JOIN Active Consultants LEFT OUTER JOIN Projects
    										
  • Consultants LEFT OUTER JOIN Active Consultants LEFT OUTER JOIN Projects
    										
  • Consultants RIGHT OUTER JOIN Active Consultants INNER JOIN Projects
    										
  • Consultants RIGHT OUTER JOIN Active Consultants LEFT OUTER JOIN Projects
    										
  • Consultants RIGHT OUTER JOIN Active Consultants RIGHT OUTER JOIN Projects
    										

WeergevenNiet-eenduidige meervoudige joins

Bij verwerking van de volgende combinaties van joins worden meerdere resultaten gegenereerd en wordt er een foutbericht weergegeven over niet-eenduidige outer joins:

  • Consultants INNER JOIN Active Consultants RIGHT OUTER JOIN Projects
    										
  • Consultants LEFT OUTER JOIN Active Consultants INNER JOIN Projects
    										
  • Consultants LEFT OUTER JOIN Active Consultants RIGHT OUTER JOIN Projects
    										

WeergevenHet bericht 'Typen komen niet overeen' verschijnt

WeergevenEr verschijnt een bericht met de melding dat er minder parameters zijn opgegeven dan verwacht

Dit bericht kan verschijnen als u in het dialoogvenster Queryparameters geen gegevenstypen hebt opgegeven voor een parameterquery (parameterquery: een query waarin u op interactieve wijze een of meer criteriawaarden opgeeft. Een parameterquery is geen afzonderlijk type query, maar is wel flexibeler dan een gewone query.) die wordt geëxporteerd naar een IDC (IDC-/HTX-bestanden: op de Microsoft Internet Information Server wordt een IDC-bestand en een HTX-bestand gebruikt om gegevens op te halen uit een ODBC-gegevensbron en deze te formatteren als HTML-document.)-bestand.

  1. Klik in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.) op Query's Knopvlak onder Objecten.
  2. Klik op de naam van de parameterquery die u wilt wijzigen en klik op Ontwerpen op de werkbalk van het databasevenster.
  3. Geef een gegevenstype op voor de parameter.

    WeergevenWerkwijze

    1. Klik op Parameters in het menu Query.

    2. Typ in de eerste parametercel de eerste aanwijzing die u in het queryraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) hebt ingevoerd.

    3. Klik rechts van de cel Gegevenstype op het gewenste gegevenstype (gegevenstype: het kenmerk van een veld dat bepaalt welk type gegevens daarin kunnen worden opgeslagen. Gegevenstypen zijn onder andere Booleaans, Integer, Lang, Valuta, Enkel, Dubbel, Datum, Reeks en Variant (standaardtype).).

      Gegevenstype van het parameterveld: Mogelijke gegevenstypen voor de cel Gegevenstype:
      Valuta, Datum/tijd, Memo, OLE-object, Tekst en Ja/nee  Valuta, Datum/tijd, Memo, OLE-object, Tekst en Ja/nee
      Numeriek Byte, Enkel, Dubbel, Integer, Lange integer en Replicatie-id. Deze gegevenstypen komen overeen met de vijf instellingen van de eigenschap Veldlengte van het gegevenstype Numeriek.
      Onbekend Waarde. Dit is een algemeen gegevenstype waarbij elk gegevenstype kan worden gebruikt.
      Binair Binaire waarde. Wordt gebruikt bij parameterquery's die gericht zijn op gekoppelde tabellen (gekoppelde tabel: een tabel die is opgeslagen in een bestand buiten de geopende database vanwaar Access toegang tot records kan krijgen. U kunt records in een gekoppelde tabel bewerken, toevoegen en verwijderen, maar u kunt niet de structuur van de tabel wijzigen.) waarin dit gegevenstype wordt herkend (in Microsoft Access wordt dit gegevenstype niet herkend).
    4. Herhaal de stappen 2 en 3 voor elke parameter waarvoor u een gegevenstype wilt instellen.

  4. Sla de query op en voer deze uit.

WeergevenHet bericht 'De bewerking moet worden uitgevoerd op een query die kan worden bijgewerkt' verschijnt

Dit foutbericht verschijnt als de rij Wijzigen in van de huidige query een veld bevat van een kruistabelquery of een selectiequery, waarin een statistische functie (statistische functie: een functie, zoals Som, Aantal, Gem of Var, waarmee u totalen kunt berekenen.) is gebruikt voor het berekenen van een totaal (ofwel met de rij Totaal of met een domeinfunctie (statistische domeinfunctie: een functie zoals DAvg of DMax, die wordt gebruikt bij de berekening van statistische gegevens voor een bepaalde set records (een domein).) in de rij Veld). Als u een veld wilt bijwerken waarin het totaal van een ander veld wordt gebruikt, moet u het totaal in de bijwerkquery zelf berekenen en niet in een andere query.

  1. Verwijder in de ontwerpweergave van de actieve query (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.) het veld dat u hebt toegevoegd uit de kruistabel- of selectiequery (waarin een totaal voor het veld is berekend).
  2. Geef in de cel Wijzigen in van het veld dat u wilt bijwerken een domeinfunctie op waarmee voor dat veld hetzelfde totaal wordt berekend als in de selectie- of kruistabelquery.

    Als de tabel Products bijvoorbeeld een berekend veld (berekend veld: een veld dat is opgegeven in een query en dat het resultaat van een expressie weergeeft in plaats van opgeslagen gegevens. Als een waarde in de expressie wordt gewijzigd, wordt de waarde van het veld opnieuw berekend.) Sales So Far bevat, kunt u dit veld bijwerken met het product van het veld Quantity en het veld UnitPrice in de tabel Order Details. Dit doet u door het veld toe te voegen aan het ontwerpraster in de bijwerkquery en vervolgens de volgende domeinfunctie op te geven in de cel Wijzigen in:

    DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID])
    								
  3. Als u de query wilt uitvoeren, klikt u op Uitvoeren Knopvlak op de werkbalk.
  4. Open de tabel door in het databasevenster onder Objecten op Tabellen Knopvlak en vervolgens op Openen op de werkbalk van het databasevenster te klikken als u de resultaten wilt bekijken.

WeergevenHet gebruik van een jokerteken in mijn query levert een onverwacht resultaat op

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel en maken gebruik van verschillende jokertekens. Hierdoor kan het volgende gebeuren:

Wanneer u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u beslissen welke querymodus u wilt gebruiken. Als u later een query maakt in een andere ANSI SQL-querymodus dan de ingestelde modus in uw Access-database, kan de query runtime-fouten of onverwachte resultaten genereren.

WeergevenJokertekens gebruiken om naar gedeeltelijk of geheel overeenkomende waarden te zoeken

U kunt in een zoekreeks jokertekens als tijdelijke aanduiding voor andere tekens gebruiken wanneer u een waarde zoekt en:

  • u slechts een gedeelte van de waarde kent;
  • u alle waarden wilt zoeken die met een bepaalde letter beginnen of die met een bepaald patroon overeenkomen.

Jokertekens worden in principe gebruikt voor velden met het gegevenstype Tekst. U kunt jokertekens soms ook gebruiken voor gegevens van een ander type, zoals datums, op voorwaarde dat u de landinstellingen voor deze gegevenstypen niet hebt gewijzigd in het Configuratiescherm van Microsoft Windows.

Als u werkt met Microsoft Jet Database Engine SQL in een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.), kunt u de volgende jokertekens gebruiken in query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) en expressies (expressie: elke mogelijke combinatie van wiskundige of logische operatoren, constanten, functies en namen van velden, besturingselementen en eigenschappen, die resulteert in één enkele waarde. Met expressies kunt u berekeningen uitvoeren, tekens bewerken of gegevens testen.) om te zoeken naar veldwaarden, records of bestandsnamen. U kunt deze jokertekens ook gebruiken in de dialoogvensters Zoeken en Vervangen in een Access-database of een Access-project (Microsoft Access-project: een Access-bestand dat is verbonden met een Microsoft SQL Server-database en wordt gebruikt voor het maken van client/server-toepassingen. Een Access-project bevat geen objecten met gegevens of objecten die zijn gebaseerd op definities, zoals tabellen en weergaven.).

Teken Beschrijving Voorbeeld
* Komt overeen met een willekeurig aantal tekens. Kan worden gebruikt als eerste of laatste teken in de tekenreeks. Met we* vindt u 'wel', 'wereld' en 'weten'.
? Komt overeen met één willekeurig teken. Met b?l vindt u 'bal', 'bel', 'bil', 'bol' en 'bul'.
[ ] Komt overeen met elk van de afzonderlijke tekens tussen de vierkante haakjes. Met b[ae]l vindt u 'bal' en 'bel', maar niet 'bil', 'bol' of 'bul'.
! Komt overeen met elk teken dat niet tussen de vierkante haakjes staat. Met b[!ae]l vindt u 'bil', 'bol' en 'bul', maar niet 'bal' of 'bel'.
- Komt overeen met elk van de tekens binnen een bereik van tekens. U moet een bereik in oplopende volgorde opgeven (dus van A tot Z, niet van Z tot A). Met b[a-c]d vindt u 'bad', 'bbd', en 'bcd'.
# Komt overeen met één cijfer. Met 1#3 vindt u 103, 113, 123.

Als u zoekt naar veldwaarden, records of bestandsnamen in een Microsoft Access-project, of in een Microsoft Access-database waarin SQL Server-compatibele syntaxis is gebruikt, kunt u de volgende ANSI-92-jokertekens gebruiken.

 Opmerking   Als u de dialoogvensters Zoeken en Vervangen gebruikt in een Access-project of in een Access-database waarin Microsoft SQL Server-compatibele syntaxis wordt gebruikt, moet u de jokertekens van Microsoft Jet SQL gebruiken.

Teken Beschrijving Voorbeeld
% Komt overeen met een willekeurig aantal tekens. Kan worden gebruikt als eerste of laatste teken in de tekenreeks. Met we% vindt u 'wel', 'wereld' en 'weten'.
_ Komt overeen met één willekeurig teken. Met b_l vindt u 'bal', 'bel', 'bil', 'bol' en 'bul'.
[ ] Komt overeen met elk van de afzonderlijke tekens tussen de vierkante haakjes. Met b[ae]l vindt u 'bal' en 'bel', maar niet 'bil', 'bol' of 'bul'.
^ Komt overeen met elk teken dat niet tussen de vierkante haakjes staat. Met b[^ae]l vindt u 'bil', 'bol' en 'bul', maar niet 'bal' of 'bel'.
- Komt overeen met elk van de tekens binnen een bereik van tekens. U moet een bereik in oplopende volgorde opgeven (dus van A tot Z, niet van Z tot A). Met b[a-c]d vindt u 'bad', 'bbd', en 'bcd'.

  Opmerkingen  

WeergevenDezelfde onderliggende query geeft een ander resultaat in een Data Access-pagina en een formulier

De onderliggende query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.)  van een formulier (formulier: een databaseobject van Access waarin u besturingselementen plaatst voor het uitvoeren van acties of het invoeren, weergeven en bewerken van gegevens in velden.) wordt uitgevoerd in de ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) die momenteel is ingesteld in de Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.). De onderliggende query van een Data Access-pagina (Data Access-pagina: een webpagina die vanuit Access wordt gepubliceerd en die een koppeling naar een database bevat. Op een Data Access-pagina kunt u gegevens die zijn opgeslagen in de database bekijken, toevoegen, wijzigen en anderszins bewerken. Een Data Access-pagina kan ook gegevens bevatten uit andere bronnen, bijvoorbeeld Excel.) wordt echter altijd uitgevoerd in de ANSI-92 SQL-querymodus omdat de pagina wordt verbonden met de Access-database via ADO (ActiveX Data Objects (ADO): een interface voor gegevenstoegang die communiceert met OLE DB-gegevensbronnen om gegevens te kunnen koppelen, ophalen, bewerken en bijwerken.) en de Microsoft Jet OLE DB-provider, die beide uitsluitend functioneren met ANSI-92 SQL. Als voor uw Access-database de ANSI-89 SQL-querymodus is ingesteld, wordt de onderliggende query van het formulier uitgevoerd in de ANSI-89-modus, terwijl de onderliggende query van een pagina altijd in de ANSI-92-modus wordt uitgevoerd, ongeacht de instelling van de Access-database. U kunt dit probleem voorkomen door een andere query voor het formulier te gebruiken en door de query voor het formulier te herschrijven zodat deze hetzelfde resultaat genereert als de onderliggende query voor de pagina.

WeergevenIk krijg niet de records die ik wil hebben

WeergevenEr worden te veel records opgehaald.

WeergevenEr worden te weinig records opgehaald

WeergevenEr worden onjuiste records opgehaald

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten als resultaat uit een land of regio met de naam 'U*', niet alle landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de bestandsindeling van 2002 - 2003 naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de bestandsindeling van 2002 - 2003.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

WeergevenIk krijg niet de kolommen die ik wil hebben

WeergevenEr worden te veel kolommen opgehaald.

WeergevenEr worden te weinig kolommen opgehaald

WeergevenEr worden onjuiste kolommen opgehaald

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de bestandsindeling van 2002 - 2003 naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de bestandsindeling van 2002 - 2003.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

WeergevenEen berekening levert andere resultaten op dan ik had verwacht

WeergevenEen berekening van totalen (statistische berekening) levert niet het juiste resultaat op

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de 2002- of 2003-bestandsindeling naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de 2002 - 2003-bestandsindeling.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

Specifieke typen query's

WeergevenSelectiequery's 

WeergevenEr worden geen gegevens ingevuld door de AutoLookup-query

Automatisch opzoeken kan alleen worden gebruikt als aan de volgende voorwaarden is voldaan:

WeergevenIk kan de gegevens in de query niet bijwerken

In sommige gevallen kunt u gegevens in de gegevensbladweergave (gegevensbladweergave: een venster waarin gegevens uit een tabel, formulier, query, weergave of opgeslagen procedure worden weergegeven in rij- en kolomindeling. In de gegevensbladweergave kunt u velden bewerken en gegevens toevoegen, verwijderen en zoeken.) van een query bewerken en zo de gegevens in de onderliggende tabel wijzigen. In andere gevallen is dit niet mogelijk. Hier wordt beschreven in welke gevallen u de queryresultaten kunt bijwerken en zo niet, of er alternatieven zijn.

WeergevenGegevens kunnen onder bepaalde voorwaarden worden bijgewerkt

Als een query is gebaseerd op tabellen met een een-op-veel-relatie (een-op-veel-relatie: een verbinding tussen twee tabellen waarbij de primaire-sleutelwaarde van elke record in de primaire tabel correspondeert met de waarde in een of meer overeenkomende velden van veel records in de gerelateerde tabel.), is het mogelijk dat u de gegevens in de volgende velden niet kunt bewerken.

Queryveld Oplossing
Joinveld aan de 'één'-kant. Schakel de optie Gerelateerde velden trapsgewijs bijwerken (trapsgewijs bijwerken: bij relaties waarmee referentiële integriteit tussen tabellen wordt afgedwongen, is dit het bijwerken van alle records in de gerelateerde tabel of tabellen als een record in de primaire tabel wordt gewijzigd.) in voor de twee tabellen.
Nieuwe records, als het joinveld aan de 'veel'-kant niet wordt weergegeven in het gegevensblad. Voeg het joinveld aan de 'veel'-kant toe aan de query zodat nieuwe records kunnen worden toegevoegd.
Joinveld aan de 'veel'-kant, nadat u gegevens aan de 'één'-kant hebt bijgewerkt. Sla de record op. Daarna kunt u wijzigingen aanbrengen in het joinveld aan de 'veel'-kant.
Leeg veld in de tabel aan de 'één'-kant van een een-op-veel-relatie met een outer join (outer join: een join waarbij overeenkomende records uit twee tabellen worden gecombineerd tot één record in de queryresultaten, en één tabel deelneemt met alle records, zelfs als de waarden in het gekoppelde veld niet overeenkomen met de waarden in de andere tabel.). U kunt alleen waarden invoeren in velden van de tabel aan de 'veel'-kant. Het gekoppelde veld van de 'één'-kant moet dan wel een waarde bevatten voor die record.
Nieuwe records, als de gehele unieke sleutel van de ODBC (ODBC (Open Database Connectivity): een standaardmethode om gegevens uit te wisselen tussen databases en programma's. ODBC-stuurprogramma's gebruiken SQL (Structured Query Language) als standaardtaal om toegang te krijgen tot externe gegevens.)-tabel niet wordt uitgevoerd. Selecteer alle primaire-sleutel (primaire sleutel: een of meer velden (kolommen) waarvan de waarden elke record in de tabel uniek identificeren. Een primaire sleutel kan geen Null-waarden bevatten en heeft altijd een unieke index. Met een primaire sleutel relateert u een tabel aan refererende sleutels in andere tabellen.)velden van ODBC-tabellen zodat gegevens kunnen worden ingevoegd.

WeergevenGegevens kunnen worden verwijderd, maar niet bijgewerkt

Query of queryveld Oplossing
Query (of onderliggende tabel) waarvoor de machtiging (machtigingen: een set kenmerken waarmee wordt aangegeven wat voor toegang een gebruiker heeft tot gegevens of objecten in een database.) Bijwerken niet is verleend. U kunt alleen gegevens wijzigen als de juiste machtigingen zijn toegewezen.
Query (of onderliggende tabel) waarvoor de machtiging Verwijderen niet is verleend. U kunt alleen gegevens verwijderen als de juiste machtigingen zijn toegewezen. 

WeergevenGegevens kunnen niet worden bijgewerkt

Query of queryveld Oplossing
Query die is gebaseerd op drie of meer tabellen met een veel-op-veel-relatie. Hoewel het niet mogelijk is de gegevens in de query rechtstreeks te wijzigen, kunt u de gegevens bijwerken via een formulier dat of een Data Access-pagina (Data Access-pagina: een webpagina die vanuit Access wordt gepubliceerd en die een koppeling naar een database bevat. Op een Data Access-pagina kunt u gegevens die zijn opgeslagen in de database bekijken, toevoegen, wijzigen en anderszins bewerken. Een Data Access-pagina kan ook gegevens bevatten uit andere bronnen, bijvoorbeeld Excel.) die op de query is gebaseerd. De eigenschap Type recordset van het formulier moet dan wel zijn ingesteld op Dynaset (Inconsistent bijwerken).
Kruistabelquery (kruistabelquery: een query waarmee de som, het gemiddelde, het aantal of een ander type totaal van records wordt berekend, waarna het resultaat wordt gegroepeerd op grond van twee typen informatie: de informatie links van het gegevensblad en de informatie boven aan het gegevensblad.)  Geen
SQL Pass Through-query (Pass Through-query: een SQL-query waarmee u opdrachten rechtstreeks naar een ODBC-databaseserver kunt sturen. Met Pass Through-query's werkt u direct met de tabellen op de server, in plaats van de gegevens te laten verwerken in Microsoft Jet Database Engine.)  Geen
Query waarmee de som, het gemiddelde, het aantal of een ander type totaal wordt berekend voor de waarden in een veld, of een bijwerkquery waarin wordt verwezen naar een veld in de rij Wijzigen in van een kruistabelquery, een selectiequery (selectiequery: een query waarmee u een vraag stelt over de gegevens die in de tabellen zijn opgeslagen en waarmee een resultaatset wordt weergegeven in de vorm van een gegevensblad, zonder dat gegevens worden gewijzigd.) of een subquery (subquery: een SQL SELECT-instructie in een selectie- of actiequery.) met functies voor het berekenen van totalen of statistische functies. Met een statistische domeinfunctie (statistische domeinfunctie: een functie zoals DAvg of DMax, die wordt gebruikt bij de berekening van statistische gegevens voor een bepaalde set records (een domein).) in de rij Wijzigen in van een bijwerkquery kunt u vanuit een kruistabelquery, een selectiequery of een subquery verwijzen naar velden met functies voor het berekenen van totalen of statistische functies. 
Samenvoegquery's (samenvoegquery: een query die met de operator UNION het resultaat van twee of meer geselecteerde query's combineert.)  Geen
Query waarvan de eigenschap Unieke waarden is ingesteld op Ja.  Geen
Query die een gekoppelde ODBC (ODBC (Open Database Connectivity): een standaardmethode om gegevens uit te wisselen tussen databases en programma's. ODBC-stuurprogramma's gebruiken SQL (Structured Query Language) als standaardtaal om toegang te krijgen tot externe gegevens.)-tabel zonder unieke index (unieke index: een index die wordt gedefinieerd door de eigenschap Indexed van een veld in te stellen op Yes (No Duplicates). In een veld met een unieke index kunt u geen dubbele gegevens invoeren. Als u een veld instelt als primaire-sleutelveld, krijgt het veld automatisch een unieke index.), of een Paradox-tabel zonder primaire sleutel (primaire sleutel: een of meer velden (kolommen) waarvan de waarden elke record in de tabel uniek identificeren. Een primaire sleutel kan geen Null-waarden bevatten en heeft altijd een unieke index. Met een primaire sleutel relateert u een tabel aan refererende sleutels in andere tabellen.) bevat.  Geen
Query met meerdere tabellen of query's die niet zijn verbonden door een joinlijn in de ontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.). U moet de tabellen op de juiste wijze koppelen voordat u deze kunt bijwerken.
Berekend veld (berekend veld: een veld dat is opgegeven in een query en dat het resultaat van een expressie weergeeft in plaats van opgeslagen gegevens. Als een waarde in de expressie wordt gewijzigd, wordt de waarde van het veld opnieuw berekend.)  Geen
Veld met kenmerk Alleen-lezen. De database is geopend als alleen-lezen bestand of bevindt zich op een schijf met het kenmerk Alleen-lezen.  Geen
Veld in record die is verwijderd of vergrendeld (vergrendeld: de toestand van een record, recordset of database waardoor deze door alle gebruikers alleen kan worden gelezen (niet kan worden gewijzigd), met uitzondering van de gebruiker die op dat moment het object aan het bewerken is.) door een andere gebruiker. Normaal gesproken kan een vergrendelde record worden bijgewerkt zodra de vergrendeling is opgeheven.

WeergevenIk krijg onverwacht de vraag een parameter op te geven

Als u onverwachts wordt gevraagd parameters te typen wanneer u probeert een query uit te voeren of een rapport of Data Access-pagina (Data Access-pagina: een webpagina die vanuit Access wordt gepubliceerd en die een koppeling naar een database bevat. Op een Data Access-pagina kunt u gegevens die zijn opgeslagen in de database bekijken, toevoegen, wijzigen en anderszins bewerken. Een Data Access-pagina kan ook gegevens bevatten uit andere bronnen, bijvoorbeeld Excel.) probeert te openen, kan dit een van de volgende oorzaken hebben:

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de 2002- of 2003-bestandsindeling naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de 2002 - 2003-bestandsindeling.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

WeergevenParameterquery's

WeergevenIk krijg onverwacht de vraag een parameter op te geven

Als u onverwachts wordt gevraagd parameters te typen wanneer u probeert een query uit te voeren of een rapport of Data Access-pagina (Data Access-pagina: een webpagina die vanuit Access wordt gepubliceerd en die een koppeling naar een database bevat. Op een Data Access-pagina kunt u gegevens die zijn opgeslagen in de database bekijken, toevoegen, wijzigen en anderszins bewerken. Een Data Access-pagina kan ook gegevens bevatten uit andere bronnen, bijvoorbeeld Excel.) probeert te openen, kan dit een van de volgende oorzaken hebben:

WeergevenIk wil met een parameterquery alle records kunnen ophalen

  1. In de ontwerpweergave van de query (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) typt u [prompt] Is Null in de cel Of onder het veld met de prompt in de cel Criteria. Hierbij is prompt dezelfde prompt als de prompt in de cel Criteria voor dat veld. Bijvoorbeeld:

    In deze cel Type
    criteria Like [Voer Categorie-id in:]
    Or [Voer Categorie-id in:] Is Null
  2. Voer de query uit.

  3. Laat het dialoogvenster Parameterwaarde invoeren leeg.

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de 2002- of 2003-bestandsindeling naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de 2002 - 2003-bestandsindeling.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

WeergevenKruistabelquery's

WeergevenDe kolomkoppen staan niet in de gewenste volgorde, of ik wil ze niet allemaal opnemen

U kunt met de eigenschap Kolomkoptekst van de query instellen welke kolomkoppen worden weergegeven en in welke volgorde.

WeergevenEen of meer kolomkoppen in het resultaat van de query hebben de label '<>'

Wanneer in de rij Kruistabel (Null: een waarde die kan worden ingevoerd in een veld of worden gebruikt in expressies en query's om ontbrekende of onbekende gegevens aan te duiden. In Visual Basic verwijst het sleutelwoord Null naar een Null-waarde. Sommige velden, zoals velden waarvoor een primaire sleutel is ingesteld, kunnen geen Null-waarden bevatten.) van een veld Kolomkop staat en dit veld een Null-waarde bevat, wordt in Microsoft Access voor deze Null-waarde de kolomnaam '< >' geretourneerd. U kunt dit op een van de volgende manieren voorkomen:

WeergevenDe verkeerde veldwaarden worden weergegeven als rij- of kolomkoppen

Controleer of het veld waarvan u de waarden wilt gebruiken als kolomkoppen in het ontwerpraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) staat met de waarde Kolomkop in de rij Kruistabel. Controleer ook of het veld of de velden waarvan u de waarden wilt gebruiken als rijkoppen in het ontwerpraster staan met de waarde Rijkop in de cel Kruistabel. Als u een waarde in de rij Kruistabel wilt wijzigen, klikt u op de gewenste cel en vervolgens op een waarde in de lijst. Als u alleen bepaalde waarden als kolomkoppen wilt weergeven, stelt u de eigenschap Kolomkoptekst van de query in.

WeergevenKolomkoppen in een kruistabelquery sorteren of beperken

U kunt van kolomkoppen in een kruistabelquery (kruistabelquery: een query waarmee de som, het gemiddelde, het aantal of een ander type totaal van records wordt berekend, waarna het resultaat wordt gegroepeerd op grond van twee typen informatie: de informatie links van het gegevensblad en de informatie boven aan het gegevensblad.) de volgorde wijzigen of het aantal beperken. Zo kunt u in kolomkoppen die de maanden van het jaar bevatten de maanden in chronologische volgorde weergeven, in plaats van op alfabet. Bovendien kunt u de weergegeven kolomkoppen beperken tot de maanden januari tot en met juni.

  1. Open de kruistabelquery in de ontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.).
  2. Klik op de achtergrond van de ontwerpweergave van de query buiten het ontwerpraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) en de lijsten met velden (lijst met velden: een venster dat alle velden bevat uit de onderliggende recordbron of het onderliggende databaseobject. Alleen in de ontwerpweergave van een Data Access-pagina bevat de lijst met velden alle recordbronnen en bijbehorende velden uit de onderliggende database.).
  3. Klik op Eigenschappen Knopvlak op de werkbalk om het eigenschappenvenster van de query weer te geven.
  4. Typ in het vak van de eigenschap Kolomkoptekst de kolomkoppen die u wilt weergeven in de volgorde waarin u deze wilt weergeven. Typ tussen de kolomkoppen een komma of het lijstscheidingsteken dat bij de instellingen voor uw land of regio hoort. (Zie Landinstellingen in het Configuratiescherm van Microsoft Windows als u wilt weten wat het lijstscheidingsteken is voor uw land.)

    De kolomkopteksten die u invoert, moeten exact gelijk zijn aan de kolomkopteksten in het gegevensblad van de query. Als een kolomkoptekst in het gegevensblad bijvoorbeeld `USA' is, moet u als kolomkop `USA' invoeren, niet `VS' (als u op ENTER drukt of de aanwijzer verplaatst, worden de kopteksten tussen dubbele aanhalingstekens geplaatst).

  5. Klik op Beeld Knopvlak op de werkbalk om het queryresultaat te bekijken.

  Opmerkingen  

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de 2002- of 2003-bestandsindeling naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de 2002 - 2003-bestandsindeling.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

WeergevenActiequery's (toevoeg-, bijwerk- en verwijderquery's)

WeergevenDe toevoegquery heeft gegevens toegevoegd aan of uit de verkeerde velden 

Controleer of u de juiste velden hebt geselecteerd voor de  gegevens die u wilt toevoegen, de juiste criteria (criteria: voorwaarden die u opgeeft als u alleen bepaalde records wilt opnemen in het resultaat van een query of filter.) hebt ingevoerd in het ontwerpraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) van de query en de juiste velden hebt geselecteerd waaraan u de gegevens wilt toevoegen. Herstel de gegevens indien mogelijk naar de oorspronkelijke staat met behulp van een back-up en voer de volgende bewerkingen uit:

WeergevenDe velden selecteren waaraan u gegevens wilt toevoegen

  • Klik in de cel Toevoegen aan op de namen van de velden waaraan u gegevens wilt toevoegen.

 Opmerking   Als u in de cel Veld een sterretje (*) hebt toegevoegd, selecteert u het sterretje in de cel Toevoegen aan. Alle veldnamen moeten in beide tabellen precies dezelfde zijn. U kunt geen criteria opgeven voor het selecteren van records in de kolom met het sterretje, maar u kunt wel criteria opgeven in een aparte kolom.

WeergevenDe bijwerkquery heeft de gegevens niet op de gewenste manier bijgewerkt

WeergevenIk weet niet hoe ik het beste dubbele records kan verwijderen na gebruik van de wizard Dubbele records

Verwijder de dubbele record of het origineel rechtstreeks in de gegevensbladweergave (gegevensbladweergave: een venster waarin gegevens uit een tabel, formulier, query, weergave of opgeslagen procedure worden weergegeven in rij- en kolomindeling. In de gegevensbladweergave kunt u velden bewerken en gegevens toevoegen, verwijderen en zoeken.) van de query.

WeergevenEen record verwijderen

WeergevenEen record verwijderen in een gegevensblad of formulier

  1. Open een gegevensblad (gegevensbladweergave: een venster waarin gegevens uit een tabel, formulier, query, weergave of opgeslagen procedure worden weergegeven in rij- en kolomindeling. In de gegevensbladweergave kunt u velden bewerken en gegevens toevoegen, verwijderen en zoeken.) of open een formulier in de formulierweergave (formulierweergave: een venster waarin u formuliergegevens kunt bekijken of invoeren. De formulierweergave is het belangrijkste hulpmiddel voor het toevoegen of wijzigen van gegevens in tabellen. U kunt in deze weergave ook het ontwerp van het formulier wijzigen.).
  2. Klik op de record die u wilt verwijderen.
  3. Klik op Record verwijderen Knopvlak op de werkbalk.

 Opmerking   Wanneer u gegevens verwijdert, is het waarschijnlijk een goed idee om ook de gerelateerde gegevens in andere tabellen te verwijderen. Als u bijvoorbeeld een leverancier verwijdert, doet u er goed aan ook de producten van deze leverancier verwijderen. In bepaalde gevallen kunt u referentiële integriteit (referentiële integriteit: de regels die u hanteert om de bestaande relaties tussen tabellen in stand te houden wanneer u records invoert of verwijdert.) afdwingen en de functie Trapsgewijs verwijderen inschakelen, zodat u er zeker van bent dat de juiste gegevens worden verwijderd.

WeergevenEen record verwijderen op een Data Access-pagina

 Belangrijk   Wanneer u een record eenmaal hebt verwijderd, kunt u deze bewerking niet meer ongedaan maken.

  • Klik op de werkbalk voor recordnavigatie op Verwijderen Knopvlak .

 Opmerking   Als u de knop Verwijderen niet ziet, heeft dat een van de volgende oorzaken:

  • Het is niet mogelijk items van de pagina te verwijderen.
  • De ontwerper van de pagina heeft de knop aangepast. Ga na of er aangepaste instructies zijn voor het gebruik van de pagina of neem contact op met de ontwerper.

Gebruik de wizard Dubbele records niet en converteer ook geen query voor dubbele records naar een verwijderquery als u wilt dat alle dubbele records automatisch door Microsoft Access worden verwijderd en de oorspronkelijke records worden gehandhaafd.

WeergevenDubbele records uit een tabel verwijderen

Het verwijderen van dubbele records uit een tabel vergt twee stappen. Eerst maakt u een kopie van de structuur van de tabel die dubbele records bevat en vervolgens maakt u primaire sleutels (primaire sleutel: een of meer velden (kolommen) waarvan de waarden elke record in de tabel uniek identificeren. Een primaire sleutel kan geen Null-waarden bevatten en heeft altijd een unieke index. Met een primaire sleutel relateert u een tabel aan refererende sleutels in andere tabellen.) van alle velden die dubbele records bevatten. Dan maakt u een toevoegquery (toevoegquery: een actiequery waarmee de records in de resultaatset van een query worden toegevoegd aan het einde van een bestaande tabel.) waarmee u de gegevens van de oorspronkelijke tabel toevoegt aan de nieuwe tabel. Aangezien primaire-sleutelvelden geen dubbele records mogen bevatten, wordt tijdens deze bewerking een tabel gemaakt die geen dubbele records bevat.

  1. Kopieer de tabel en maak primaire sleutels van velden die dubbele records bevatten.

    WeergevenWerkwijze

    1. Klik in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.) op Tabellen Knopvlak onder Objecten.
    2. Klik op de naam van de tabel waaruit u dubbele records wilt verwijderen.
    3. Klik op Kopiëren Knopvlak op de werkbalk (werkbalk: een balk met knoppen en opties die u kunt gebruiken om opdrachten uit te voeren. U kunt een werkbalk weergeven door op ALT en vervolgens op SHIFT+F10 te klikken.).
    4. Klik op Plakken Knopvlak op de werkbalk.
    5. Typ in het dialoogvenster Plakopties voor tabel een naam voor de gekopieerde tabel. Klik vervolgens op Alleen structuur en daarna op OK.
    6. Open de nieuwe tabel in de ontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.) en selecteer de velden die dubbele records bevatten in de tabel die u hebt gekopieerd.
    7. Klik op Primaire sleutel Knopvlak op de werkbalk als u een primaire sleutel wilt maken die gebaseerd is op de geselecteerde velden.
    8. Sla de tabel op en sluit de tabel.
  2. Voeg alleen unieke records toe aan de nieuwe tabel.

    WeergevenWerkwijze

    1. Maak een nieuwe query op basis van de oorspronkelijke tabel die dubbele records bevat.
    2. Klik in de queryontwerpweergave (ontwerpweergave: een venster waarin het ontwerp wordt weergegeven van de volgende databaseobjecten: tabellen, query's, formulieren, rapporten, macro's en Data Access-pagina's. In de ontwerpweergave kunt u nieuwe databaseobjecten maken en het ontwerp van bestaande databaseobjecten wijzigen.) op Querytype Knopvlak op de werkbalk en klik vervolgens op Toevoegquery.
    3. Klik in de lijst Tabelnaam in het dialoogvenster Toevoegen op de naam van de nieuwe tabel en klik vervolgens op OK.
    4. Neem alle velden van de oorspronkelijke tabel op in de query door het sterretje (*) naar het ontwerpraster (ontwerpraster: het raster waarmee u een query of filter ontwerpt in de ontwerpweergave van de query of in het venster Geavanceerde filter-/sorteeropties. Voorheen werd het ontwerpraster voor query's het QBE-raster genoemd.) van de query te slepen.
    5. Klik op Uitvoeren Knopvlak op de werkbalk.
    6. Klik op Ja als er een bericht verschijnt met de melding dat u op het punt staat rijen toe te voegen.
    7. Klik op Ja als er een bericht verschijnt met de melding dat niet alle records in de toevoegquery kunnen worden toegevoegd. Hierdoor worden alleen unieke records overgebracht naar de nieuwe tabel en worden dubbele records weggelaten.
    8. Open de tabel om de resultaten te bekijken.
    9. Als u zeker weet dat de nieuwe tabel de juiste, unieke records bevat, kunt u de oorspronkelijke tabel verwijderen en de naam van de nieuwe tabel wijzigen in de naam van de oorspronkelijke tabel.

WeergevenDe verwijderquery heeft gegevens uit de verkeerde tabel verwijderd

De verwijderquery moet de volgende onderdelen bevatten:

In het queryontwerpraster wordt From of Where weergegeven in de rij Verwijderen. From wordt weergegeven in de cel Verwijderen van de tabel waaruit u records wilt verwijderen en Where wordt weergegeven in de cel Verwijderen van het veld of de velden waarvoor u criteria opgeeft.

WeergevenDe query wordt uitgevoerd in een andere ANSI SQL-querymodus

U hebt uw query (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) gemaakt in een andere ANSI SQL-querymodus (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.) dan de huidige modus van uw Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.).

WeergevenWaarom u moet vermijden query's te combineren die zijn gemaakt in verschillende ANSI SQL-querymodi

De twee ANSI SQL-querymodi (ANSI SQL-querymodus: een van de twee typen SQL-syntaxis: ANSI-89 SQL, de traditionele Jet SQL-syntaxis (ook wel Microsoft Jet SQL en ANSI SQL genoemd), en ANSI-92 SQL, dat beschikt over nieuwe en andere gereserveerde woorden, syntaxisregels en jokertekens.), ANSI-89 en ANSI-92, zijn niet compatibel. Als u een Microsoft Access-database (Microsoft Access-database: een verzameling gegevens en objecten (zoals tabellen, query's of formulieren) die betrekking heeft op een bepaald onderwerp of doel. De gegevens worden beheerd door Microsoft Jet Database Engine.) maakt, moet u bepalen welke querymodus u wilt gebruiken omdat er runtime-fouten of onverwachte resultaten kunnen optreden wanneer u query's (query: een vraag over de gegevens die in tabellen zijn opgeslagen of een verzoek om een actie uit te voeren op de gegevens. Met een query kunt u gegevens uit verschillende tabellen combineren tot een gegevensbron voor een formulier, rapport of Data Access-pagina.) die in beide querymodi zijn gemaakt door elkaar gebruikt. Het bereik van gegevenstypen, de gereserveerde waarden en de jokertekens verschillen in de querymodi.

WeergevenVoorbeeld van een query met jokertekens

Een query waarin jokertekens worden gebruikt in een criteriumexpressie kan verschillende resultaten hebben in beide querymodi. Zie de volgende voorbeelden:

  • Stel dat u een ANSI-89 SQL-query uitvoert in een database die is ingesteld op de ANSI-92-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U*'

    Deze query geeft alle klanten uit een land of regio genaamd 'U*' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het sterretje (*) geen jokerteken is in ANSI-92 SQL.

  • Stel dat u een ANSI-92 SQL-query uitvoert in een database die is ingesteld op de ANSI-89-querymodus, zoals:

    SELECT * FROM Klanten WHERE Land Like 'U%'

    Deze query geeft al de klanten uit een land of regio genaamd 'U%' als resultaat en niet uit al de landen/regio's die beginnen met de letter 'U', omdat het procentteken (%) geen jokerteken is in ANSI-89 SQL.

WeergevenVoorbeeld van een query met een veldnaam die overeenkomt met de aliasnaam

Als een query een alias gebruikt die overeenkomt met de naam van de basiskolom en u vervolgens een berekend veld maakt waarin deze dubbelzinnige naam wordt gebruikt, heeft de query verschillende resultaten in beide querymodi. Zie bijvoorbeeld de volgende query:

SELECT Orders.[Order-id] AS Vrachtkosten, Orders.Vrachtkosten, [Vrachtkosten]*1.1 AS [Nieuwe vrachtkosten] FROM Orders;

Bij gebruik van ANSI-92 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met het veld Vrachtkosten en daarom wordt Vrachtkosten verhoogd met 10%. Bij gebruik van ANSI-89 SQL wordt de waarde voor Nieuwe vrachtkosten berekend met de alias voor Vrachtkosten en daarom wordt elke waarde voor Order-id verhoogd met 10%.

WeergevenProblemen voorkomen die worden veroorzaakt door het gebruik van verschillende ANSI SQL-querymodi in een database

In het algemeen moet u de volgende handelingen vermijden om te voorkomen dat er problemen optreden door het gebruik van query's die in verschillende ANSI SQL-querymodi zijn gemaakt:

  • Een Access-database die is ingesteld op de ANSI-92 SQL-querymodus van de 2002- of 2003-bestandsindeling naar de 2000- of 97-bestandsindeling converteren. De ANSI-92 SQL-querymodus wordt alleen ondersteund in de 2002 - 2003-bestandsindeling.
  • De ANSI SQL-querymodus voor de huidige database wijzigen nadat u een of meer query's hebt gemaakt. Als u dit doet, moet u de bestaande query's opnieuw testen om te controleren of deze nog werken en de gewenste resultaten leveren. Zo nodig moet u de query's herschrijven.
  • Query's die in een bepaalde ANSI SQL-querymodus zijn gemaakt importeren in een Access-database die op een andere modus is ingesteld of query's die met een bepaalde ANSI SQL-querymodus zijn gemaakt exporteren naar een Access-database die op een andere modus is ingesteld.
  • De ANSI SQL-querymodus in een bestaande toepassing wijzigen. Hierdoor kan de toepassing beschadigd raken zodat u deze opnieuw moet schrijven.

    In Access 2000 kon u de ANSI SQL-querymodus alleen via programmacode wijzigen en query's die met de ANSI-92-modus waren gemaakt, werden verborgen in het databasevenster (databasevenster: het venster dat verschijnt als u een Access-database of een Access-project opent. Het bevat snelkoppelingen voor het maken van nieuwe databaseobjecten en het openen van bestaande objecten.). In Access 2002 of hoger kunt u of een gebruiker de ANSI SQL-querymodus wijzigen via de gebruikersinterface en worden ANSI-92-query's niet meer verborgen in het databasevenster, zodat u onbedoelde of opzettelijke wijzigingen aan de ANSI SQL-querymodus van de toepassing kunt helpen voorkomen door de programmacode te beschermen. U kunt bovendien voorkomen dat de querymodus wordt gewijzigd via de gebruikersinterface van de toepassing.

  • Dubbelzinnige aliassen en kolomnamen gebruiken. Zorg ervoor dat aliassen en kolomnamen altijd uniek zijn in een SQL-instructie om verwarring te voorkomen.

advertentie