insertar fecha con un API en access desde visual basic

Iniciado por almita, 20 Julio 2005, 15:48 PM

0 Miembros y 1 Visitante están viendo este tema.

almita

hola  tengo una duda de como insertar este campo en mi tabla, necesito hacer una bitacora pero la estoy tratando de insertar asi: & .wDay & "/" & .wMonth & "/" & .wYear & "/" & .wHour & ":" & .wMinute & ":" & .wSecond pero no es insertada como la estoy tomando del sistema no se si es asi como debe ir para insertarlo en mi campo si alguien pudiera hubicarme se los agradezco

EstoyBaneado

si podrias especificar mas seria genial.
fijate si son las variables que estan vacias. aunque veo el formato que estas poniendo, creo que te conviene mas poner en vez de todo eso, usar la funcion "now()"

salu2
Fui baneado por decir lo que pienso...
No importa, rezare por uds... y eso que soy ateo xD

almita

saludos, hola
pues miralo que etoy haciendo es una bitacora en un sistema y lo que quiero es insertar este campo por medio de las APIs y el problema esque no se como es el formato tambien obtengo el usuario etc pero falta este la funcion que estoy usando es esta
Public Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)

Dim LocalTime As SYSTEMTIME
GetLocalTime LocalTime
   
   With LocalTime
        MsgBox "Fecha " & .wDay & "/" & .wMonth & "/" & .wYear & "/" & .wHour & ":" & .wMinute & ":" & .wSecond
   End With   
  pero no se si para insertar este campo en access va  asi
o que, por que cuando lo obtenemos de un texbox es dd/mm/yyyy
bueno espero respuesta te agradezco la atencion a y mucho gusto

goodbye

#3
Quizas tu problema es que el field donde lo estas guardando lo tienes como Fecha/hora.

Cambiale el tipo y el formato de presentacion al campo a texto y vuelves a probarlo; en definitiva lo que tu haces es concatenar y ya eso es mejor tratarlo como texto, porque es muy probable que el formato Fecha/hora del campo aun lo entienda y te lo este abreviando.

Nota: No olvides que el campo Texto en Access lleva un limite de 50 caracteres por defecto pero lo puedes aumentar hasta 255; eso por si no puedes guardar desde el primer momento toda esa cadena.
Y si fuera poco 255 usa un campo Memo, pero ya eso seria para una exageracion de texto  :P

Saludos.
Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.

EstoyBaneado

emmm, crackerl, eso no tiene sentido. si pones las fechas en formato de Texto despues se hace dificil hacer las consultas y todo lo demas. Como dije antes, lo que te conviene hacer es:
en vez de usar las apis y concatenar la fecha y la hora, pasale al access directamente la funcion now()

fijate como queda:  Msgbox Now

devuelve exactamente como quieres la fecha. y hasta puedes darle formato, con la funcion FormatDateTime.

si tenes alguna duda avisame.

salu2 y espero haberte ayudado.
Fui baneado por decir lo que pienso...
No importa, rezare por uds... y eso que soy ateo xD

goodbye

#5
Citaremmm, crackerl, eso no tiene sentido. si pones las fechas en formato de Texto despues se hace dificil hacer las consultas y todo lo demas. Como dije antes, lo que te conviene hacer es:
en vez de usar las apis y concatenar la fecha y la hora, pasale al access directamente la funcion now()

Nada tengo contra la funcion Now.

Lo que sucede es que me pongo un poco en su lugar. Porque a veces cada cual desea guardar sus datos a su manera y para eso el menos problematico es el tipo Texto.
Pienso que su dificultad radica en que no tiene en cuenta el tipo o el formato del campo que usa para guardar semejante String.

Saludos.
Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.

Slasher-K

El tipo de campo Date ocupa 8 bytes, el texto según el formato que le de puede ocupar más o menos lo que haría la base de datos muy grande, además trabajar con texto es mucho más lento que trabajar con campos de tipo fecha.

Ahora a tu pregunta, para guardar todo eso en un campo de tipo Fecha existe la función DateSerial y TimeSerial, las cuales devuelven un tipo de datos Date ingresando cada parte de la fecha y hora. Podrías escribir una función para que devuelva un tipo Date a partir de la estructura SYSTEMTIME. Por ejemplo:


Function SysTimeToDate(TimeSpec As SYSTEMTIME) As Date
  With TimeSpec
    SysTimeToDate = CDate(DateSerial(.wYear, .wMonth, .wDay) & " " & TimeSerial(.wHour, .wMinute, .wSecond))
  End With
End Function


Saludos.



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*

almita

pues muchas gracias chicos boy a provar la funcion y el codigo que me dieron luego les aviso si furulo este asunto y con que
muchisimas gracias nuevamente