Access - Insertar fecha en tabla de Access

   
Vista:

Insertar fecha en tabla de Access

Publicado por Abraham (4 intervenciones) el 04/08/2015 23:54:59
Buen día.

Tengo que ejecutar un INSERT en código VBA desde un botón de un formulario de Access.
Todo eso si lo puedo hacer pero al querer insertar en la tabla la fecha desde un TextBox con formato ShortDate me dice que la sentencia no esta correcta.

Cualquier otro control (combobox, textbox simple) si me deja insertarlos pero solo sucede con es control.

En la tabla Date esta en formato string (ya probé cambiarla a Data/Time) y en el código hago tengo

textFecha.SetFocus
Fecha = Me.textFecha.Text

para obtener la fecha (ya lo intente con .Value)

y la sentencia INSERT ES

dbs.Execute "INSERT INTO Concernss (Organization,Site,Type,Dept,Component,Date) VALUES('" & Organization & "','" & Site & "','" & Tipo & "','" & Dep & "','" & Com & "','" & Fecha & "')"

No se si podrían ayudarme ya que de verdad ya me pase mucho tiempo intentando arreglarlo, sin éxito claro así si tienen alguna forma en que pueda hacerlo me vendría de maravilla. Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Insertar fecha en tabla de Access

Publicado por Enrique Heliodoro (1663 intervenciones) el 05/08/2015 00:32:32
Utilizar fechas en campos de tipo texto no permitirá hacer muchas operaciones con ese dato (en fin, que utilizar asi las posibilidades de Access es un total y absoluto desperdicio).

Para alguien que trabaje (o comience a trabajar) con Access, debería tener claro que la propiedad .Text solo existe si el objeto tiene el foco, en cualquier otro caso o Value o NADA y funciona sin necesidad de convertirlo en el objeto activo.

Cuando se utilizan los objetos de un formulario 'desde el mismo formulario' se debería utilizar 'ME.' es la forma de indicarle que es UN OBJETO del formulario y asi se le evita 'buscar a ver que encuentra' y darse el inmenso paseo que se da en la inútil búsqueda de una variable accesible con ese nombre (para al final 'si no la encuentra' conformarse con el objeto ...).

Si se utiliza como texto (método muy poco eficiente)
..... ,'" & Com & "','" & Me.textFecha & "')"

Si se utiliza como fecha (para guardar en un campo de fecha):
Método UNO (convirtiendo el texto a Fecha Access):
..... ,'" & Com & "', #" & CDate(Me.textFecha) & "#)"

Método alternativo (introduciendo la fecha como lo que es: un numero)
..... ,'" & Com & "', " & CDbl(CDate(Me.textFecha)) & ")"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Insertar fecha en tabla de Access

Publicado por jose (741 intervenciones) el 05/08/2015 09:13:09
Muy bien explicado Enrique
me gustaría añadir una varian, otra forma de ponerlo implemente, cuando en el registro el dato tiene formato fecha



dbs.Execute "INSERT INTO Concernss (Organization,Site,Type,Dept,Component,Date) VALUES('" & Organization & "','" & Site & "','" & Tipo & "','" & Dep & "','" & Com & "',#" & format(Fecha,"DD/MM/YYYY") & "#)"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Insertar fecha en tabla de Access

Publicado por Enrique Heliodoro (1663 intervenciones) el 05/08/2015 09:27:13
Puestos a localizar formas mas o menos eficientes, también esta la de utilizar 'DateSerial' y mas que están en el cajón de sastre.

Particularmente no me gusta el método de utilizar la función FORMAT, porque SIEMPRE devuelve un texto, lo que conlleva que para 'invertir el mes por el día' (esto es, para trasladar la fecha a formato americano) se le envía un texto (el valor del campo) que tendrá que interpretar como fecha y ya interpretado convertir su formato para (y finalmente) devolver un texto que se le ha de indicar que es una fecha ..... demasiada libre interpretación para fiarse de Access.

Mi método preferido es el de convertir el dato de texto en fecha (admitirá como dato valido cualquiera de los que el formato regional interprete como fecha) y ya convertido en 'fecha Access' enviar el dato como numero (al que no le afectan las configuraciones regionales) y así le valdrá a un europeo (dd/mm/aaaa), a un americano (mm/dd/yyyy) o a un japonés (yyyy/mm/dd)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Insertar fecha en tabla de Access

Publicado por Abraham (4 intervenciones) el 05/08/2015 15:47:19
Hola de nuevo, gracias por responder, pero ya intente lo que me mencionaste y también lo de los demás comentarios y sigue saliendo error, el INSERT tiene un error de sintaxis.
Colocare todo lo respecto a la fecha nuevamente como lo tenia yo antes de intentar lo demás:

'Declaro la variable
1
Dim Fecha As String


'Guardo el contenido del textBox con la fecha en la variable
1
Fecha = Me.textFecha


'Executo el INSERT
1
dbs.Execute "INSERT INTO Concernss (Organization,Site,Type,Dept,Component,Date) VALUES('" & Organization & "','" & Site & "','" & Tipo & "','" & Dep & "','" & Com & "', '" & Fecha & "')"


El textFecha tiene formato ShortDate, no le coloque InputMask, tiene valor por Default (=Date())

En la tabla la Columna se llama Fecha, de tipo Text, también sin InputMask.

Los demás campos los llena bien, ya que después de la fecha agregaba mas datos y como me salia que la sintaxis era incorrecta tuve que probar de uno en uno hasta dar con que, si quitaba la Fecha todo lo demás funcionaba bien.

O bien quitar ese textBox con ShortDate quitarlo y dejarlo normal para que el usuario ponga a la "fuerza" la fecha escrita en un formato de "DD/MM/YYYY"? Es mi primera vez programando en Access y VBA, así cualquier ayuda me vendría muy bien.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar fecha en tabla de Access

Publicado por Abraham (4 intervenciones) el 05/08/2015 16:11:12
Ya encontré la solución y la comparto por si alguien llega a tener un problema parecido.

Al parecer el nombre de la columna de la Tabla de la fecha era 'Date', y solamente cambiando el nombre a la columna a 'DateC' ya no me marcaba el error de sintaxis. Date es palabra reservada y por eso marcaba el error.

Bueno esa fue mi conclusión del porque del error, tal vez haya otra explicación.

Gracias a todos los que respondieron, saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar