Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
Fecha: ¿como Se El Formato Del Pais Donde Se Esta Ejecutando El Programa?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Fecha: ¿como Se El Formato Del Pais Donde Se Esta Ejecutando El Programa? 
 
jguardon y resto de compañeros que han respondido:

Seguramente algo estoy haciendo mal.

Mi problema empezo con un filtro por fecha de la una base de datos sqlite.

Con esta sentencia:
 no_filtra_bien
generada por:
Citar:
  sentenciasql = Subst$("SELECT * FROM VistaAlbaranesAlmacen where fecha like '%&1%'", Date(Year(fecha), Month(fecha), Day(fecha)))
  

No funciona


Pero con esta:
 filtra_bien
Si funciona. (este cambio lo hago con una función)

Fijaos que el "/" se ha sustituido por "-" (ademas de cambiar el orden de dia/mes/año).  

Seguro que algo estoy haciendo mal, pero no que o en que parte he metido "la pata"

Nota:
Al final lo he solucionado con una pequeña chapuza, que es que el usuario indique el formato en que le aparezca la fecha, y asi la funcion que genera la fecha con guiones sabe como crear la fecha del formato y orden correcto para que se forme la sentencia sql  correctamente:
Public Sub cambiarFecha(f As String) As String
  
  Dim anno As String
  Dim dia As String
  Dim mes As String
  
 If Settings["modofecha", "mes/dia/año"] = "mes/dia/año" Then
  
  dia = Mid$(f, 4, 2)
  mes = Mid$(f, 1, 2)  
  anno = Mid$(f, 7, 4)
  
   Else
   dia = Mid$(f, 1, 2)
   mes = Mid$(f, 4, 2)
   anno = Mid$(f, 7, 4)
  '
   Endif
  '
    
  
  Return anno & "-" & mes & "-" & dia
  
End

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fecha: ¿como Se El Formato Del Pais Donde Se Esta Ejecutando El Programa? 
 
Veo dos problemas:

1.-Una fecha es un número que se interpreta luego según el programa que lo consulte. No puedes hacer un like a un número. Sólo hay uno.
En otras palabras: Like es un operador (lo pongo en negrita) de búsqueda ambigua y difusa, que se debe utilizar en muy raras ocasiones porque genera resultados espúreos.
Por otra parte si utilizas like (cómo) sobre una fecha le estás pidiendo que busque en la tabla un campo que sea como la representación que un programa hace del número que contiene el campo.
Es enrevesado y "antinatural". Si buscas fechas busca por =, >, <, <>, etc. entonces no tendrás ningún problema.

2.-Estás siendo "engañado" por mysqlite. Como ya he dicho en otras ocasiones, sqlite no almacena tipos de datos, sólo carateres de texto. Todos los campos, los definamos como los definamos, son de texto (sqlite maneja el concepto que llama "afinidad de tipos" (hablo de memoria) que se traduciría por "Un dato que puede ser convertido en", pero lo almacenado es texto y se permite alamacenar cualquier cosa en cualquier columna. En otra base de datos más convencional te habría generado un error de tipo de datos al buscar.

Ignoro la cadena exacta que se almacena de verdad cuando almacenas una fecha (habría que destripar la base de datos para verlo), pero no hagas búsquedas de texto sobre campos de fechas. Usa las funciones de gambas y no tendrás problemas.
Cambia tu consulta a
sentenciasql = Subst$("SELECT * FROM VistaAlbaranesAlmacen where fecha = &1", fecha)

y te funcionará.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fecha: ¿como Se El Formato Del Pais Donde Se Esta Ejecutando El Programa? 
 
Shordi:

Gracias, voy a revisar mi código.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fecha: ¿como Se El Formato Del Pais Donde Se Esta Ejecutando El Programa? 
 
A ver. Lo que yo vengo haciendo para trabajar con sqlite y postgresql con respecto a las fechas es trabajar con dos conceptos:
1) El campo donde guardo las fechas es tipo texto, en sqlite test en postgresql vchar.
2) EL formato es AAAAMMDDHHNNSSUU en su versión mas precisa (es el formato iso)
Al trabajar de esta manera se terminaron todos los problemas y todo funciona siempre no hay ambiguedades y puedes hacer vistas donde ves el año, mes, dia hora etc. a voluntad. Lo mejor de este método es la portabilidad, pues si tienes que migrar la base de sqlite a postgresql todo pasa bien.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mensaje Mientras Se Esta Ejecutando Una Su... jsbsan General 9 Lunes, 22 Noviembre 2010, 21:04 Ver último mensaje
Cubel
No hay nuevos mensajes Saber Si Se Esta Ejecutando Desde El IDE [... tincho Aplicaciones/Fragmentos de Código 7 Viernes, 16 Diciembre 2016, 00:17 Ver último mensaje
tincho
No hay nuevos mensajes Donde Esta El Código Fuente De ScrollBar? v3ctor Controles/Librerías/Componentes 6 Viernes, 12 May 2017, 17:59 Ver último mensaje
vuott
No hay nuevos mensajes ¿Es Posible Saber Donde Esta El Foco? gambafeliz General 7 Jueves, 21 Noviembre 2019, 18:18 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron