Come aggiungere parametri a una query di dati esterni in Excel che non può essere visualizzato graficamente?

StackOverflow https://stackoverflow.com/questions/3091908

Domanda

Io uso spesso Get External Data di MS Excel per creare semplici report - l'esecuzione di query su database e la visualizzazione di bene in Excel. grandi caratteristiche di Excel come il filtraggio e tabelle pivot e l'interfaccia familiare per gli utenti rendono abbastanza buono per questo. Tuttavia, una limitazione con Microsoft Query è non è possibile aggiungere i parametri di query che non possono essere visualizzati graficamente, che limita notevolmente la SQL è possibile scrivere.

C'è qualche soluzione per l'errore "parametri non sono consentiti nelle query che non possono essere visualizzati graficamente"?

È stato utile?

Soluzione 3

Se si dispone di Excel 2007 è possibile scrivere VBA per modificare le connessioni (cioè le query di dati esterni) in una cartella di lavoro e aggiornare la proprietà CommandText. Se è sufficiente aggiungere ? in cui si desidera un parametro, quindi la prossima volta che si aggiorna i dati che sarà richiede per i valori per i collegamenti! Magia. Quando si guarda le proprietà della connessione sul pulsante Parametri sarà ora attivo e utilizzabile come normale.

es. Mi piacerebbe scrivere una macro, passo attraverso di essa nel debugger, e renderlo impostare il CommandText in modo appropriato. Una volta fatto questo è possibile rimuovere la macro - è solo un mezzo per aggiornare la query.

Sub UpdateQuery
    Dim cn As WorkbookConnection
    Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
    For Each cn In ThisWorkbook.Connections
        If cn.Type = xlConnectionTypeODBC Then
            Set odbcCn = cn.ODBCConnection

            ' If you do have multiple connections you would want to modify  
            ' the line below each time you run through the loop.
            odbcCn.CommandText = "select blah from someTable where blah like ?"

        ElseIf cn.Type = xlConnectionTypeOLEDB Then
            Set oledbCn = cn.OLEDBConnection
            oledbCn.CommandText = "select blah from someTable where blah like ?" 
        End If
    Next
End Sub

Altri suggerimenti

L'interfaccia di Excel per le query SQL Server non ti consente di avere un parametri personalizzati. Un modo per aggirare questo è quello di creare un generico Microsoft Query, quindi aggiungere i parametri, quindi incollare la query parametorized nelle proprietà della connessione. Ecco i passaggi dettagliati per Excel 2010:

  1. Apri Excel
  2. Vai a Dati
  3. Da altre origini scegliere Da Microsoft Query
  4. Verrà visualizzata la finestra "Scegli origine dati". Scegli un DataSource e fare clic su OK .
  5. La query Qizard
    1. Scegli Colonna: apparirà la finestra. L'obiettivo è quello di creare una query generica. Io consiglio di scegliere una colonna da un tavolino.
    2. Filtro dati: Basta cliccare su Avanti
    3. Ordine: Basta cliccare su Avanti
    4. Finish:. Basta fare clic su Fine
  6. Verrà visualizzata la finestra "Importa dati":
    1. Fare clic sul Proprietà ... .
      1. Scegliere la Definizione
      2. Nel "testo Comando:" sezione aggiungere una clausola WHERE , che include i parametri di Excel. E 'importante aggiungere tutti i parametri che si desidera ora. Ad esempio, se voglio due parametri potrei aggiungere questo:
        dove 1 =? e 2 =?
      3. Fare clic su OK per tornare alla finestra "Importa dati"
    2. Seleziona Rapporto di tabella pivot
    3. Fare clic su OK
  7. verrà richiesto di inserire il valore dei parametri per ciascun parametro.
  8. Una volta che avete inserire i parametri che saranno a vostra tabella pivot
  9. Vai batck alla Dati e fare clic su collegamenti Proprietà
    1. Fare clic sul Definizione
    2. Nel "testo Comando:". Sezione Incolla nel vero query SQL che si desidera con lo stesso numero di parametri che si è definito in precedenza
    3. Fai clic sul Parametri ...
      1. inserire i valori prompt per ogni parametro
      2. Fare clic su OK
    4. Fare clic su OK per chiudere la finestra delle proprietà
  10. Congratulazioni, ora hanno parametri.

Facile Soluzione alternativa (senza VBA richiesto)

  1. tasto destro Tavolo, espandere "Tabella" contesto manu, selezionare "Proprietà dati esterne"
  2. Fare clic sul pulsante "Proprietà di collegamento" (etichettati in tooltip solo)
  3. Go-to Tab "Definizione"

Da qui, modificare il codice SQL direttamente con l'aggiunta di '?' dove si vuole un parametro. Funziona allo stesso modo di prima, tranne che non si ottiene tormentava.

YES - la soluzione è quella di salvare cartella di lavoro in file XML e modificare questo file come testo in Blocco note (ad esempio 'XML Spreadsheet 2003'.)! utilizzare la funzione "SEARCH" del blocco note per trovare interrogazione di testo e modificare i dati a "?".

Salva e aperto in Excel, cercare i dati di aggiornamento e excel sarà Monit sui parametri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top