Cuando estamos creando una sentencia SQL en VBA, uno de los quebraderos de cabeza más grandes es la delimitación de los valores de manera que no obtengamos errores de sintaxis ni en VBA ni en la ejecución de la consulta.

Para ello es necesario determinar el tipo de datos que estamos utilizando para saber como deben delimitarse.

Texto

Los textos se delimitan con comillas… pero dado que las comillas ya están delimitando la propia SQL, lo sustituimos por apóstrofes. También se podrían utilizar tres comillas dobles en lugar de 1.

Número enteros

Los números enteros no se delimitan y no dan ningún problema.

Números decimales

Los números decimales, al utilizar la coma, pueden dar problemas. Para evitar ese problema podemos utilizar la función Str que convierte números a cadenas de texto utilizando el . como separador decimal.

Fechas

Las fechas son las más complejas de todas ya que se delimitan con # y se «americanizan» (formato mm/dd/yyyy). Para formatear utilizaremos la función Format.

Ejemplo de SQL

Imaginemos que deseamos crear una sentencia dónde tomamos valores de diferentes controles de un formulario para crear las condiciones de una clausula WHERE dónde cada tipo de datos es distinto. Sería algo así:

strSQL = "SELECT * FROM UnaTabla WHERE UnCampoTexto = '" & Me!UnCampoTexto & "' AND UnCampoEntero = " & Me!UnCampoEntero & " AND UnCampoDecimal = " & Str(Me!UnCampoDecimal) & " AND UnCampoFecha = #" & Format(Me!UnCampoFecha, "mm/dd/yyyy") & "#"
Categorías: Access

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *