2010-06-22 39 views
33

A menudo utilizo Get External Data de MS Excel para crear informes simples, ejecutar consultas en bases de datos y mostrar muy bien en Excel. Las excelentes características de Excel, como las tablas de filtro y pivote, y la interfaz familiar para los usuarios lo hacen bastante bueno para esto. Sin embargo, una limitación con Microsoft Query es que no puede agregar parámetros a las consultas que no se pueden mostrar gráficamente, lo que limita considerablemente el SQL que puede escribir.¿Cómo agregar parámetros a una consulta de datos externos en Excel que no se pueden mostrar gráficamente?

¿Hay alguna solución al error "los parámetros no están permitidos en las consultas que no se pueden mostrar gráficamente"?

Respuesta

5

Si tiene Excel 2007 puede escribir VBA para modificar las conexiones (es decir, las consultas de datos externas) en un libro de trabajo y actualizar la propiedad CommandText. Si simplemente agrega ? donde desea un parámetro, la próxima vez que actualice los datos, ¡solicitará los valores de las conexiones! magia. Cuando mira las propiedades de la Conexión, el botón de Parámetros estará ahora activo y usable como es normal.

E.g. Escribía una macro, la revisaba en el depurador y establecía el CommandText de forma adecuada. Una vez que haya hecho esto, puede eliminar la macro; solo es un medio para actualizar la consulta.

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 
-1

SI - solución es ahorrar libro en al archivo XML y editar este archivo como texto en el bloc de notas (por ejemplo, 'hoja de cálculo XML 2003'.)! use la función "BÚSQUEDA" del bloc de notas para buscar texto de consulta y cambie sus datos a "?".

guárdelo y ábralo en Excel, intente actualizar los datos y Excel se monit acerca de los parámetros.

22

Fácil Solución (sin VBA requiere)

  1. Haga clic derecho en la tabla, expanda "Tabla" manu contexto, seleccionar "Propiedades de datos externos"
  2. clic en el botón "Propiedades de conexión" (marcado en la descripción de solamente)
  3. Ir a ficha "Definición"

Desde aquí, editar el SQL directamente agregando '?' donde quieras un parámetro. Funciona de la misma manera que antes, excepto que no te molesten.

+2

Gracias! Esta es una excelente solución --- rápida, fácil, sin inconvenientes, y permite seleccionar directamente la celda de Excel que contendrá el parámetro. ** Creo que esta debería ser la respuesta aceptada ** –

+0

Hay varios pasos más que esto encontré, pero esta respuesta me resultó de gran ayuda. Desde aquí podría jugar con eso. ¡Gracias! –

+0

Cada vez que pruebo esta solución, Excel se cuelga. Si tengo valores explícitos específicos, funciona bien. ¡Pero luego, tratando de agregar los parámetros, simplemente se cuelga y termina chocando! – jamiebarrow

45

Excel ' s interfaz   para SQL Server consultas no le permiten tener un parámetros personalizados.   Una forma de evitar esto es crear un   Microsoft Query genérico, luego agregar parámetros, luego pegar la consulta parametralizada en las propiedades de conexión ' s.   Éstos son los pasos detallados para Excel 2010:

  1. Abra Excel
  2. Goto datos pestaña
  3. Desde el De otras fuentes botón Seleccionar desde Microsoft Query
  4. El " Elegir origen de datos " ventana aparecerá.   Elija una fuente de datos y haga clic en OK.
  5. Query Qizard
    1. Elija Columna: aparecerá la ventana.   El objetivo es crear una consulta genérica. Recomiendo elegir una columna de una pequeña mesa.
    2. Filtro de datos: Sólo haga clic en Siguiente
    3. Orden: Simplemente haga clic en Siguiente
    4. Acabado: Basta con hacer clic en Finalizar .
  6. la importación de datos " ventana " aparecerá:
    1. Haga clic en las Propiedades ... botón.
      1. Seleccione la pestañaDefinición
      2. En el texto " Comando: " sección añadir una cláusula DONDE       que incluye parámetros de cálculo de Excel.   Es ' s importante agregar   todos los parámetros que   quieren ahora.   Por ejemplo, si quiero dos parámetros, podría agregar esto:
        DONDE 1 =? y 2 =?
      3. Haga clic OK para volver a la " ventana " importación de datos
    2. Elija informe de tabla dinámica
    3. Haga clic OK
  7. Se le pedirá que introduzca el valor de los parámetros para cada parámetro .
  8. Una vez que tenga introducir los parámetros que estará en su tabla dinámica
  9. Ir batck a los Datos pestaña y haga clic en las conexiones botón Propiedades
    1. Haga clic en el pestaña Definición
    2. En el " Texto de comando: " sección, Pegue en la consulta SQL real que desee con el mismo número de parámetros que definió anteriormente.
    3. Haga clic en las Parámetros ... botón  
      1. introducir los Valores de la solicitud para cada parámetro
      2. Haga clic en OK
    4. Haga clic en OK para cerrar la ventana de propiedades
  10. Felicidades, ahora tienes parámetros.
+0

¿Puede hacer esto para agregar parámetros a una consulta de SQL Server? es decir, la conexión a una base de datos SQL Server? – Dan

+0

Fantástico. Siempre me he preguntado cómo obtener esos parámetros allí. –

+0

Funciona bien pero tiene algunos problemas con LIKE. Si pongo un texto, funciona bien, ¿te imaginas? en el texto de comando y 'foobar' en la celda, pero usar foo% no funciona –

Cuestiones relacionadas