Om te beginnen is het geen goed idee om in tabellen "opzoekvelden" op te nemen zoals bijvoorbeeld het veld "Categorie" in de tabel "1 Financiën".
Ten eerste voer je normaliter nooit direct gegevens in in een tabel. Opzoekvelden zijn daarom in tabellen onnodig. Gegevens voer je in via formulieren en daar kan je ze onder de noemer keuzelijst-met-invoervak prima gebruiken.
Bovendien leiden ze in tabellen tot verwarring zoals bij jou ook het geval is. Feitelijk sla je in het veld "Categorie" in de tabel "1 Financiën" getallen op (de Id van de betreffende categorie). Dat zie je ook aan het veldtype van "Categorie", dat is numeriek. De kenmerken die je bij het veld "Categorie" onder het tabje "Opzoeken" invult zorgen ervoor dat je het nummer niet ziet, maar de bijbehorende tekst. In de tabel staat dus een 1 en je ziet "Boodschappen". Daarom zie je op het formulier ook de 1. Als je op het formulier een keuzelijst-met-invoervak met de juiste kenmerken had gemaakt, dan had je daar ook "Boodschappen" gezien.
In de tabel "2 Financiën" is het veld "Categorie" een tekstveld en sla je de tekst "Boodschappen" op. Wat je opslaat is wat je ziet. Je vervalt hier weer in je oude fout door niet de sleutel van "tblCategorie" op te nemen in de gerelateerde tabel.
Hoe een en ander aan te passen zodat de filterfunctie werkt is me even te veel werk. Ik kan de code die je met AI hebt gemaakt niet doorgronden.