Access - Enrique Por Favor me ayudas

   
Vista:

Enrique Por Favor me ayudas

Publicado por Sandra Verónica (203 intervenciones) el 20/11/2007 14:40:25
Hola Enrique, perdon por molestar pero necesitaria tu ayuda.
Tengo este código con el cual quiero almacenar tres fechas en una tabla que se llama ACTUALIZACIONES, PERO la unica que me almacena es Actualizaciones.FechaAct para las otras dos me pide que ingrese el valor del parametro.
Porque es?

Saludos

Sandra!

*******************************************************************************

Private Sub Comando0_Click()

Dim rst As DAO.Recordset

Dim fso As New FileSystemObject
Dim f As File
Dim s As File
Dim SQL As String
Dim Fecha1 As String
Dim Fecha2 As String

Set rst = CurrentDb.OpenRecordset("SELECT Name, DateUpdate FROM MSysObjects WHERE Name='Deuda_Actualizada_Al'")
Set rst1 = CurrentDb.OpenRecordset("SELECT Name, DateUpdate FROM MSysObjects WHERE Name='Deuda_Sap'")
Set rst2 = CurrentDb.OpenRecordset("SELECT * FROM [Actualizaciones]")

Set f = fso.GetFile("S:\Deuda Diaria al DIA.xls")
Set s = fso.GetFile("S:\DeudaSap.xls")

Fecha1 = Left(f.DateLastModified, 10)
Fecha2 = Left(s.DateLastModified, 10)

SQL = "Update Actualizaciones " & _
"SET Actualizaciones.FechaAct = Date(), " & _
"Actualizaciones.FechaXlsMC = Fecha1, " & _
"Actualizaciones.FechaXLSSap = Fecha2"

DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True

End Sub
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

RE:Enrique Por Favor me ayudas

Publicado por Enrique (1299 intervenciones) el 20/11/2007 18:48:22
Hola Sandra:
Así es muy dificil para mi ver donde está el fallo porque hay partes que no entiendo, por ejemplo ¿ para qué abres al principio tres Recordset (rst, rst1 y rst2) ?

Luego las variables Fecha1 y Fecha2 las defines "As String" y esas fechas, según veo deben de grabarse en los Campos "FechaXlsMC" y "FechaXLSSap" de la Tabla "Actualizaciones", pero si estos campos son de tipo Fecha/Hora se producirá un error. Por otra parte tampoco sé si la Consulta de actualización por código de nombre SQL está bien construida.

Prueba a difinir las variables Fecha1 y Fecha2 "As Date" y comprueba tambien si al asignarle valor con Fecha1 = Left(f.DateLastModified, 10) y Fecha2 = Left(s.DateLastModified, 10), toman correctamente la fecha de los archivos de Excel (xls). En el caso de que tomen el valor correcto, el fallo estará en la Sentencia SQL y ahí es donde tendremos que centrarnos para construirla correctamente. La primera fecha la almacena bien porque es la Fecha actual del Sistema (Date) y esa es de tipo fecha con seguridad, pero las otras dos, no parecen que sean de tipo fecha.

Comprueba esto y veremos lo que puede hacerse.

Un saludo
Enrique
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

RE:Enrique Por Favor me ayudas

Publicado por Sandra Verónica (203 intervenciones) el 20/11/2007 19:00:36
Hola Enrique, gracias por la tu ayuda "NUEVAMENTE".
Te cuento que pase las Fecha1 y Fecha2 a Date. Si creo una msgbox con Fecha1 me muestra 19/11/2007. Asi que creo que el problema esta en la sentencia SQL.
Los recorset los creo para utilizarlos en otro poceso.
Saludos
Sandra!
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

RE:Enrique Por Favor me ayudas

Publicado por Enrique (1299 intervenciones) el 21/11/2007 18:42:53
Hola Sandra:
No sé si lo habrás resuelto ya, pero por si acaso aqui tienes la solución. Fecha1 y Fecha2 debes definirlas como las tenías al principio "As String" ya que cuando extraes esas fechas de los archivos de Excel, son Texto y luego le daremos formato Fecha con "Format", como verás más abajo:

Dim Fecha1 As String
Dim Fecha2 As String

Set f = fso.GetFile("S:\Deuda Diaria al DIA.xls")
Set s = fso.GetFile("S:\DeudaSap.xls")

Fecha1 = Format(Left(f.DateLastModified, 10), "dd/mm/yyyy")
Fecha2 = Format(Left(s.DateLastModified, 10), "dd/mm/yyyy")

SQL = "UPDATE Actualizaciones SET FechaAct = Date(), FechaXlsMC =#" & Fecha1 & "#" & ",FechaXLSSap =#" & Fecha2 & "#"

DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True

La línea del SQL escríbela toda seguida en una sola línea exactamente como te la pongo aquí y no la partas en varias líneas. Yo lo he probado y me funciona perfectamente. Por supuesto, los campos de la Tabla deben ser tipo "Fecha/Hora".

Espero que te funciona bien. Un saludo
Enrique
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

RE:Enrique Por Favor me ayudas

Publicado por Sandra Veronica (203 intervenciones) el 21/11/2007 20:24:47
Enrique lo habia intentado como me decis, pero ponia las comillas delante del simbolo #.
Como siempre .... impecable lo tuyo. Otra vez ... un millón de gracias!!!!
Un fuerte abrazo
Sandra!
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

RE:Enrique Por Favor me ayudas

Publicado por Enrique (1299 intervenciones) el 22/11/2007 22:43:08
Hola Sandra:

Pués no está tan impecable, hay un fallo y me extraña que no lo hayas notado, a las Fechas hay que darle formato americano: Mes / Dia / Año en lugar de formato europeo: Dia / Mes / Año, de esta forma:

Fecha1 = Format(Left(f.DateLastModified, 10), "mm/dd/yyyy")
Fecha2 = Format(Left(s.DateLastModified, 10), "mm/dd/yyyy")

No sé como se me ha escapado este detalle, ya que es de sobra conocido que cuando se tratan las fechas en Consultas SQL hay que darles formato mes-dia-año.

Un saludo
Enrique
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

RE:Enrique Por Favor me ayudas

Publicado por Sandra Verónica (203 intervenciones) el 30/11/2007 22:18:24
Querido Enrique .... de eso ya me habia dado cuenta .... gracias a un post que puso Chea ... avisando que en SQL se debe dar el formato americano. Gracias Igual por el consejo.
Besitos
Sandra!
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