viernes, 9 de agosto de 2024
domingo, 25 de febrero de 2024
Curso Excel y VSTO: 13 – Datos de Excel a Access usando un Windows Form y System.Data.OleDb
Curso Excel y VSTO: 13 – Datos de Excel a Access usando un Windows Form y System.Data.OleDb
¡Saludos!
Abraham Valencia
Lima, Perú
sábado, 1 de julio de 2023
Conectando Excel a bases de datos: 6- Importar registros de Access a Excel usando Where
Conectando Excel a bases de datos: 6- Importar registros de Access a Excel usando Where
¡Saludos!
Abraham Valencia
Lima, Perú
jueves, 22 de junio de 2023
Curso Excel y VSTO: 12 –Importar datos de Access desde Excel usando System.Data.OleDb
Curso Excel y VSTO: 12 –Importar datos de Access desde Excel usando System.Data.OleDb
¡Saludos!
Abraham Valencia
Lima, Perú
jueves, 16 de marzo de 2023
Conectando Excel a bases de datos: 4- Enviando registros hacia Access con VBA, ADO y SQL
Conectando Excel a bases de datos: 4- Enviando registros hacia Access con VBA, ADO y SQL
¡Saludos!
Abraham Valencia
Lima, Perú
sábado, 25 de febrero de 2023
Conectando Excel a bases de datos: 1- Distintos modos de conectarse con Microsoft Access
Conectando Excel a bases de datos: 1- Distintos modos de conectarse con Microsoft Access. ¡No dejes de verlo!
¡Saludos!
Abraham Valencia
Lima, Perú
domingo, 11 de septiembre de 2022
Excel y Access (IV): El uso de las fechas con WHERE y Between (SQL)
Tal y como comenté hace algunas semanas, hoy continuamos con SQL y Where, aplicado a fechas para importar datos a Excel desde Access. El archivo de ejemplo seguirá siendo el mismo que adjunté en el segundo artículo de esta serie, solo entren al enlace y descárguenlo: Enlace.
Lo primero es comentarle que cuando de fechas se trata, casi siempre hay complicaciones debido a que no es que todos los países usen el mismo tipo de formato; por ejemplo, en Perú el usado habitualmente es “dd/mm/yyyy” (entiéndase el “yyyy” como “aaaa”) pero en EE. UU. usan “mm/dd/yyyy”. Entonces, cuando usamos SQL ¿Cuál es el formato ideal? Pues sin duda yo les diría que es el siguiente: “yyyy-mm-dd” ¿Por qué? Porque SQL usa los estándares de la norma ISO 8601y respecto a fechas es la que les menciono. Entonces, por decirlo de un modo, con ese formato de fecha, no hay pierde.
Yendo al primer ejemplo, si queremos los datos de aquellas personas cuya fecha de nacimiento es menor al 01 de enero de 1978, basta colocar la sentencia de este modo:
sql = "SELECT * FROM Vendedores Where Nacimiento < #1978/01/01#"
Si se dan cuenta, coloqué la fecha en el formato que les mencioné previamente y he rodeado dicha fecha de almohadillas (#), eso último es importante para que el valor enviado se reconozca justamente como fecha. En nuestra hoja tendremos esto:
Ahora vamos más bien a obtener las fechas que son mayores al 01 de enero de 1978, es decir, aquellas posteriores. Basta cambiar el signo menor (<) por el signo mayor (>).
sql = "SELECT * FROM Vendedores Where Nacimiento > #1978/01/01#"
En esta ocasión tendremos esto en la hoja:
No olviden que también se puede usar el signo igual (=) junto con mayor o menor para tomar en cuenta la fecha que se usa en el criterio. Pero ¿qué pasas si lo que queremos obtener son los registros en un rango determinado de fechas? No hay problema, para eso tenemos a Between que es un operador que permite seleccionar valores entre un rango de datos, justamente. Between funciona del siguiente modo:
sql = "SELECT * FROM Vendedores Where Nacimiento BetWeen #1970-01-01# And #1979-12-01#"
Para ese caso, estamos seleccionado las fechas entre el 01 de enero de 1970 y el 01 de diciembre de 1979. Al correr la macro este será el resultado:
Ojo con el uso del “And” y que la fecha inicial siempre va primero. Si quieren ir un poquito más allá y ordenar por fecha de naciemiento, basta agregar la cláusula “Order By” que justaente ordena los registros de una consulta de forma ascendente (por defecto) o descendente. Si queremos agregar eso, se hace de la siguiente forma:
sql = "SELECT * FROM Vendedores Where Nacimiento BetWeen #1970-01-01# And #1979-12-01# Order by Nacimiento"
Si queremos los datos de forma descendente, basta agregar lo siguiente:
sql = "SELECT * FROM Vendedores Where Nacimiento BetWeen #1970-01-01# And #1979-12-01# Order by Nacimiento Desc"
No olviden tomar muy en cuenta que, después de la clausula Order By se agrega el nombre del campo por le cual se quiere ordenar y, de ser necesario, se agrega el “Asc” o “Desc” antes del nombre del campo. Amigos/as, en esta ocasión vamos a llegar hasta ahí, en el próximo artículo usaremos variables y datos de celdas para construir nuestra cadena SQL, así como seleccionaremos solo algunos de los campos de la tabla del archivo Access.
¡Hasta la próxima!
Abraham Valencia
Lima, Perú
jueves, 11 de agosto de 2022
Excel y Access (III): El uso de WHERE en las sentencias SQL
Hoy vamos a continuar trabajando con el RecorSet para importar datos de Access hacia Excel. En esta ocasión vamos a concentrarnos en las sentencias SQL y en específico en la instrucción WHERE que nos servirá para extraer registros que cumplen las condiciones específicas que deseemos. No olviden que trabajaremos con los archivos del artículo anterior (Enlace).
Entonces, vamos a recodar que nuestra variable llamada SQL es justamente con la que enviamos las sentencias SQL a Access y usaremos esa misma variable. Solo para recordar, la que usamos la vez anterior es:
SQL = "Select * From Vendedores"
No olvidando que Select es la instrucción que selecciona los registros y al poner un asterisco estamos diciendo que extraiga todos los registros de la tabla, o tablas, que indicamos a continuación con From.
Entonces ¿Cómo se usa Where? Verán que es relativamente fácil; por ejemplo, supongamos que queremos extraer solo los datos cuya columna "Sexo" tiene registros que dicen "Masculino", pues basta colocar así:
SQL = "SELECT * FROM Vendedores WHERE Sexo= 'Masculino' "
Es decir, estamos diciendo que extraiga todos los registros de la tabla “Vendedores” en donde el campo "Sexo" sea igual a "Masculino". Ojo, al ser el campo “Sexo” del tipo Texto, es necesario que el parámetro enviado en el Where vaya entre dos apóstrofos. Por cierto, las instrucciones SQL pueden ir en minúsculas o mayúsculas; en esta ocasión las puse en mayúsculas solo con la intención de resaltarlas. Ah, por cierto, el resultado de la macro, con el cambio respectivo, debería ser este:
Se puede usar Where con cualquiera de los campos e incluso en más de uno a la vez. Por ejemplo, miren esto:
SQL = "SELECT * FROM Vendedores WHERE Sexo= 'Masculino' AND Tienda = 'Tienda 002' "
El resultado será el siguiente:
Así como AND, también podemos usar OR. Usando parámetros como el anterior y cambiando el AND por OR, podríamos dejar así la sentencia:
SQL = "SELECT * FROM Vendedores WHERE Sexo= 'Masculino' OR Tienda = 'Tienda 002' "
¿Notan la diferencia? Ya no solo extrajo los registros que cumplen con ser masculino y de la Tienda 002, sino que esta vez se extraen los que son masculino o que también son de la Tienda 002.
También podemos hacer uso de los campos numéricos para usar con Where, aunque en la tabla solo es numérico el campo ID", dado que estos son solo ejercicios, lo usaremos. Por ejemplo, supongamos que queremos los mayores de 10, entonces pondríamos así:
SQL = "SELECT * FROM Vendedores WHERE ID > 10"
Por cierto, a los valores de los campos numéricos no se les coloca apóstrofos. En la hoja deberíamos tener los siguientes datos después de correr la macro:
También se puede usar menor (<) e igual (=) para dichos valores numéricos, no dejen de probarlos.
Y eso, amigos y amigas, es todo por hoy, espero les haya gustado. En la próxima ocasión seguiremos con Where pero aplicado a fechas, que es un tema, además de recurrente, que se le hace difícil a muchas personas. Hasta la próxima.Abraham Valencia
Lima, Perú
miércoles, 10 de agosto de 2022
Entrevista a Benito Moreira Estévez: Complemento (add-in) MAccessExcel
Entrevista a Benito Moreira Estévez (España) para presentar su complemento (add-in) llamado "MAccessExcel", que ha elaborado y puesto al servicio de la comunidad de Excel. Acompáñennos y conozcan el interesante aporte que permite extraer datos desde Access y muchas otras cosas. ¡No se la pierdan!
Un abrazo a todos y todas.
Abraham Valencia
Lima, Perú