Opgelost draai een Query zonder het weer te geven met VBA

Dit topic is als opgelost gemarkeerd

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
217
Is er een eenvoudige routine die gebuikt kan worden in VBA om een Pass Through Query te draaien zonder de gehele SQL string in je VBA in te geven?

Nu ziet het in mij VBA als hieronder uit.
Code:
    Set qdf = db.QueryDefs("EECQVandaag_PTQ") 'Haal de EEC data van alleen vandaag op
    qdf.SQL = "SELECT Top 500 * FROM EECQ_View WHERE (((Leeftijd)=0) AND ((n)>1))ORDER BY Locatie, Lijn_Nr, Product, PRID; "

Is er iets als DoCmd.Requery "EECVandaag_PTQ"

Dit werkt wel voor een standaard Query maar opent dan ook de Query!
 
Laatst bewerkt:
Ik snap niet helemaal wat je bedoelt. Zo te zien gebruik je een QueryDef om een SQL string van een query te wijzigen, en dat is zo prima. Op dat moment hééft de query de nieuwe bron. Punt. Wat je erná mee doet, is dan voor de query niet zo belangrijk. Je hoeft hem uiteraard niet te openen.

Een 'query draaien' is mij onbekend :). Ofwel je opent een formulier met die query als bron (met de bijgewerkte recordbron), of je gebruikt een Recordset om de query te openen. In beide gevallen wil je iets doen met de gegevens. 'Draaien' valt daar niet onder ;).
 
Soms de juist uitleg geven is best lastig. :)

Er is een Totaal Query die als bron diverse Pass Through Queries (PTQ)heeft.
Deze PTQ zijn opgeslagen.
Ik kan de T-SQL data in de VBA opnemen om de data in de PTQ te verversen of er is een kortere code om dit te doen.
Ik hoop dat ik het zo iets beter uitleg.

Ik neem aan dat als ik de Totaal Query aanroep dat deze niet vanzelf de onderliggende de PTQ een ververs opdracht geeft of is dat wel het geval want dan ben ik snel klaar.
 
Ik heb het antwoord op mijn eigen vraag gevonden.
Telkens als de totaal Query wordt aangeroepen zorgt deze ervoor dat de onderliggende Query's de verse data ophalen. Daar hoef ik dus geen extra actie voor uit te voeren tenzij ik wil dat de data in de onderliggende Query's een extra filter gang zijn ondergaan waardoor er minder data is of anders gezegd er alleen data is waarom gevraagd wordt en het niet in de totaal Query er door Access uit gefilterd hoeft te worden.

Toch zou het handig zijn om te weten of er een kort VBA-commando is waarmee een opgeslagen Pass Trough Query uitgevoerd kan worden i.p.v. de gehele T-SQL syntax. Voor een normale Query heb ik alleen de onderstaande code kunnen gebruiken, maar lijkt mij wat omslachtig.
Code:
DoCmd.OpenQuery "EECQVandaagSom"
DoCmd.Close acQuery, "EECQVandaagSom"

Diff:
DoCmd.Requery "EECQVandaagSom"
geeft mij een foutmelding.
 
En dat is dus precies wat ik zei :). En nee, die code is er niet. Nogmaals: zodra je een query uitvoert, krijg je een dataset. Daar kun je verder mee werken. Met filters kun je de datasets verkleinen.
 
En dat is dus precies wat ik zei :). En nee, die code is er niet. Nogmaals: zodra je een query uitvoert, krijg je een dataset. Daar kun je verder mee werken. Met filters kun je de datasets verkleinen.
ok duidelijk. dank je wel.
 
Kon je het tekstvak "Schrijf jouw reactie" niet vinden? Ik geef toe: de knop <Citeren> is véél groter :D
 
Maak een procedure of view op de database en roep deze op via VBA, dan moet je alleen de naam van de view of de procedure meegeven en eventueel de parameters
 
Terug
Bovenaan Onderaan