Met 1 CmdBtn meerdere queries

Status
Niet open voor verdere reacties.

RaymondC

Gebruiker
Lid geworden
10 mrt 2008
Berichten
561
Ik zit met het volgende probleem:

Ik wil met 1 CmdBtn 4 Queries na elkaar laten starten.
Dit zijn append Queries, dus als Query 1 klaar is, dan de volgende starten.

Als deze queries klaar zijn dan mag ook pas CmdBtn2 zichtbaar worden.
(heb die code al ergens op het forum gezien, dus dat zal copy + paste worden)
Zie ook onderstaande code.

Code:
Private Sub CmdRunAppendQRY_Click()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "QRY_Count_total_ItemNumbers"
    'code loopt vast op starten van volgende QRY
    'kan je meerder Docmd.openquery laten starten met 1 Cmdbutton?
    ' Hoe kan ik knoppen invisble zetten, zodat deze pas actief worden
    'als TBL New items is renamed.
    DoCmd.OpenQuery "QRY_Number_of_active_items_BCC_TC"
    DoCmd.OpenQuery "QRY_Number_of_active_items_for_ELS"
    DoCmd.OpenQuery "QRY_New_Items_last_month"
    DoCmd.OpenTable "New items"
    
    'newtablename = "tblx" & Month(Me.begindatum) & Year(Me.begindatum)
    DoCmd.Rename newtablename, , "tblx"
    DoCmd.SetWarnings True

End Sub
 
Zo zou het kunnen.
Code:
Private Sub RunAll()

    Dim arr(4) As String
    Dim intX   As Integer
    
    arr(0) = "Query0"
    arr(1) = "Query1"
    arr(2) = "Query2"
    arr(3) = "Query3"
    arr(4) = "Query4"

    For intX = 0 To 4
        CurrentDb.Execute CurrentDb.QueryDefs(arr(intX)).SQL
    Next intX

    Me.cmdButtonDieVisibleMoetWorden.Visible = True
    
End Sub
Ik heb hier een array gebruikt omdat ik dit mooier vind. Het is ook eenvoudiger om een query toe te voegen.
De rest van jouw code moet je er even bij plakken.

BTW je programma blijft hangen omdat je een action-query uit wilt voeren terwijl het openquery statement alleen select en crosstab queries kan uitvoeren.

Enjoy!
 
Laatst bewerkt:
Bedankt, wist niet dat actie Queries anders aangeroepen moest worden.
Mhja ben ook nog maar een beginner in VBA.

Ga het uit proberen.
 
Code loopt jammer genoeg vast (zie hieronder)

Code:
Option Compare Database
Option Explicit


Private Sub CmdBtnRunAppendQRY_Click()

    Dim arr(3) As String
    Dim intX   As Integer
    
    Me.CmdBtnMaandCijfers.Visible = False
    
    arr(0) = "QRY_Count_total_ItemNumbers"
    arr(1) = "QRY_Number_of_active_items_BCC_TC"
    arr(2) = "QRY_Number_of_active_items_for_ELS"
    arr(3) = "QRY_New_Items_last_month"
    
    For intX = 0 To 3
    'Code loopt hiervast (zie foutmelding hieronder)
    'Queries draaien op gelinkte tabellen (SQL server)
        CurrentDb.Execute CurrentDb.QueryDefs(arr(intX)).SQL
    Next intX
    'Item not found in this collection. (Error 3265)
    'An attempt to reference a name in a collection failed.

    'Possible causes:

'The object does not exist in this collection. Make sure the object is appended to a collection before referencing it.
'There is more than one object with this name in the collection; using its name is an ambiguous reference.
'Reference the object by its ordinal position in the collection (for example, Recordsets(3)).

    
    DoCmd.OpenTable "New Items"
    'Na openen van bovenstaande TBL (moeten nog bewerkingen in gedaan worden)
    'Mogen de volgende Queries pas uitgevoerd worden als de tabel hernoemd is.
    'Naam van de tabel begint altijd met: "Vorige" maandYY: May08
 Me.CmdBtnMaandCijfers.Visible = True
    
End Sub
 
Je kan quotes om de querynaam heen zetten:
Code:
    CurrentDb.Execute CurrentDb.QueryDefs("""& arr(intX) & """).SQL
wat je ook kan proberen is eerst je SQL ophalen:
Code:
Public Function GetSqlDef(strQueryname As String) As String
'Return SQL definition of query
   GetSqlDef = CurrentDb.QueryDefs(strQueryname).SQL
End Function
Je code wordt dan:
Code:
    CurrentDb.Execute getsqldef(arr(intX))
De rest van de code blijft natuurlijk ongewijzigd.

Het moge duidelijk zijn dat ik alles gewoon heb ingeklopt en niets getest. Alleen de GetSqlDef functie gebruik ik regelmatig.

HTH:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan