EN mas de una ocasion, bien con temas de fechas, bien con temas de separadores decimales o comillas simples en los nombres, las sentencias SQL INSERT INTO fallan: Por ejemplo, una pregunta sacada al azar de las News: «Tengo una tabla destino cuyos campos son de tipo float para poder guardar consumos de clientes con sus respectivos decimales (p.e. 133,23) Pues bien, de otra base de datos extraigo en un recordset esos datos los cuales aparece como rst!consumos = 133,23. Y claro cuando hago el "INSERT INTO tabladestino VALUES (1," & rst!consumo & ",PEPE)" pues claro me lo toma como otra columna, ya que me tomaria INSERT INTO tabladestino VALUES (1,133,23,PEPE) He probado a irme al panel de control y configuracion regional y he cambiado la configuracion de los decimales a ' en vez de , Perfecto, pero como ese valor me viene del recordset de base de datos origen, (rst!consumo), me muestra 133'23 pero no se como tengo que convertir ese valor, si a Ccur o Clng, porque me da error al insertarlo en la tabla de destino cuyo columna es de tipo float. Alguna solucion?» UTILIZAR CONSULTAS PARAMETRIZADAS +++++++++++++++++++++++++++++++++ Escribe Eduardo Morcillo: Yo creo que te complicas la vida innecesariamente. Los motores poseen ya un tipo de datos para almacenar fechas y horas. Para no tener problemas con el formato (y evitarlos en general) a la hora de hacer consultas o ejecutar sentencias SQL lo mejor es utilizas consultas parametrizadas en donde el proveedor de datos (propio del motor en uso) se encargara de formar la sentencia a ejecutar de un modo que entienda el motor. De esta forma no tienes problemas con formatos numericos, de fechas o apostrofes en cadenas de caracteres ademas de mejorar la seguridad ya que no se podra inyectar codigo SQL dentro de la sentencia. Si igualmente quieres mantener ese estilo podrias separar los componentes de la fecha y de la hora y entonces validarlos o convertilos en tipo Date usando las funciones DateSerial y TimeSerial. Una vez que lo tengas en una variable de tipo Date puedes operar usando las funciones que provee VB. EJEMPLO: Dim oCmd As Command Dim oRS As Recordset Set oCmd = New Command With oCmd .ActiveConnection = oCnx .CommandType = adCmdText .CommandText = "INSERT INTO Periodos " & _ "(FechaCrea,Mes,Year,Periodo,Ultimo) " & _ "VALUES (?,?,?,?,?)" .Prepared = True .Execute , Array(Now, Mes, Anio, Periodo, Ultimo) End With Donde Mes, Anio, Periodo y Ultimo son variables en las que ya tienes guardados los datos. ¿No se ve mucho mejor que esa horrible concatenacion? Ademas no tienes que preocuparte por el formato de la fecha ni el del Boolean (que si 1, -1, 0, True o False).