Acces: parameter meegeven aan knop

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

  • magic_nl
  • Registratie: Augustus 2000
  • Laatst online: 31-08 08:53

magic_nl

Met wat magie komt alles goed

Topicstarter
Hoi,

Ik ben weer 'ns aan 't klooien in Acces... lang geleden..
Ik wil het volgende:
Ik heb 'n query apparatuur.. met daarin vanalles.
Ik wil 'n schakelformulier maken met knoppen.
Die knoppen moeten vervolgens een formulier openen op basis van de query apparatuur. Als ik dat nu doe krijg ik netjes een invoerveld waarin ik de parameter kan opgeven. Als ik dat doe werkt 't prima.
Nu wil ik die parameter aan de knop verbinden zeg maar, zodat ik 'm niet hoef in te typen, en meerdere knoppen hetzelfde formulier kan laten openen met 'n andere inhoud.

En ik heb nog iets...
Ik heb nog een formulier onderhoud. Als ik dat open vanuit 'n formulier wordt er gezocht naar het serienummer. Als die voorkomt worden alle records met dat nr. weergegeven. Als ie niet voorkomt wordt 't nr. nu niet ingevuld in 'n leeg record. Dat zou ik graag willen (Scheelt type-werk). Geen idee hoe ik dat doe.

Alvast bedankt.

Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties


  • Boss
  • Registratie: September 1999
  • Laatst online: 09:20

Boss

+1 Overgewaardeerd

Dat eerste gaat volgens mij niet kunnen. Wat je wel zou kunnen doen is met de code achter die knop de volledige sql van de querie 'apparatuur' aanpassen
code:
1
Currentdb.QueryDefs("apparatuur").SQL = "SELECT bla bla bla..."


Dat tweede:
Moet je ook weer met VBA aan de slag.
Je kan met DCOUNT() laten tellen of het serienummer wel of niet voorkomt. Is het resulaat 0, dan het formulier openen met een nieuw record. Is het resultaat >0, dan het formulier openen met het filter.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Als de hoeveelheid gegevens die op worden gehaald niet te gek groot zijn zou je eens naar het formulierfilter kunnen kijken. Dat lost imho beide problemen op.
Uit het hoofd:
open het formulier
with formulier
.filter= "[veld]=waarde"
.filteron=true
end with

Als je over een netwerk werkt kan het een probleem zijn dat je eerst alle records ophaalt en daarna pas filtert, m.a.w. het is in theorie trager.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Pyrowired
  • Registratie: Februari 2004
  • Laatst online: 05-01-2025
Je kan natuurlijk ook een functie imaken in een module die verschillende parameters aan kan.

function Open_form_met_variabele(VeldNaam, WaardeVanVeld)

dim StdDocName

StdDocName = FormBlaatBlaat

Docmd.openform StdDocName, acviewnormal,, "'"& Veldnaam &"' like/=/watdanook '"& WaardeVanVeld &"'"

end function

en dan hang je aan die knop als besturingselementbron =Open_form_met_variabele([veld];"waarde")

dan heb je een functie die je aan al die knoppen kan hangen met verschillende variabelen.

opm.: dit doe ik zo ffkes uit het hoofd zonder access voor hande maar t gaat om t idee.
Het is niet de bedoeling dat je in de query een parameter hebt staan, want die geef je mee met de functie.

edit:
typo

[ Voor 9% gewijzigd door Pyrowired op 23-04-2004 22:34 ]

Zolang de zon schijnt, blijf ik binnen.


  • magic_nl
  • Registratie: Augustus 2000
  • Laatst online: 31-08 08:53

magic_nl

Met wat magie komt alles goed

Topicstarter
Pyrowired schreef op 23 april 2004 @ 22:32:
Je kan natuurlijk ook een functie imaken in een module die verschillende parameters aan kan.

dan heb je een functie die je aan al die knoppen kan hangen met verschillende variabelen.

opm.: dit doe ik zo ffkes uit het hoofd zonder access voor hande maar t gaat om t idee.
Het is niet de bedoeling dat je in de query een parameter hebt staan, want die geef je mee met de functie.

edit:
typo
Deze methode spreekt met het meeste aan...
Nu alleen nog werkend krijgen...
Het veld waar het om gaat heet index
De waarde kan mm0*, mm7*, mm9*, en ms met genoemde getallen zijn.
Klopt 't dat ik 't als volgt moet doen?

function Open_form_met_variabele(VeldNaam, WaardeVanVeld)

dim StdDocName

StdDocName = Apparaat Query

Docmd.openform StdDocName, acviewnormal,, "'"& Veldnaam &"' like/=/watdanook '"& WaardeVanVeld &"'"

end function

en dan hang je aan die knop als besturingselementbron =Open_form_met_variabele([index];"mm0*")

Als ik dit doe krijg ik bij het aanklikken van de knop de melding dat index zich niet in het object bevind.
Wat doe ik fout?
De module is opgeslagen. Formulier bestaat. Query filtert helemaal niets.
Alvast hartelijk dank.

Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Een quote of wat te veel en een quote of wat te weinig. Letterlijke tekenreeksen moeten tussen quotes komen of staan. Dus:
In open_form_ etc is [index] een string, en moet dus tussen " "

en in de docmd.filter expressie wordt [waarde] uiteindelijk een tekenreeks en moet dus tussen quotes na het parsen van het filter. Je mag de openingsquote weglaten evenals die singlequote voor like, maar de veldwaarde moet uiteindelijk wel gequote worden:
code:
1
veldnaam & " like '" & waardevanveld & "'"

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1