Fout "Beperkingen konden niet worden ingeschakeld. Een of meer rijen bevatten waarden die in strijd zijn met de beperkingen..."

0000003278     -      08-03-2025

Deze foutmelding "Beperkingen konden niet worden ingeschakeld. Een of meer rijen bevatten waarden die in strijd zijn met de beperkingen met betrekking tot niet-null waarden, unieke waarden of afwijkende sleutels." kan voorkomen in aangepaste rasters of in rapporten voor vensters.

Op deze punten in het programma haalt Mercator de gevraagde gegevens eruit door te vragen om het databaseschema op te nemen. Hierdoor kan Mercator de definities van de tekenkolommen kennen - char(x) - en de standaardkolombreedte in het raster afleiden uit x. Dit schema bevat ook de definitie van primaire sleutels.

Om dit probleem te omzeilen, is het meestal voldoende om de query iets aan te passen.

Deze query geeft bijvoorbeeld deze foutmelding:

select cli.c_id,cli.c_nom,pieds_v.journal,pieds_v.piece,stock.s_id,stock.s_modele,lignes_v.q,sum(dispo.dispo) as dispo
from lignes_v inner join pieds_v on (pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece) 
inner join cli on (pieds_v.id_cli=cli.c_id) 
inner join stock on (lignes_v.id_article=stock.s_id) 
inner join dispo on (dispo.id_stock=stock.s_id) 
where type=3
group by cli.c_id,cli.c_nom,pieds_v.journal,pieds_v.piece,stock.s_id,stock.s_modele,lignes_v.q

Dit komt omdat het schema vereist dat C_ID en S_ID uniek zijn, omdat ze de primaire sleutel van hun respectievelijke tabellen zijn. Deze query retourneert echter meerdere rijen met dezelfde C_ID en/of dezelfde S_ID.

Vervang in dit geval gewoon: (deze gelijkenissen worden gevonden in de joins)

  • cli.c_id door pieds_v.id_cli
  • stock.s_id door lignes_v.id_article
select pieds_v.id_cli,cli.c_nom,pieds_v.journal,pieds_v.piece,lignes_v.id_article,stock.s_modele,lignes_v.q,sum(dispo.dispo) as dispo
from lignes_v inner join pieds_v on (pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece) 
inner join cli on (pieds_v.id_cli=cli.c_id) 
inner join stock on (lignes_v.id_article=stock.s_id) 
inner join dispo on (dispo.id_stock=stock.s_id) 
where type=3
group by pieds_v.id_cli,cli.c_nom,pieds_v.journal,pieds_v.piece,lignes_v.id_article,stock.s_modele,lignes_v.q

 

Ander voorbeeld

Deze query retourneert meerdere identieke rijen.

select fou.f_id, fou.d_nom
    from FOU
    where exists(select * from CLI where (cli.C_ID_FOU=fou.F_ID) and (cli.C_ID_FOU=@C_ID_FOU))

In dit geval hoeft u alleen maar distinct toe te voegen.

select distinct fou.f_id, fou.d_nom
    from FOU
    where exists(select * from CLI where (cli.C_ID_FOU=fou.F_ID) and (cli.C_ID_FOU=@C_ID_FOU))



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)