zoekscherm ontwerpen

Status
Niet open voor verdere reacties.

neharu

Gebruiker
Lid geworden
20 aug 2014
Berichten
12
Hallo,

Ik heb al heel wat antwoorden doorzocht op dit forum maar aangezien ik een beginner ben, zie ik door het bos de bomen niet meer.

Ik heb een beginnerscursus access gevolgd maar daar leer je niet echt iets van programmeren. Vaak zijn de gegeven antwoorden hier dan ook chinees voor mij :-( Ik heb dit programma ook niet op mijn computer thuis en kan tijdens de werkuren niet nog extra uren besteden aan het leren van de programmeertaal.

Opdracht:

database maken in access 2010 van alle materialen(boeken, brochures, tijdschriften, cd's,...) in kleine bib op mijn werk. Deze is bereikbaar voor de collega's van verschillende werkplaatsen via ons extranet.
Collega's die totaal geen kennis hebben van access, moeten enkel in een zoekformulier uitkomen waarbij ze een zoekterm kunnen invoeren die meteen de juiste records vindt op basis van verschillende velden en dan moet je kunnen doorklikken naar het gekozen record. Dit moeten ze dan kunnen reserveren en uitlenen.
Soort bib-programma in het klein dus.

Op basis van dit antwoord van Anne-Marie in dit forum ben ik vertrokken:

Daar komt de oplossing dan toch
Enkele jaren geleden heb ik een zoekscherm gemaakt zoals door jou bedoeld. Inmiddels pas ik dit principe toe in nagenoeg elke database. Probleem is dat ik geen voorbeeld bij de hand heb. Ik zal het trachten te beschrijven zodat je iig weet in welke richting je het moet zoeken. Ik beschrijf het als gebaseerd op 1 tabel maar als je dit principe onder de knie hebt kun je het toepassen op alle tabellen binnen je database. Ik ga er van uit dat je weet hoe je queries en formulieren moet maken en dat er een formulier is gebaseerd op de tabel [Fm tabel01]. Dan nu de uitleg:
1. Maak eerst een formulier en verwijder alle toeters en bellen (schuifbalken ed.). Noem het formulier bv [Fm zoekscherm].
2. Maak dan een onafhankelijk tekstveld en noem dit bv [zoekcriterium]. Met een labeltje kun je hier boven nog zetten: Geef zoekitem.
3. Maak een querie gebaseerd op de tabel en neem alle velden in deze querie op die in de tabel staan. Noem deze bv [Qtabel01]. Zet in deze querie bij criteria van de velden waarin je wilt dat gezocht wordt de verwijzing naar het veld zoekcriterium (Like”*”& [Forms![Fm zoekscherm]![zoekcriterium] &”*”). Dit kun je in meerdere velden doen als je het criteria maar in verschillende rijen vermeldt.
4. Maak in het [Fm zoekscherm] een onafhankelijk tekstveld aan ( 1 cm breed) en noem dit bv [aantalQtabel01]. Dit veld wordt gebruikt om nadat een zoekitem is gegeven het aantal hits in de tabel 01 weer te geven. Bij besturingselementbron van dit veld moet je iets vermelden van Dcount(“[Qtabel01]”,”volgnr”). Ik ga er daarbij van uit dat het veld volgnr uniek is.
5. Dan maak je net boven het veld [aantalQtabel01] een knop die het formulier opent dat gebaseerd is op de tabel 01. Bij het openen kun je ingeven dat je de querie [Qtabel01] als filtercriteria wilt gebruiken. (hierover zijn al antwoorden gegeven op deze site)
6. Als laatste maak je een knop net onder het veld [zoekcriterium]. Op de knop zet je bijvoorbeeld de tekst ZOEKEN. Bij klikken vermelden Me.aantalQtabel01.requery.

Als je nu een zoekitem ingeeft en op de knop ZOEKEN klikt krijg je eerst het aantal hits te zien en vervolgens kun je deze records gefilterd bekijken. Je kunt het nog verfraaien door bij hits (aantal >0) de achtergrond kleur van het veld [aantalQtabel01] te veranderen en bij 0 hits de achtergrondkleur gelijk te maken aan de kleur van het formulier. Dit principe kun je toepassen op alle tabellen. Vergeet dan deze velden niet een requerie mee te geven achter de knop ZOEKEN. Suc6
Anne-Marie

8 september 2000
Nog even nagekeken
Ik heb nog even eea nagekeken. In mijn antwoord onder:
4. Moet zijn DCount("[volgnr]","Qtabel01").
5. Bij het openen van het formulier zet je DoCmd.OpenForm stDocname,,"Qtabel01", stLinkCriteria. Veel plezier.



Ik heb dus een tabel "materialen". Een querie "Qtabel01" op basis van deze tabel. Er moet worden gezocht in volgende kolommen van de querie: auteur, titel, categorie, hoofdthema, tref1, tref2, tref3, tref4 en tref5.
Bijvoorbeeld: men tikt het woord "verslaving" in en de zoekfunctie moet in al deze velden zoeken naar dit woord. Liefst ook op een deel van het te zoeken woord.

Maar de codes achter de knop "openen" en de knop "zoeken" geven niet het juiste resultaat.
Ik loop dus vast in punt 5 en 6 van de bovenstaande uitleg.
Kan iemand mij hier helpen met de juiste code die er moet staan achter deze knoppen?

Ps: ik kan hier geen voorbeelden openen met ".rar" wel met ".zip"
 
De beschreven werkwijze is weliswaar in zijn functionaliteit correct, maar nogal omslachtig. Kan een heel stuk slimmer en vooral gebruiksvriendelijker. Wat zou ik derhalve doen?
1. Baseer een doorlopend formulier op de tabel 'Materialen'. Dit formulier laat dan al gelijk alle beschikbare boeken zien (100% score dus).
2. Maak in de koptekst van dit formulier een aantal tekstvakken/keuzelijsten (afhankelijk van de waarden in de tabel) waarin je de zoekwaarden tikt/selecteert.
3. Gebruik deze tekstvakken/keuzelijsten om de lijst te filteren. Dit kan dynamisch (dus letter typen=filter toepassen).
4. Maak een actie die bij het klikken op een gevonden record het formulier met dat record opent.

Eventueel kun je i.p.v. een doorlopend formulier ook een normale Keuzelijst gebruiken; de filtertechniek blijft daarvoor hetzelfde. Het werken met een 'blind' formulier waarbij je steeds op een knop moet klikken om te zien of er resultaat is, vind ik dus erg klantonvriendelijk. Mijn filtermethode heb ik uitgebreid beschreven in de Access cursus. Met voorbeelden :).
 
Hallo,

Betekent dat dat gebruikers dan ook zelf toevoegingen kunnen doen in de tabellen? Want dat mag absoluut niet de bedoeling zijn. Ze mogen enkel een zoekfunctie hebben.

Ik ben hoofdstuk 18 gaan doorpluizen maar zoals ik al zei, ik ken niets van de programmatietaal. :-(
Ik ben ook maar twee maal per week op deze werkplek en zou tegen 12 september een werkbaar iets moeten kunnen voorleggen.
Zijn die voorbeelden in hoofdstuk 18 ook in een uitgewerkt voorbeeld van de duikclub opgenomen dat ik zou kunnen aanpassen? ik kan dit nergens terugvinden.
Graag in zip-file aub. Of is er iemand die dit voor mij zou kunnen op basis van mijn database die weliswaar zeer eenvoudig is?

Hopelijk kan iemand mij snel helpen want mijn tijd is beperkt.
 
Laatst bewerkt:
Waarom 'citeer' je het hele bericht? Quooten doe je alleen als je stukken uit een voorgaand bericht nodig hebt in je eigen bericht. Een compleet bericht overnemen valt daar natuurlijk niet onder. Nog afgezien van het feit dat mijn berichtje er gewoon boven staat in een uiterst leesbaar lettertype. Dus graag de quoot verwijderen! Een antwoord kun je gelijk in het tekstvak typen, daar heb je de quote knop niet voor nodig ;)
Wat betreft je vraag: een formulier kent verschillende statussen die je bij de Eigenschappen kunt terugvinden. Daaronder valt ook <Toevoegingen toestaan>, <Bewerken toestaan> en <Verwijderen toestaan>. Zet je die eigenschappen op <Nee>, dan kunnen gebruikers niks veranderen aan de gegevens.
Vervelend voor je dat je een deadline hebt volgende week, en dat je maar een paar dagen de tijd hebt; ik vermoed dat je het op deze manier niet gaat halen. Want zonder inzicht in VBA is het bijna niet te doen. Het voorbeeld zal ik vanavond posten in de bij de cursus horende draad in het forum.
 
bijlage database

Bekijk bijlage 2014 digitale bib upload.zip

In bijlage een deel van de database. Om ze in bijlage te kunnen zetten qua grootte heb ik het vorige "niet werkende" zoekscherm en een aantal andere formulieren als uitleningen en reservaties weggelaten. Ook heb ik slechts enkele voorbeelden opgenomen in de tabel.

Er moet worden gezocht in volgende kolommen van de querie: auteur, titel, categorie, hoofdthema, tref1, tref2, tref3, tref4 en tref5.
Bijvoorbeeld: men tikt het woord "verslaving" in en de zoekfunctie moet in al deze velden zoeken naar dit woord. Liefst ook op een deel van het te zoeken woord.

Ik weet niet of dit veel tijd/werk is voor iemand met inzicht in VBA om zo'n zoekformulier te maken dat OctaFish hierboven omschrijft... maar als iemand zich geroepen voelt om me uit de nood te helpen hiermee... graag. Dan kan ik het zelf misschien ook toepassen op andere formulieren.

Hoopvol ... :-)
 
Laatst bewerkt:
Ik zie geen zoekschermen, en eigenlijk ben ik in de 'niet werkende' formulieren ook wel geïnteresseerd. Of is wat je aan het maken nu nét datgene wat je hebt weggelaten?
Een groter probleem is dat de db niet werkt omdat de tabellen er niet zijn. Je kunt dus niks doen. We hebben voor een idee maar weinig nodig, behalve uiteraard het formulier dat je niet aan de praat krijgt, en een paar records om mee te testen. Dat hoeven er maar een paar te zijn met dummy data. Stuk of 25, en je maakt ons al heel gelukkig. Mits er tenminste fatsoenlijk mee te werken is :).
 
Mijn zoekformulier heeft per kolom een zoekveld.
Eenvoudiger. Niet de netste oplossing (alles met 1 veld kunnen zoeken)

Code:
Private Sub knopZoek_Click()
On Error GoTo Err_knopZoek_Click

    Dim stDocName As String
    Dim stLinkCriteria As String
    
    Dim selectie As String
    If txtAchternaam.Value <> "" Then
        selectie = "Achternaam LIKE '*" & txtAchternaam.Value & "*'"
    End If
    
    Dim gebdatstr As String
    gebdatstr = txtGebjaar & "-" & txtGebmaand & "-" & txtGebdag
    
    If IsDate(gebdatstr) Then
        If selectie <> "" Then: selectie = selectie & " AND "
        selectie = selectie & "Geboortejaar = #" + gebdatstr + "#"
    End If
    
    If txtPersnr.Value <> "" Then
        If IsNumeric(txtPersnr.Value) Then
            selectie = "Personeelsnummer LIKE '*" & txtPersnr.Value & "*'"
        End If
    End If
    
    stDocName = "Formuliernaam"
    DoCmd.OpenForm stDocName, , , selectie

Exit_knopZoek_Click:
    Exit Sub

Err_knopZoek_Click:
    MsgBox Err.Description
    Resume Exit_knopZoek_Click
    
End Sub

Wellicht dat dit voor jou kan werken?
 
Laatst bewerkt:
Aan OctaFish

Kan dit te maken hebben met het verdelen van de database in een front en backend dat je de tabellen niet ziet? Hoe los ik dit op?

Het zoekscherm dat ik aan het maken was, was volgens de methode die je nogal omslachtig vond zoals hierboven beschreven volgens de methode van Anne-Marie. daarmee had ik deze weggelaten.

Als ik de totale database zip kom ik nog boven het toegelaten max van 100kb :-(
 
Laatst bewerkt:
nieuwe poging inladen database

Bekijk bijlage 2014 digitale bib backup.zip

Hallo OctaFish,

Kan je in deze database wel aan de tabellen?
Hier is de layout van het formulier materialen wel nog niet aangepast. Dus ook nog niet erg netjes.

In het zoekscherm heb ik al vanalles geprobeerd dus ik veronderstel dat daar ondertussen heel wat fouten inzitten.

Ik hoop dat je hier wat mee kan?
 
Laatst bewerkt:
Die doet 't! Ik kijk er vanavond wel even naar als ik tijd heb, al heb ik een deadline voor de nieuwsbrief.
 
Bedankt maomanna om te reageren maar ik ben zelf niet thuis in de programmatietaal.
Ik vrees dat me dit zo niet lukt.

Aan OctaFish: ik wou even horen of je al tijd gevonden had om er even naar te kijken? Ik kan namelijk enkel op dinsdag en donderdag in mijn programma op het werk.

Alvast bedankt.
 
Nog niet naar kunnen kijken, maar ik zal dat vandaag nog wel doen.
 
Dank je wel voor de moeite... ik kijk uit naar je antwoord :-)
 
Je query is een beetje vreemd in elkaar gezet, want het lijkt wel alsof je een bestaande filtering hebt aangepast. Zo gebruik je in alle filters het = teken en Like, en dat kan helemaal niet. Ofwel filter je op =, ofwel filter je op LIKE. Deze query werkt:
Code:
SELECT NUMMER, AUTEUR, TITEL, TYPE, ISBN, UITGEVER, PUB_JAAR, AANTALPAGS, CATEGORIE, HOOFDTHEMA, 
[TREF 1], [TREF 2], [TREF 3], [TREF 4], [TREF 5], HYPERLINK
FROM MATERIALEN
WHERE ((AUTEUR Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR (TITEL Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR (HOOFDTHEMA Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR ([TREF 1] Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR ([TREF 2] Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR ([TREF 3] Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR ([TREF 4] Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*") 
OR ([TREF 5] Like "*" & [Formulieren]![Fm zoekscherm]![zoekcriterium] & "*")
);
Dat het veel handiger is om een filter op te bouwen met VBA is voor programmeurs een uitgemaakte zaak, maar aangezien je een beginner bent en die beginselen niet beheerst, zou ik het eerst maar bij de standaardoplossingen houden.
 
Ok voor de query. Heb ik aangepast. Maar waarom vraagt hij dan altijd parameters? Hoe kan je dat vermijden?


En hoe zit het dan met het zoekscherm?
 
Laatst bewerkt:
Hij vraagt alleen parameters als het formulier niet geopend is. In dat geval kan de query niet weten wat er gevraagd word, en elk criterium wordt dan gezien als parameter. Dus altijd vanuit een geopend formulier de query draaien. Ook dat is een reden waarom ik deze werkwijze eigenlijk nooit gebruik, en de criteria op basis van VBA maak. Maar dat staat allemaal in de cursus uitgelegd :).
 
Ik ben op zoek naar het voorbeeld dat bij hoofdstuk 18 hoort, dat je zou posten? Ik kan het niet terugvinden. Kan je me even op weg helpen waar het staat?
 
Iemand die me verder kan helpen met bovenstaande vragen aub??
 
Ik heb het voorbeeld in de bij de cursus horende draad (de eerste in het forum) gezet. Hoop dat je er zo uit komt :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan