Macro per creare tabella UNION da N tabelle

di il
3 risposte

Macro per creare tabella UNION da N tabelle

Ciao a tutti, è la prima volta che scrivo su questo forum e quindi vi anticipo già le mie scuse se i termini utilizzati nell'esporvi il problema non saranno corretti.
Ho una serie di tabelle importate in access da vari fogli excel (tutte con la medesima struttura) e devo creare una query union che me le accodi tutte una dietro l'altra: le tabelle sono n (numero variabile) ed ho già creato il comando per importarle/cancellarle.
Quello che ho fatto è creare una casella combinata che legge i nomi delle tabelle presenti e mi permette di selezionarne quante ne voglio; a questo punto la macro dovrebbe leggere i nomi delle tabelle selezionate e creare la query union...
Ecco il codice:
Private Sub Comando12_Click()
Dim varItem As Variant
Dim strSQL As String
Dim lngLen As Long
With Me.CasellaCombinata10
If .ItemsSelected.Count = 0 Then MsgBox "Nessuna tabella selezionata"
        Exit Sub
For Each varItem In .ItemsSelected
strSQL = strSQL & " UNION ALL SELECT * FROM  " & .ItemData(varItem)
Next varItem
End With
lngLen = Len(strSQL)
Select Case lngLen
Case Is > 0
strSQL = Right(strSQL, Len(strSQL) - 10)
DoCmd.RunSQL strSQL
End Select
End Sub
Se non seleziono alcuna tabella mi appare correttamente la msgbox ma se ne seleziono anche solo una non succede nulla, nemmeno un errore... purtroppo ho già provato vari tentativi di alterazione del codice, ma da perfetto neofita sto andando a casaccio... mi sapete indicare dove sto sbagliando?

Grazie in anticipo!

3 Risposte

  • Re: Macro per creare tabella UNION da N tabelle

    A parte il codice che scrivi che è errato... e lo vedresti semlicemente facendo DEBUG in uscita dal CICLO...
    La sintassi dovrebbe essere:
    
    SELECT * FROM T1
    UNION ALL
    SELECT * FROM T2
    UNION ALL
    SELECT * FROM T3
    ecc...
    ma dal tuo codice di certo non verrebbe cosi...

    In ogni caso la Query di cui sopra sarebbe solo una SELECT...
    Quindi dal momento che devi fare un Accodamenteo... non è meglio se nel Cilco esegui una Query di tipo INSERT alla volta...?
  • Re: Macro per creare tabella UNION da N tabelle

    @Alex ha scritto:


    La sintassi dovrebbe essere:
    
    SELECT * FROM T1
    UNION ALL
    SELECT * FROM T2
    UNION ALL
    SELECT * FROM T3
    ecc...
    ma dal tuo codice di certo non verrebbe cosi...
    Il codice l'ho trovato cercando su internet e adattando quanto trovato alle mie esigenze... pensavo che la sintassi fosse corretta in quanto creo la sintassi che hai indicato tu (o almeno così mi sembra) con in aggiunta un UNION ALL inziale che elimino con
    lngLen = Len(strSQL)
    Select Case lngLen
    Case Is > 0
    strSQL = Right(strSQL, Len(strSQL) - 10)
    ...o almeno così avevo interpretato quella serie di istruzioni...
  • Re: Macro per creare tabella UNION da N tabelle

    Si vero... ma non serve al tuo caso, devi fare una serie di INSERT...!
Devi accedere o registrarti per scrivere nel forum
3 risposte