query waarde instellen met een macro

Status
Niet open voor verdere reacties.

spawn666

Gebruiker
Lid geworden
16 mei 2004
Berichten
117
Hallo iedereen.
Ik heb misschien een uitdaging.

Situatie is alsvolgt. Ik heb een aantal zeer grote tabellen waar in gezocht kan worden.
Ik wil deze tabellen niet samenvoegen omdat ze af en toe geupdate worden. Tevens word de tabel onhandelbaar groot als ik het zou samenvoegen wat onwerkbaar is.

In de grote tabellen staan per vesteging het aantal pc's + de software die aan wezig is op elke pc. Dat klinkt misschien niet veel maar bij elkaar worden dit soms meer dan 50000 records per vestiging. 50000 X 40 = is ruim te veel.
Mijn idee was om de bron van mijn query's variable te maken afhankelijk van de vesteging die ik opgeef. b.v.
Vesteging 1 = tabel 1, als vesteging 1 geselecteerd word in het start form, moet de bron waar de query in zoekt aangepast worden naar tabel 1.
Nu probeer ik met een setvalue de bron waarde te manipuleren in de query maar deze waarde is niet te selecteren.

Heeft iemand een goeie aanpak hiervoor?

thanks
 
Ik weet niet of je met een macro de bron van een query kunt veranderen. Het kan in ieder geval wel (redelijk simpel) met VBA. Heb je een goede reden om het met een macro te willen doen?
 
Niet persee. Alleen is mijn vba kennis nog redelijk pril.
Als je me er een beetje opweg mee helpt gaat het vast lukken. :D
 
... En dat is uiteraard geen probleem!

Hier wat voorbeeldjes:

Code:
Dim sTabel as String, strSQL as String
Dim iWaarde As Integer
Dim qTemp As QueryDefs

     sTabel = Me.cboTabelNaam.Value
     iWaarde = Me.TekstveldMetWaarde.Value
     strSQL = "UPDATE " & sTabel & " SET [VeldNaam] = " & iWaarde & " "
     strSQL = strSQL & "WHERE RecordID = " & Me.RecordID
     DoCmd.RunSQL strSQL

Dit voorbeeld is redelijk rechttoe-rechtaan. Ik ga er voor het gemak even van uit, dat je een keuzelijst met invoervak heb gemaakt met de namen van de vier tabellen. Je selecteert dus een tabelnaam, en de code hierboven zet je op de gebeurtenis <Na bijwerken> van die keuzelijst, die ik maar even cboTabelNaam heb genoemd.
Na het kiezen van een tabel wordt de tabelnaam in een variabele gezet, en toegevoegd aan de Update query string, die in de volgende regel wordt bepaald. Er staat overigens een extra variabele tussen, en dat is een variabele met de waarde die je wilt bijwerken in de tabel. Die moet je dus ook uitlezen van het formulier. Vervolgens wordt (in het voorbeeld) het huidige record geselecteerd. Dat is om te laten zien hoe je een filtering maakt op de tabel.

Een andere manier is om een speciale Query te maken, die je steeds aanpast en dan uitvoert. In het voorbeeld heet die query qTemp. In het vorige voorbeeld is hij al gedefinieerd als variabele, dus die code laat ik hier weg. Het vastleggen van de Query-code is ook hetzelfde, dus die laat ik ook weg.

Code:
     Set db = CurrentDb()
     Set qTemp = db.QueryDefs("qTemp")
     qTemp.SQL = strSQL
     qTemp.Execute

Hier wordt de SQL dus toegewezen aan de tijdelijke query, waarna de query wordt uitgevoerd. In dit voorbeeld blijft de laatste query-variant altijd bestaan, dus je kunt hem ook uitvoeren zonder het formulier.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan