Opgelost Filteren in database

Dit topic is als opgelost gemarkeerd

JacobCats

Gebruiker
Lid geworden
13 jun 2014
Berichten
130
Goede middag,

Ik heb een database met daaraan een filter op maker/bron. Hier krijg is een voor een alle door de maker gemaakte schilderijen te zien
Ik zou nog een tweede filter willen maken die filtert op basis van categorie (los van de maker).
Na eindeloos proberen o.a. door kopiëren bestaand filter en wijzigen van de variabelen hierin is mij dit niet gelukt.
Wie kan mij hiermee verder helpen?
Ik heb hiervoor een kleine testdatabase toegevoegd met bijbehorend schilderijbestand
Bij voorbaat dank voor de moeite

Jacob
 

Bijlagen

  • Test categorie.zip
    203,4 KB · Weergaven: 2
  • AFNS_01.zip
    783,4 KB · Weergaven: 2
Ik snap niet helemaal waarom je een keuzelijst gebruikt voor de tweede filtering, misschien omdat je meerdere opties tegelijk wilt selecteren? Als ik er een 'gewone' keuzelijs met invoervak van maak, werkt het prima. Wil je meerdere waarden kunnen selecteren, dan moet de insteek (keuzelijst dus) inderdaad anders.
 
Wat ik probeer te bereiken met het filter Categorie is dat ik hierop apart kan filteren los van de maker zodat ik dan bijvoorbeeld alleen de Fauna te zien krijg. Bij de filter “filter op naam maker werkt het wel
Als ik er een keuzelijst met invoervak van maak dan wordt er niets geselecteerd en krijg ik nog alle fotos te zien?”i.p.v. alleen b.v. Fauna

Wat doe ik niet goed?
En hoe kan ik dit aanpassen
Aangepast dbase bijgevoegd
 

Bijlagen

  • Test categorie01.zip
    149,1 KB · Weergaven: 1
Ik heb jouw database zelf al aangepast, dus die stuur ik hierbij terug. Daarbij een keuzelijst met invoervak voor Categorie, en een keuzelijst met meervoudige selectie voor Categorie. Kun je kiezen :).
 

Bijlagen

  • Test categorie.zip
    153,5 KB · Weergaven: 5
Ik heb er nog een aardigheidje aan toegevoegd: als je nu een categorie selecteert, krijg je alleen schilders te zien die in die categorie )of categorieën) werkzaam zijn.
 

Bijlagen

  • Test categorie.zip
    196,1 KB · Weergaven: 5
Hoe doe ik dat?
In eerste instantie wil ik je hartelijk danken voor je support.
In het eerste ontvangen bestand heb ik (voorlopig) de derde filter optie verwijderd. De 2 overige filter opties werken zoals bedoeld werken.
Wat ik eerst probeer te doen is de filteroptie in mijn originele(grote) database te zetten. Maar helaas ik krijg het niet aan de praat.
Wat heb ik zoal geprobeerd:

Formulier geopend in ontwerpfase
Keuzelijst met invoerlijst ingevoerd in koptekst formulier ?
De waarden voor de keuzelijst ingevuld uit Tabel: Categorie veld Categorie
Voltooien

Wellicht tblCategorie aan Relaties koppelen?
TblCategorie CategorieID gekoppeld aan Tbl Gemaakt Categorie
Gedaan

De knopnaam gewijzigd van keuzeknop 67 in cboFilteren01
Uit ontvangen bestand de programmacode weergeven aangeklikt

"Private Sub cboFilteren01_Click()
With Me
If Not .cboFilteren01.Value = "" Then
sFilter = "[CategorieID] = " & Me.cboFilteren01.Value
.Filter = sFilter
.FilterOn = True
Else
sFilter = ""
.Filter = ""
.FilterOn = False
End If
End With
strSQL = "SELECT DISTINCT Bron.BronId, Bron.Bron FROM Bron INNER JOIN Gemaakt ON Bron.BronID = Gemaakt.BronID " & IIf(sFilter = "", "", "WHERE " & sFilter) & " ORDER BY Bron.Bron;"
With Me
.cboFilteren.RowSource = strSQL
.Requery
End With
End Sub"

Geplakt in mijn originele(grote) database.
Helaas het werkt voor geen meter.
Ik kom er niet uit

I am learning by doing

Wat doe ik verkeerd en hoe moet het wel.:mad:
 
Ik kan, zonder de db te zien, uiteraard niet bepalen wat er fout kan gaan. In de demo’s werkt het, dus ik vermoed dat het toch ergens in de naamgeving van objecten of velden ligt. De enige tip Diemen je kan geven nu: zet de variabele strSQL na het aanmaken in een InputBox, en kopieer daaruit de gegenereerde string. Plak die vervolgens in een nieuwe query om te controleren of de SQL werkt. Dan weet je weer wat meer, en dat het dus niet aan de query ligt.
 
Ik heb de instellingen (zover ik kan zien) exact overgenomen uit het van OctaFish ontvangen bestand
Ondanks herhaaldijk proberen krijg ik de filter categorie in mijn bestand (welk ik meestuur) niet aan de praat.
Er verschijnt een bericht dat ik de parameter CategorieID moet opgeven.
Ik begrijp alleen niet waar de fout zit.
 

Bijlagen

  • AFNS_01.zip
    1 MB · Weergaven: 3
  • Test studie.zip
    172,7 KB · Weergaven: 3
Ik kijk er morgen wel even naar. De fout duidt er op dat er een verkeerde verwijzing is. Die moet te vinden zijn :).
 
Het probleem' is simpel op te lossen, als je naar de velden in de tabel [Gemaakt] kijkt. Daar heb je het veld 'Categorie' staan, waar dus twee 'fouten' in zitten.

De eerste: het veld waarop je filtert heet [CategorieID], niet [Categorie]. Dus één van de twee zal moeten wijken qua naam.
De tweede (iets grotere) fout: Categorie heb je gedefinieerd als Tekst (en de naamgeving duidt daar ook op), maar je slaat CategorieID's op uit de tabel Categorie, en dat veld is numeriek. Het is bepaald onverstandig om een numeriek veld op te slaan in een tekstveld. Nog afgezien van het feit dat je deze twee tabellen dus nooit meer kan koppelen op dit (toch vrij logische) veld.
Daarnaast maak/gebruik je een filter dat is gebaseerd op getallen (logisch; je krijgt ook getallen binnen) en niet op tekst.

Kortom: de oplossing is heel simpel: verander de naam "Categorie" in "CategorieID", en maak dat veld numeriek. Dan zul je zien dat het filter weer werkt.
 
Helaas,

Ik heb de tabel gemaakt aangepast zoals je aangaf (zie schermprint)

Maar nu. Het filteren werkt (nog) niet
Ik heb een keuzelijst met invoerveld gemaakt.
de waarden opgehaald uit de tabel Categorie, veld Categorie
maar nu krijg ik helemaal niets meer te zien waarop ik kan filteren.
Waar zit mijn denkfout en hoe los ik het op
 
en nu het schermprintje
 

Bijlagen

  • Schermprint.jpg
    Schermprint.jpg
    74,8 KB · Weergaven: 3
Ik heb een keuzelijst met invoerveld gemaakt. de waarden opgehaald uit de tabel Categorie, veld Categorie
Ik snap niet helemaal wat je aan het doen bent: waarom maak je een nieuwe keuzelijst met invoervak? De oude was toch prima? Eén deel van de oplossing heb je correct gedaan (het veld in de tabel [Gemaakt] aangepast) maar wat ik nu lees, kan natuurlijk niet. Uit de tabel Categorie moet je altijd het veld CategorieID gebruiken, nooit Categorie. Dat is het tekstveld met de omschrijving, die je (uiteraard) wél in de keuzelijst laat zien om te kunnen kiezen. Maar het filteren doe je op CategorieID. En dat is een numeriek veld.
 
Er is niks mis met de analyse van OctaFish. Ik heb de aanpassingen ook gedaan en die werken gewoon. Ik heb voor de volledigheidde relaties aangepast/gelegd.
 

Bijlagen

  • Test studie PJ.zip
    151 KB · Weergaven: 1
Dat had ik al gedaan, dus dat lijkt mij dubbelop en overbodig. Relaties met opzoektabellen zijn overbodig (immers: alles wat je via een keuzelijst in een opzoektabel opzoekt, bestáát per definitie ook in die tabel) maar zijn niet verboden. Zelf doe ik dat dus (om de door mij aangedragen reden) meestal niet.

Maar goed, laten we even afwachten wat TS meldt. Ik vermoed dus dat hij heeft gedaan wat ik heb beschreven. En dan helpt een nieuw voorbeeldje echt niet :). Desalnietteplus, voorbeeldjes zijn altijd prima. Dus hier mijn versie.
 

Bijlagen

  • Test studie.zip
    172,7 KB · Weergaven: 0
alles wat je via een keuzelijst in een opzoektabel opzoekt, bestáát per definitie ook in die tabel
Totdat je het uit de opzoektabel verwijdert.......
 
Nou dát noem ik nog eens een open deur intrappen.... Zullen we overbodige en niet ter zake doende opmerkingen buiten het beantwoorden van een vraag laten? Ik word echt héél moe van het scrollen door nutteloze berichten op HelpMij de laatste tijd.
 
Bij deze wil ik jou eerst hartelijk danken voor de moeite die je neemt om mij op weg te helpen in het voor mij toch wel complexe programma Access.
Het filteren lukt mij nog steeds niet om in te voeren in mijn originele database.
Deze database bevat ruim 600 schilderijen (catalogus)
De aanpassingen (aanpassingen van de velden) zoals jij hebt aangeven heb ik ook doorgevoerd in deze database.
De velden in de tabel Bron en Categorie staan op …IDvelden autonummering. Het andere veld op korte tekst.
De ID-velden in de tabel gemaakt staan op autonummering en numeriek.
Ik probeer het filter die jij gemaakt heb over te zetten naar mijn originele database door de programmacode uit het bestand “Test studie PJ” over te zetten naar mijn “oefenbestand filteren”
Het filteren op naam werkt prima.
Het aanbrengen van het filteren op categorie is een crime. Het lukt niet.
Ik probeer het onder de knie te krijgen maar ik denk dat ik het maken van de knop filteren maar niet onder de knie krijg.
Om nu alles opnieuw in te brengen in het van jouw ontvangen bestand is een optie maar zeker niet de handigste en zeer tijdrovend.
Zou nog eens naar mijn nu genoemd “oefenbestand” willen kijken waar het mis gaat en mij willen helpen hoe dit werkend te krijgen.
Het bestand en fotobase sluit ik nogmaals bij.










 

Bijlagen

  • AFNS_01.zip
    1 MB · Weergaven: 1
  • Oefenbestand filteren.zip
    179,9 KB · Weergaven: 3
Ook nu is het probleem weer simpel op te lossen, en verklaarbaar. Je hebt blijkbaar een nieuwe keuzelijst gemaakt op basis van de tabel Categorie. Standaard krijgt een nieuwe keuzelijst de naam Keuzelijst### (in jouw geval Keuzelijst103). Daar hangt standaard geen code aan. Die code stond nog bij jou in de (verdwenen !?) keuzelijst die ik er in had gezet. Zonder code geen werkende keuzelijst :). Kwestie dus van de code verplaatsen naar de nieuwe keuzelijst en (dat eerst) de keuzelijst een passende naam geven. Zoals in de bijgeleverde db is gebeurd.
 

Bijlagen

  • Oefenbestand filteren.zip
    150,2 KB · Weergaven: 3
Ik heb het bestand aangepast.

De reden dat het filteren op categorie niet werkt is eigenlijk heel simpel. De keuzelijst heet Keuzelijst103 en er hangt geen code achter. Er zijn wel codes voor cboFilteren01_Click en cboFilteren02_Click maar die worden dus nooit aangeroepen. Dit is precies de reden waarom je zinvolle namen moet geven aan je besturingselementen. Ik heb beide nu een herkenbare naam gegeven.
De laatste stukjes code in de codes achter beide keuzelijsten heb ik gedeactiveerd. Als je filtert heeft het geen zin om de rijbron van het formulier aan te passen.
De gebeurtenissen die verwijzen naar niet (meer) bestaande besturingselementen heb ik weggehaald.

Nog een paar kleine andere aanpassingen die ik gedaan heb:

Het veld naam heb ik verwijderd van het formulier. Dit komt niet voor in de tabel Gemaakt.
Bij het veld BronID op het formulier heb ik de Rijbron vereenvoudigd; je hebt geen query op meerdere tabellen nodig.
Op het formulier heb ik de categorie (bij de Details) toegevoegd. Dat ontbrak nog.

De relaties tussen de tabellen heb ik gelegd.
 

Bijlagen

  • Oefenbestand filteren PJ.zip
    192 KB · Weergaven: 1
Terug
Bovenaan Onderaan