SQL opdracht onder knop

Status
Niet open voor verdere reacties.

Janzan

Gebruiker
Lid geworden
10 jan 2012
Berichten
61
Beste mensen,

Ik heb een vraag,
Ik heb een doorlopend formulier wat is gebaseerd op een query.
Nu wil ik graag de code van die query onder een knop op dat formulier plakken.
Op dat formulier staan nog een paar txt vakken waar ik wat criteria voor de query kan ingeven.

Hoe moet ik dat aanpakken, welke code moet er onder de knop, zodat ik alleen het formulier nodig heb?
 
Ik snap weer niet wat je bedoelt; je hebt een query als basis voor je formulier. En nu wil je die query via een knop nog een keer kunnen selecteren? Makes no sense... Of wil je een andere query als basis voor het formulier? Waarom zet je de query er dan niet gelijk onder?
Het laatste deel snap ik nog wel: extra tekstvakken om een criterium mee te kunnen maken. Ik neem aan dat je die tekstvakken gebruikt om het formulier te fitleren? Maar op welke van de 2 queries moet dat filter dan worden gemaakt? En is dat voor of nadat je de query hebt gewisseld? Ik vind het maar ingewikkeld...
 
Beste Michel,

Sorry voor mijn wat onduidelijke verhaal.
Ik bedoel het volgende.
Ik heb een tabel 1
Ik heb in het ontwerpvenster een query gemaakt, query1
Ik heb ook een formulier met de Query als gegevensbron formulier 1
totaal dus 3 dingen in acces.....op zich geen probleem hoor...
Maar ik vroeg mij af of ik de zoekopdracht ook in VBA kan maken, en in het formulier kan opslaan.
Ik dacht onder een knop, bij gebeurtenis bij klikken de code....en vervolgens verschijnen de gegevens in het doorlopende formulier.
Dan heb ik dus formulier 1 en tabel 1 (Ik mijn situatie maak ik gebruik van een tabel uit een ander programma)

Maar ik bedacht dat het wel niet mogelijk zou zijn want het formulier heeft als gegevens bron die query die ik gemaakt heb in het ontwerpvenster.
Ik mijn situatie maak ik gebruik van een tabel uit een ander programma.
Mijn gedachte was om heel het zoek gebeuren onder te brengen in het formulier, dus ook de query code....gewoon voor mijn eigen overzicht.
Ik weet dan dat dit formulier alles in zich heeft, want als ik nu de query wist, dan werkt het formulier ook niet meer natuurlijk.

Ik hoop dat dit verhaal wat duidelijker is.
 
Nog steeds niet helemaal duidelijk, maar ik begin te vermoeden (correct me if i'm wrong) dat je op je doorlopende formulier wilt filteren op basis van de tekstvakken die je op het formulier hebt gemaakt. Waarom je voor het formulier een query gebruikt als Recordbron en niet de tabel zelf is mij een beetje onduidelijk; uit je verhaal maak ik niet op dat je in het formulier andere gegevens gebruikt dan in de tabel zitten. Wat die query dus doet, is compleet onduidelijk.
Als ik gelijk heb (query is in beginsel dezelfde gegevensbron als tabel) dan kun je a) net zo goed de tabel gebruiken als bron en b) het formulier prima filteren op basis van de tekstvakken op het formulier. Daar heb je namelijk helemaal geen aparte query voor nodig (en dat is wat ik vermoed dat je doet: denken dat je een query nodig hebt om te filteren).
 
Die query heb ik nodig omdat in de tabel dubbele records voorkomen.
Bij de query geef ik de eigenschap unieke waardes op.
 
En de rest van mijn vraag?
 
Met behulp van de antwoorden die jij hebt gegeven op mijn andere vragen in dit forum heb ik een formulier gemaakt met 1 keuzelijst met meervoudige selectie, en 5 keuzelijsten zonder meervoudige selectie.
Ik heb het als leek het volgende gedaan, omdat ik het dan ok een beetje blijft overzien en begrijpen.

In die 5 keuzelijsten geef ik de criteria in voor de query's

Ik heb query uniek met als gegevensbron de query waar ik filter op unieke waardes, zodat ik geen dubbele records meer heb.
In keuzelijst 1 geef ik de criteria op voor query 1
Die heeft als gegevensbron query uniek


Dan heb ik een query 2 gemaakt, met als gegevensbron query 1
In keuzelijst 2 geeft ik de criteria op voor query2

Dan heb ik query 3 gemaakt, met als gegevensbron query 2
In keuzelijst 3 geef ik de criteria op voor query 3

En dat ook zo voor 4 en 5

De gegevensbron van mijn formulier is dus de laatste query

Dan heb ik ook met jouw hulp op een keuzelijst met meervoudige selectie gemaakt.

Ik maak daar de selectie, en de code heb ik onder een knop zoeken geplakt
Werkt nu prima....krijg keurig de gegevens die ik wil zien.
Die laatste meervoudige selectie lijst filter de gegevens op het formulier, dat begrijp ik.

Maar er staan nu wel een aantal query's
Voor mij is het eenvoudiger om het zo te doen, en niet alle criteria in 1 query te maken, want dan raak ik het overzicht een beetje kwijt.
Vooral ook omdat het voor elk criteria in de keuzelijsten zo is dat als er geen selectie is gemaakt alle waarden worden weergegeven.


Nu dacht ik dus dat het misschien mogelijk was om van elke query de code te pakken, en die dan te combineren onder de knop zoeken.
Ik henb dan alles in 1 formulier.

Tweede vraag is nog de volgende.
In de code van de keuzelijst met meervoudige selectie maak jij gebruik van de variabele sFilter.
Is het mogelijk om de inhoud van die variabele sFilter zichtbaar te maken in een tekstvak op het formulier?
iets van tekst1 = me.sFilter maar dat werkt niet bij mij.

En vervolg vraag:
de variabele sFilter is uiteindelijk een zoekstring.
Kan ik die string ook als criteria gebruiken in een Query die ik maak in het ontwerpvenster?
Nu staat daar iets als [Forms]![frmTotaal].[lstartikel]....maar kan ik ook die string in sFilter daar krijgen?
Dat wil ik graag om dan op basis van die zoekstring uiteindelijk een rapport te maken.


Of kan dat op een andere manier?
 
Wat betreft je laatste vragen: het filter kun je zonder meer naar een tekstvak kopieëren; eigenlijk zou je code dan moeten werken, ware het niet dat ME op de verkeerde plaats staat. Een variabele kan je nooitmet ME aanroepen, want die is niet gekoppeld aan een object. Een tekstveld daarentegen wel.
Code:
Me.Tekst1.Value=sFilter
Zelf bouw ik mijn filters altijd op via VBA, waarbij ik dan de echte waarden in het criterium zet, en dus zelden verwijzingen naar de formulieren. Dus ook dat is mogelijk :)
Ik vind je constructie buitengewoon ingewikkeld, en zou dat zelf dus zo nooit doen. Als je een queryfilter maakt via VBA, en daarbij de gebruikte filtervelden/keuzelijsten als basis gebruikt, dan wordt het filter alleen maar opgebouwd op basis van de gekozen keuzelijsten of ingevulde tekstvakken. Heb je een keuzelijst niet gebruikt, dan zit die dus ook niet in het filter. Lijkt mij een heel stuk makkelijker. Je hebt namelijk maar één, niet-gefilterde query nodig voor je formulier en het filter bepaal je a.d.h. van de keuzes op het formulier.
 
Daar was ik al bang voor :o

Maar ik wil graag leren, dus mijn volgende vraag:
Kan ik dan ook de volgende code onder de zoekknop plaatsen on de keuzelijst (zonder meervoudige selectie) in het filter op te nemen
Code:
Me.Filter = lst2.ItemsSelected

En waar baseer ik dan mij rapport op?, die moet ik baseren op een tabel of query?, ik wil uiteindelijk een rapport van de gefilterde gegevens, die ik dan ook wil samenvatten.

Je code voor het plaatsen van de gegevens uit sFilter in een tekstvak werkt prima:thumb:
 
Het rapport is heel simpel, want dat kun je openen met het filter van het formulier. Je geeft dan het filter mee als parameter bij het openen. Daar hoef je dus eigenlijk niks voor te doen, want dat werk doe je op het formulier. Overigens is het echt veel simpeler om het filter op te bouwen op basis van de keuzelijsten dan via allerlei ingewikkelde tussenqueries. :)
 
En de rest van mijn vraag?
Ik begrijp nu ongeveer hoe het gaat met die code voor een keuzelijst met meervoudige selectie,
Maar nu voor een lijst met enkelvoudige selectie, dan is die lus niet nodig toch? en hoe knoop ik die filters weer aan elkaar.?
Is het geen goed idee dat jij een online database maakt met al dit soort voorbeelden??:D:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan