Fout 3071 bij autonummering

Status
Niet open voor verdere reacties.

Cynneke

Gebruiker
Lid geworden
23 jun 2010
Berichten
14
Hallo allen,

In mijn nieuwe database heb ik op verschillende formulieren aangepast, echter 1 ervan geeft nu fout 3071:

Deze expressie is niet correct getypt of te complex voor evaluatie. Een numerieke expressie kan bijvoorbeeld te veel samengestelde elementen bevatten. Probeer de expressie te vereenvoudigen door verschillende delen van de expressie toe te wijzen aan variabelen. (Fout 3071)

Deze fout krijg ik op het moment dat ik het formulier wil openen. Ik ben er inmiddels achter dat het aan het autonummering veld ligt. Zodra ik deze verwijder of er gegevenstype tekst van maak verdwijnt de foutcode. Echter heb ik op dit formulier wel autonumming (en de primaire sleutel) nodig. Ik heb alle relaties verwijderd, diverse keren het veld/regel verwijderd en opnieuw ingezet etc maar hij blijft het doen. Bij alle andere formulieren blijft hij het na de aanpassing (velden aanpassen van tekst naar opzoeken) wel gewoon doen. In de rest van de tabel staan alle velden als gegevenstype tekst trouwens.

Hoe kan ik dit oplossen?
 
Ik ben er ook nu achter dat het komt doordat ik op een ander formulier een opzoekveld heb gemaakt:

Even voor het gemak: Ik gaat over 3 formulieren; "Relaties" waar ik vervolgens "Contactpersonen" aan koppel. Bij de contactpersonen kan ik dan vervolgens via opzoeken de relatie eraan hangen. Aan de "Contactpersonen" koppel ik vervolgens het formulier "Afspraken". Bij de afspraken kan ik dan vervolgens met opzoeken de contactpersoon eraan hangen.

De foutmelding kwam bij het formulier "Contactpersonen". Nu ik het opzoekveld contactpersoon in het formulier "Afspraken" heb verwijderd krijg ik de foutmelding niet meer bij het formulier "Contactpersonen".

Echter heb ik ook een formulier "Relaties" waar ik deze foutmelding niet krijg terwijl ik hiervan ook een veld opzoeken heb in het formulier "Contactpersonen".

Hoe kan ik toch de opzoekvelden maken en geen foutmelding krijgen?
 
Hoe zijn de tabellen aan elkaar gekoppeld?
 
Via relaties aan elkaar gekoppeld. Ze zijn door het opzoekveld "ContactpersoonID" bij contactpersonen en afspraken aan elkaar gekoppeld nu. Ditzelfde geldt voor "RelatieID"; dit is in de tabel relaties een autonummering en bij de tabel contactpersonen een opzoekveld zodat ik automatisch een lijst van de relaties te zien krijg.

Snap je het nog? Ik hoop dat ik het een beetje duidelijk uitleg.
 
Ik zou persoonlijk geen opzoekvelden maken voor tabellen; nergens voor nodig. Opzoeklijsten zet je beter op je formulieren. Op die manier kun je in de tabel altijd controleren of de goede waarden worden opgeslagen; bij keuzelijsten zie je die nooit meer.
Maar als ik het lees, zouden de relaties wel moeten werken. Dus daar ligt het probleem niet. Weet je zeker dat in de gerelateerde tabellen geen waarden staan die je niet in de brontabellen hebt staan?
 
De opzoekvelden staan ook in de formulieren en ik kan alleen gegevens selecteren die in brontabellen staan. Dus dat zou geen probleem moeten zijn.
 
Toch nog een vraagje over de relaties: heb je tussen alle tabellen een één-op-veel relatie gelegd, of krijg je als je <Referentiële integriteit afdwingen> aanvinkt ook een foutmelding bij een of meer tabellen?
 
Ik heb tussen alle tabellen inderdaad een een-op-veel relatie (tabellen waarvoor dat niet was heb ik een tabel bijgemaakt om dit wel te krijgen).

Ik kan inderdaad geen "Referentiële integriteit afdwingen", bij geen enkele relatie. Echter heb ik niet bij alle tabellen (en bijbehorende formulieren met opzoekvelden) problemen. Ik snap dus niet waarom hij het bij de ene wel doet en bij de andere niet.
 
De oorzaak van je probleem zou wel eens kunnen liggen in de verkeerd gelegde relaties. Het feit dat je geen Referentiële integriteit kunt afdwingen tussen de tabellen kan een probleem gaan vormen voor je db. Zonder de integriteitscheck hebben je relaties ook geen enkele zin, en kun je ze net zo goed weglaten. Dat je ze niet goed kunt maken, kan door twee oorzaken worden veroorzaakt: ofwel je Gegevenstypen zijn niet hetzelfde (je kunt geen Tekstveld kopppelen aan een Numeriek veld, en geen Numeriek veld Lange Integer aan een Numeriek veld Byte bijvoorbeeld), ofwel je hebt in de gerelateerde tabel records gemaakt waarvan geen record is terug te vinden in de hoofdtabel (bijvoorbeeld in de tabel Facturen een Klantnummer 123, waar je in de tabel Klanten geen Klantnummer 123 hebt).

Op een formulier maak je keuzelijsten op basis van tabellen, maar deze keuzelijsten hebben in beginsel geen relatie met de waarden in je onderliggende tabel. Als de relaties in de onderliggende bron van het formulier niet deugen, mag je elke waarde uit de keuzelijst opslaan in die bron, ongeacht dus of de te bewaren waarde wel klopt. Kortom: de fout in je formulier is niet op te lossen als je niet eerst de relaties controleert, en de gegevens dus aanpast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan