Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
librerias
bibliotecas

Cita:
Empezado por Delphius Ver Mensaje
procedural
procedimental

Y sí, cada fabricante está en la libertad de agregar lo que le venga en gana. Pero hay que ser honestos y notar cómo al que menos le ha interesado ser compatible con los demás (porque en todos ve un "tenebroso fantasma" de competencia) es a Microsoft. Esa actitud es lo que está hundiendo lentamente a la compañía de Redmond.

Mi recomendación para Gustavo (sin conocer lo que sucede en su código) es que, si no hay impedimentos de gran peso, cambie el campo a un tipo de dato estándar, como TimeStamp.

Saludos.
Responder Con Cita
  #2  
Antiguo 15-01-2013
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
bibliotecas


procedimental
Jeje, no me puedo acostumbrar a esa palabra todavía. Vamos término a término... al menos ya digo Bibliotecas

Cita:
Empezado por Al González Ver Mensaje
Mi recomendación para Gustavo (sin conocer lo que sucede en su código) es que, si no hay impedimentos de gran peso, cambie el campo a un tipo de dato estándar, como TimeStamp.
Saludos.
TIME es también estándar amigo. Lo es desde hace un buen tiempo. El tema es que ahora Microsoft en su tipo TIME(p) ha tocado el formato interno y resulta ser que los componentes, controladores, etc no pueden interpretarlo... al menos hasta que salga una nueva versión.
Otra posibilidad es revertir este TIME(p) por alguna de las opciones que se detallan en el enlace que puse unos mensajes antes. Aunque esto no exime a Mocosoft de su culpa... si pones un TIME(p) debes atenerte a las consecuencias y ver el modo de que el resto de los motores y demás herramientas tenga la posibilidad de entenderlo.

En mi búsqueda sobre TIME(7) me he percatado que ha traído más problemas que soluciones. Hay un montón de sitios que se quejan de que desde la incorporación de este tipo especial tienen dificultades para leer los datos. Asi que no es algo propio de Delphi el problemita... es de Mocosoft.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 15-01-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.084
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Esa actitud es lo que está hundiendo lentamente a la compañía de Redmond.
Desgraciadamente para ello, es una de las causas.
Responder Con Cita
  #4  
Antiguo 22-01-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola amigos del foro,

Con todo esto, cómo es que SQL Server existe, si es que para Mocosoft el tipo de dato TIME apenas hasta ahora para ellos existe y además de esto con tantos inconvenientes.

Bueno en resumen Delphi aún no tiene los componentes que puedan interpretar el tipo de datos TIME(p) de Microsoft, la posibilidad que vi fue utilizar el tipo DATETIME.

Ahora cuando pongo un TDatetimepicker en el formulario y cambio su propiedad Kind a dtkTime por ejemplo hoy "22/01/2013", ingreso la hora que me aparece en el campo de tipo DATETIME, cuando visualizo la tabla en una dbgrid me aparece esto: "22/01/2013 09:52:00 a.m", lo pero del caso es que si inserto más información en la tabla, supongamos que dentro de tres días, me aparecerá "22/01/2013 y la hora que haya insertado".

Mi pregunta, cómo se hace para truncar solamente la hora del campo tipo DATETIME a fin de que en la grilla me aparezca solamente la hora y nada más.

He probado la sugerencia que me hace Al González. me sigue generando error...

Mil gracias de antemano por toda vuestra ayuda
Responder Con Cita
  #5  
Antiguo 22-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
La presentación en pantalla la arreglas con la conocida propiedad DisplayFormat, pero aún así, un campo de tipo TimeStamp te estará guardando fecha y hora (no solamente hora). Claro está que si te aseguras de que la parte entera de ese campo sea siempre 0 (1899-12-30) en todos los registros, sería como guardar "solo" la hora.

Mi sugerencia de usar ese tipo es por lo que comentaba Delphius, acerca de que Microsoft decidió cambiar el formato interno del tipo Time. Pero vamos, quiero pensar que todavía puedes usar el tipo Time (como debe ser cuando sólo se quiere guardar horas y no fechas).

Rectificando, creo que debes ir a la verdadera raíz del problema. Echa un vistazo a este otro hilo: http://clubdelphi.com/foros/showthread.php?t=30026

Sinceramente no soy muy partidario de trabajar con MS SQL Server y ADO, dadas las cuestionables características que Microsoft le ha ido agregando a ambas tecnologías (con el principal afán de vender) y los retrasos y situaciones inesperadas que luego causan esas "grandes" ideas. Desafortunadamente, para conectarse a MS SQL Server desde Delphi, me parece que ADO sigue siendo una de las opciones más viables , así que toca aguantarse y encontrar la causa verdadera de cada situación extraña que surge.

Espero te sirva el enlace que puse.

Saludos.
Responder Con Cita
  #6  
Antiguo 22-01-2013
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por GustavoCruz Ver Mensaje
Hola amigos del foro,

Con todo esto, cómo es que SQL Server existe, si es que para Mocosoft el tipo de dato TIME apenas hasta ahora para ellos existe y además de esto con tantos inconvenientes.

Bueno en resumen Delphi aún no tiene los componentes que puedan interpretar el tipo de datos TIME(p) de Microsoft, la posibilidad que vi fue utilizar el tipo DATETIME.

Ahora cuando pongo un TDatetimepicker en el formulario y cambio su propiedad Kind a dtkTime por ejemplo hoy "22/01/2013", ingreso la hora que me aparece en el campo de tipo DATETIME, cuando visualizo la tabla en una dbgrid me aparece esto: "22/01/2013 09:52:00 a.m", lo pero del caso es que si inserto más información en la tabla, supongamos que dentro de tres días, me aparecerá "22/01/2013 y la hora que haya insertado".

Mi pregunta, cómo se hace para truncar solamente la hora del campo tipo DATETIME a fin de que en la grilla me aparezca solamente la hora y nada más.

He probado la sugerencia que me hace Al González. me sigue generando error...

Mil gracias de antemano por toda vuestra ayuda
Tanto TTime como TDate son simplemente dos alias de un TDateTime. El primero almacena una fecha "vacía" y el segundo una hora "vacía".
El asunto del TDateTimePicker es que por más que establezcas dtkTime o dtkDate seguirá internamente registrando la hora y fecha respectivamente, conteniendo en ellas un dato "basura" y almacenando en la contraparte el valor real necesitado.

Es responsabilidad del programador cuando obtiene un TDate o un TTime desde un resultado TDateTime leer y tratar específicamente la parte en cuestión e ignorar el resto. Como bien dice Al, una buena alternativa es utilizar DisplayFormat e indicar que sólo muestre la fecha o la hora respectivamente.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 23-04-2013
marinaAv marinaAv is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 15
Poder: 0
marinaAv Va por buen camino
Exclamation

hola compañeros ...

Última edición por Casimiro Notevi fecha: 23-04-2013 a las 21:17:01.
Responder Con Cita
  #8  
Antiguo 23-04-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.084
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esto no es una respuesta para ayudar al que inició este hilo.
Por favor, crea un hilo nuevo y no hagas las preguntas en cualquier otro hilo que te encuentres.
Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
campos memo, autoincremental y time anubis Firebird e Interbase 4 10-02-2008 16:23:22
Interbase/Firebird y campos TIME marcial Conexión con bases de datos 5 16-04-2007 20:03:20
time, comparar 2 campos ttime Pascual Montes Varios 2 29-03-2005 19:50:47
Campos DateTime recibiendo Time amesoft Conexión con bases de datos 1 25-02-2005 22:22:23
campos time/timestamp Giniromero Firebird e Interbase 15 16-12-2003 14:26:23


La franja horaria es GMT +2. Ahora son las 22:29:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi