10/05/2011, 12:25
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 7 meses Puntos: 88 | |
Simplificar el cidogo de una macro realizada con el grabador de macros La verdad es que sigo sin entender cual es -exactamente- tu dilema. Sin embargo, espero, poder orientarte si te comento lo siguiente:
El código que la grabadora de macros te entregó te permite ver dos cosas importantes:
-> Los dos parámetros "DBQ=" y "DefaultDir=" te indican la carpeta en la que el MS Query localizará a los *.dbf.
Dices que todas tus tablas se encuentran en la misma posición... Por lo tanto: esa parte del código no la tienes que modificar.
(Mi sugerencia inicial devino de interpretar que estabas buscando tablas en distintas carpetas. Luego: olvida esa sugerencia inicial.)
-> En la siguiente parte del código: "SELECT clientes.NUM, clientes.NOMB, clientes.CALLE, clientes.RFC" & Chr(13) & Chr(10) & "FROM clientes" & Chr(13) & Chr(10) & "ORDER BY clientes.NUM, clientes.NOMB, clientes.RFC"
es donde especificas la tabla "a la que apuntas". En el ejemplo que has mostrado, se refiere a "clientes.dbf".
_________________
Si tu consulta se corresponde con información de una sola tabla (recuerda que a veces -en consultas más elaboradas- cruzamos datos entre dos o más tablas), entonces el código anterior puede simplificarse del siguiente modo: "SELECT NUM, NOMB, CALLE, RFC" & Chr(13) & Chr(10) & "FROM clientes" & Chr(13) & Chr(10) & "ORDER BY NUM, NOMB, RFC"
Puedes ver que hacemos una única mención a la tabla correspondiente.
El paso que sigue es introducir la "variabilidad" del siguiente modo: Dim myTable As String myTable = "clientes"
"SELECT NUM, NOMB, CALLE, RFC" & Chr(13) & Chr(10) & "FROM " & myTable & Chr(13) & Chr(10) & "ORDER BY NUM, NOMB, RFC"
Variando -entonces- el valor de la variable "myTable" es como parametrizas el acceso a la tabla que prefieras.
Saludos, Cacho. |