zoeken in database lukt niet

Status
Niet open voor verdere reacties.
De reden dat je zoekformulier niet werkt is wel een logische. Althans: als ik een filtering probeer op Categorie, rolt er niks uit. Dat komt doordat je de keuzelijst hebt gekoppeld aan de tabel Categorie, waarin het eerste veld een numeriek veld is. In de query filter je op de Omschrijving. En dat gaat natuurlijk niet. Als je de keuzelijst zodanig aanpast dat hij alleen de omschrijving laat zien/gebruikt, kun je wel op de tekst filteren.
Overigens zou ik zelf de filtering nooit zo hard aan een formulier koppelen zoals jij hebt gedaan; ik bouw het filter liever op a.d.h.v. een zoekformulier, en pas dat dan toe op een qeury. Dat is wel iets ingewikkelder bouwen, maar uiteindelijk veel flexiber en betrouwbaarder.
 
ik ga er na kijken dank je wel.
Weet jij toevallig een goed boek waar filters goed beschreven wordt ik heb namelijk totaal geen kennis en wil het wel leren.
 
Hou de cursus in de gaten, zou ik zeggen ;) Filteren als specifiek onderwerp in boeken zou ik zo gauw niet weten; kijk in de inhoudsopgave van de veschillende boeken, en kijk of het boek je aan staat of niet. Er zijn, vind ik, niet zoveel slechte boeken meer; die zijn er in de loop van de jaren wel 'uitgefilterd'...
 
dan wacht ik de cursus nog wel ff af voor dat ik verder ga met het filteren.
 
We kunnen wel iets doen om je formuliertje werkend te krijgen ;) Je hebt nu een aantal criteria gemaakt in dezelfde regel. Dat betekent, dat al deze criteria tegelijk geldig moeten zijn. Je filtering daarvan is echter niet even bruikbaar, omdat je ook op getallen filtert. Weliswaar zie je dat niet, omdat je (zoals ik dus altijd ten zeerste afraad) keuzelijsten in de tabellen hebt gemaakt. In het voorbeeldje heb ik dat voor het veld Bron veranderd, zodat je in de tabel en de query nu de juiste (opgeslagen) waarden ziet, en kunt filteren op de tekst uit de tabel Bron. Zoals het dus hoort eigenlijk...
 

Bijlagen

  • Database1.rar
    84,6 KB · Weergaven: 33
Te weinig :D Bovendien verschillen daar de meningen nogal over ;)
 
ben wezen stoeien om de rest op de zelfde manier te zetten als bron maar opgesteld door wilt maar niet. Tips waar op te letten?
 
Ja; Om te beginnen: het veld [Opgesteld door] is nu een opzoeklijst op basis van de tabel Medewerker. Je slaat in een tekstveld daarmee een getal op, en dat is minder handig. Maak van dat veld een Numeriek tekstveld.
Verder: maak van je tekstveld [qOpgesteld_door1] een Keuzlijst met Invoervak, op basis van de tabel Medewerkers. Gebruik beide kolommen (Medewerker_Id en Medewerker) en verberg de eerste kolom. Maak de keuzelijst wel afhankelijk van de eerste kolom zodat je een getal matcht met een getal.
In de query moet het filterveld nu ook worden aangepast, want je kunt een getalveld niet filteren met een tekstwaarde. Dus dat wordt: IIf([Forms]![zoeken].[qOpgesteld_door1]="";Waar;[Opgesteld door]=[Forms]![zoeken].[qOpgesteld_door1]).
Nu zou het filter moeten werken.
 
nu wordt er een pop up getoond maar is het ook mogelijk dat ik het als gegevensblad op de form zelf zie?
 
Je hebt, voor zover ik kan zien, nog geen formulier gemaakt voor de uitkomst van de query. Op zich niet zo heel moeilijk; je maakt eerst een formulier met de wizard (variant Tabelweergave) en dat open je dan als je op de knop klikt. Je hoeft dan alleen (de naam van het) te openen object te veranderen in het formulier, omdat je nu de query niet meer opent. Dit bijvoorbeeld:
DoCmd.OpenForm "fBasis", acNormal, , , acFormReadOnly
 
Ik zou graag zoeken en resultaat op 1 form willen hebben tips>?
 
In dat geval kun je het resultaatformulier als subformulier op je zoekformulier plaatsen. Simpel slepen in de Ontwerpweergave....
 
Ik weet niet hoe je het nu hebt opgelost. Als je in je formulier verwijst naar het hoofdformulier, of het subformulier, dan kun je het wel aanpassen via de functie <Opbouwen>. Zoek de juiste filtervelden dan op en zet ze opnieuw in je filterstring.
 
heb de formulier nog niet in het zoeken gesleept en code is zoals jij het had aangegeven.
 
Dat kan kloppen, omdat je de code van de knop niet hebt aangepast, dus je opent nog steeds een nieuw formulier. Maar het formulier is al geopend op je zoekformulier, dus dat hoeft niet meer. Bovendien kun je een subformulier niet nog een keer openen. (kan overigens wel, maar ik wil het niet gecompliceerder maken dan het al is ;) )
Nu is de grap van een formulier (dat aan een tabel is gekoppeld) dat hij bij het openen de records laat zien die hij op dat moment mag laten zien. Als je op een later moment iets verandert aan de te tonen records, dan moet dat specifiek aan het formulier worden 'verteld', anders laat hij de records zien die bij het openen in de selectie zaten. Kortom: wat je moet doen is het formulier een commando geven om de records opnieuw in te lezen, gebaseerd op het gebruikte filter. Je zult merken, als je veel formulieren gaat maken, dat de volgende opdracht één van de vaker gebruikte commando's gaat zijn: de opdracht Requery. In jouw formulier ziet dat er dan zo uit:

Code:
    Me.fqBasis.Form.Requery

De code bestaat uit een aantal steekwoorden:

Me - Daarmee geef je aan dat je iets op het huidige object (het zoekformulier) gaat doen.
fqBasis - de naam van het formulier
Form - Access moet weten wat het object fqBasis is; in dit geval dus een formulier
Requery - de eigenlijke opdracht. Requery is dus: de query opnieuw uitvoeren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan