Circulair reference

  • Onderwerp starter Onderwerp starter RdS
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RdS

Gebruiker
Lid geworden
15 feb 2007
Berichten
383
Goedendag,

Ik krijg een melding van een Circulair reference waar ik niet uitkom.

TBL_FirRules bevat data waar ik wat mee wil doen.

In query "query_tabl_FirRules" wil ik namelijk het volgende.

Wanneer op een regel de Fired ScreenRule "RAC" staat, moet het getal in een nieuwe kolom worden geplaatst. Kolomnaam moet RAC zijn.

Het resultaat moet zijn dat er per uniek customer nr (of id) er maar 1 getal mag komen hoe vaak RAC voorkomt.
En voor ik het vergeet, het moet ook per maand opgeteld worden.




Wie kan mij een handje helpen?


edit: Aangezien ik hier geen Access bestand geupload krijg heb ik het maar even in Excel gezet.Bekijk bijlage Circulair Reference.xlsx
 
Je maakt een paar denkfouten. Op zich wel mooi, want dan kun je die straks met één vraag gelijk afstrepen; die hoef je straks niet meer te maken ;)

Om te beginnen: je geeft al aan dat je een waarde wilt veranderen in het veld [RAC]. Om dat te doen, heb je een Bijwerkquery nodig, geen selectiequery.

Foutje twee: als je een vergelijking maakt in Access, doe je dat op basis van Waarden, niet op basis van een Veld. In feite doe je dat in Excel ook; in je formules verwijs je weliswaar naar een Cel, maar eigenlijk verwijs je naar de inhoud van die cel. Excel bekijkt ook maar één cel, niet de hele kolom. Je formule <[Fired Screening Rule]=[RAC]> werkt dan ook alleen maar, als in het veld [Fired Screening Rule] hetzelfde staat als in het veld [RAC]. In jouw geval kan dat absoluut niet, omdat het ene veld een tekstveld is, en het andere veld een Getalveld. De formule moet in Access dan ook luiden: <[Fired Screening Rule]="RAC">. Je verwijst dus naar een letterlijke inhoud.

Derde probleem: je gebruikt een Totalenfunctie (Sum) in een query die niet is gegroepeerd. Het resultaat daarvan is, dat elk record de berekening maakt over één rij: het eigen record. De functie Sum is dus overbodig. Het derde probleem is dus eigenlijk geen probleem, want de functie doet verder niks. Tenzij het resultaat een Totaal had moeten zijn natuurlijk, maar dat blijkt niet uit je Excel voorbeeld.

Voor de volledigheid nog een keer jouw formule:
Code:
RAC:IIf([TBL_FirRules]![Fired Screening Rule]=[RAC],Sum([TBL_FirRules]![Rows]),0)
En hier wat het moet worden:
Code:
UPDATE RAC SET RAC = IIf([Fired Screening Rule]="RAC",[Rows],0);
 
Aha, dus in het " " zat de fout.

Maar kan je nog eens het bijwerk query gedeelte uitleggen ??

Het is toch gewoon een normale if (zoals in excel).
 
Niet als je de nieuwe waarden wilt opslaan in de tabel; dan moet je een Bijwerkquey gebruiken. De vraag is of je dt overigens nodig hebt; in een database is het niet gebruikelijk om gegevens die herleid kunnen worden uit andere gegevens, op te slaan in een tabel. (een onderwerp dat ik in de volgende access cursus behandel ;) )
 
Het probleem zit hem erin dat de waarde "Rac" en "Rep" in dezelfde kolom voorkomen.
In een andere query wil ik deze optellen en doordat ze in dezelfde kolom voorkomen krijg ik 2 regels per klant-id. Dat is nu juist iets wat ik niet wil.
 
Ik heb eerst deze functie ervan gemaakt.

RAC: IIf([TBL_FirRules]![Fired Screening Rule]="RAC",Sum([TBL_FirRules]![Rows]),0)

Toen werkte het niet en kreeg ik de foutmelding:
You tried to execute a query that does not include the specified expression xxx as part of an aggregate function

Na "Sum" uit de functie gehaald te hebben doet ie precies wat ik wil !

Eindresultaat:
RAC: IIf([TBL_FirRules]![Fired Screening Rule]="RAC",([TBL_FirRules]![Rows]),0)


Bedankt voor de hulp Octafish !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan