Zoeken in Formulier

Status
Niet open voor verdere reacties.

BasHobus

Gebruiker
Lid geworden
26 feb 2014
Berichten
29
Hallo,

Ik ben bezig met een database op te stellen en loop tegen een probleem aan, hopelijk kan iemand mij helpen

een korte beschrijving:

Ik heb verschillende tabellen gemaakt met als belangrijkste de stamgegevens, dit zijn er ongveer 10.000. Vanuit de tabellen heb ik enkel queries opgesteld met aanvullende gegevens. die hierin verwerkt zijn zodat ik makkelijker een formulier op kon stellen. Daarna heb ik enkele formulieren gemaakt waar Klantgegevens het uit te voeren formulier is.

Graag zou ik in dit formulier een zoekfunctie maken waarbij ik een gedeelte van de naam kan type en de gegevens in het zelfde formulier verschijnen.
Nu lukt het wel maar het moet nu specifiek. hiervoor gebruik ik de Macro ZoekenNaarRecord met de volgende Where functie: ="[Naam] =" & "'" & [Screen].[ActiveControl] & "'".
en heb ik nog een los veld wat zoekt op debiteuren via de zelfde Macro met de Where functie: ="[Debcode] = " & Str(Nz([Screen].[ActiveControl];0))

Mijn vraag is; Kunnen deze zoekfunctie binnen een zoekfunctie geplaatst worden en daarbij niet specifiek zodat je bijvoorbeeld alleen de voornaam er in kan zetten?

Als bijlage nog een printscreen van het formulier.
Access vraag.jpg
Bij voorbaat dank,

Bas
 
Mijn vraag is; Kunnen deze zoekfunctie binnen een zoekfunctie geplaatst worden en daarbij niet specifiek zodat je bijvoorbeeld alleen de voornaam er in kan zetten?
Je vraag blinkt niet uit door duidelijkheid, vrees ik. Want wat wil je nu? Een functie? In VBA en niet meer in een macro? En wat moet die functie doen?
 
Wat voor functie maakt mij niet uit, als hij maar begrijpbaar is.

In het formulier staan links de standaard gegevens die gehaald worden uit een Query. De zoekfunctie die er nu instaat zoekt vanuit het formulier in de querie op naam naar een Record.

Graag zou ik een Macro of VBA willen die zoekt op naam of debcode naar de betreffende klant in de query Qr_klantgegevenskop en deze in het formulier Klantgevens in de velden links weergeeft. Deze zijn gelinkt aan de zelfde Query.

Dit het liefst niet specifiek wat nu wel het geval is waardoor je precies het zelfde moet beginnen als in de Query vermeld staat. Bijv. Als ik zoek op ipod ik het record Apple Ipod krijg en niet hoef te beginnen met Apple.

Bas
 
Ik snap het gebruik van je termen nog niet; je hebt een formulier dat is gebaseerd op een query. Zover kom ik nog. Vervolgens zoek je met je keuzelijsten op je formulier en niet in je query. Althans: zo zou het moeten werken. Dus ik snap het zoeken in een aparte query niet helemaal. Je hebt nu 2 keuzelijsten gemaakt, die allebei werken. Een derde zoekveld erbij zoekt dan op een volgend veld. Je kunt niet een zoekactie maken die in alle velden zoekt, althans niet wat jij wilt. Dan moet je de standaard zoekfunctie gebruiken die je met <Ctrl>+<F> opent. Dan kun je aangeven dat je niet in het huidige veld wilt zoeken, maar in het hele record. En waar de zoekactie moet werken: hele veld, begin van veld of gedeelte van veld.
 
Ik ben opzoek naar een zoekfunctie waarbij ik de gegevens zoek uit een query, en weergeef in het formulier. Het liefst via een keuzelijst omdat enkele namen veel op elkaar lijken omdat het achternamen betreft.

nu gebruik ik de keuzelijst hierbij is de
rijbron: SELECT [Qr_KlantgegevensKOP].[Naam], [Qr_KlantgegevensKOP].[Plaats], [Qr_KlantgegevensKOP].[Debcode] FROM Qr_KlantgegevensKOP;
ingesloten Macro: ZoekenNaarRecord Eerst Where = ="[Naam] =" & "'" & [Screen].[ActiveControl] & "'".

Je kunt hier niet zoeken op de voornaam omdat ze allemaal beginnen met de achternaam voorop. Ik zou graag willen dat je niet het zelfde hoeft te typen als in de oorspronkelijke gegevens.
Ik zal een vereenvoudigde versie maken en deze nog posten.
 
Volgens mij doet jouw formulier dat niet; je plaatje laat record# 3390 van 9859 records zien. Wat jij beschrijft is een zoekformulier waarbij je in de keuzelijsten alle records ziet, er dan één selecteert en dat ene record dan in je formulier plaatst. Is een heel andere werkwijze dan alle records zien op je formulier, en een zoekfunctie gebruiken om naar een specifiek record te springen. Sowieso kan wat jij wilt niet op basis van een keuzelijst, omdat je daarmee de waarden uit één veld selecteert, en de gekozen waarde uit dat ene veld dus ook opzoekt in je formulier. Daarom heb je voor elk veld een aparte keuzelijst nodig, omdat je ook te maken hebt met verschillende soorten gegegens (tekst, getallen) die verschillend worden gefilterd. Je kunt een tekst niet zoeken met de instelling van een getalfilter. En omgekeerd.

Wél kun je, zoals ik al aangaf, de ingebouwde zoekfunctie gebruiken die door alle velden heen zoekt. Die kun je ook met een knop starten. Daarvan is dit de VBA code.

Code:
Private Sub cmdZoeken_Click()
On Error GoTo Foutje

    Screen.PreviousControl.SetFocus
    DoCmd.RunCommand acCmdFind
    Exit Sub

Foutje:
    MsgBox Err.Description
    
End Sub
Daar zal vast ook een macro variant voor zijn, maar ik ben allergisch voor macro's dus daar ga/kan ik je niet bij helpen :)
 
Eerste wat gelijk opvalt: waarom heb je de veldgegevens in de Koptekst gezet, en niet in de Detailsectie (waar ze thuishoren in mijn ogen)?
 
Ik heb de zoekknop er (gewoon met de wizard) bijgezet. Omdat je het 2007 format gebruikt, maakt Access dan een ingesloten macro aan, die overigens exact hetzelfde doet als mijn VBA code :)
 

Bijlagen

Omdat ik er een tabbesturingselement onder heb staan in het werkelijke bestand die allemaal weer gekoppeld worden aan de koptekst. Zo blijven deze gegevens zichtbaar.
 
Formulieren nemen geen plek in. En tabbladen al helemaal niet :) Als je een voorbeeldje post, dan zien we graag het complete plaatje. Dat er geen of weinig gegevens inzitten boeit dan niet, maar de functionaliteit zie ik wel graag compleet.
 
Dan kan ik nog steeds hetzelfde antwoord geven geloof ik, want je kunt zo'n zoekfunctie die overal werkt dus alleen maken via het standaard zoekvenster. En dat wordt dan een knop met een ingebouwde macro.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan