Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Ayuda Problema tipo cadena/date

Buenas, perdón por molestar un sábado . Mi problema consiste en lo siguiente poseo una tabla en SQL llamada Pacientes en la cual tengo un campo pxnacidoen el cual es de tipo date
pxNacidoen date Nullvalue

Poseo el siguiente código
Código Delphi [-]
procedure TfrmPacientes.guardar_datos;
begin
  if nuevo = 1 then
    begin
      DM.QryPacientes.Insert;
      DM.QryPacientesidpaciente.Value := DM.QryPacientes.RecordCount + 1;
    end
  else
    DM.QryPacientes.Edit ;

  with DM do
  begin
    QryPacientespxNombres.Value   := Trim(edtnombre.Text);
    QryPacientespxApellidos.Value := Trim(edtapellido.Text);
    QryPacientespxDocumento.Value := Trim(edtdocumento.Text);
    QryPacientespxCorreo.Value    := Trim(edtdocumento.Text);
    QryPacientespxDireccion.Value := Trim(mdireccion.Lines.Text);
    QryPacientespxTelefonos.Value := Trim(mtelefono.Lines.Text);
    QryPacientespxEstado.Value    := chkactivo.Checked;
    QryPacientespxNacidoen.Value  := dtpnacimiento.Date; //aca el error de tipo string vs tipo date
    QryPacientes.Post;
  end;

  limpiar;
  deshabilitar;
end;

Por lo que pude ver cuando se crean los campo en el adoquery se crea como tipo Twidestring no entiendo el porque si en sql esta muy bien definido. Alguna idea de como solucionar esto. Ya he borrado la tabla y creado nuevamente igual pasa. Alguna ayuda o consejo
Responder Con Cita
  #2  
Antiguo 06-11-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué base de datos estás usando?

Aparte de tu pregunta, esto te puede traer muchos problemas:
Código Delphi [-]
DM.QryPacientesidpaciente.Value := DM.QryPacientes.RecordCount + 1;
Es mejor que uses algo como:
Código SQL [-]
select max(idpaciente)+1 from tbPacientes;
Responder Con Cita
  #3  
Antiguo 06-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Muy buenas casimiro, gracias por el comentario. lo tomare encuenta. Pero la aplicacion que estoy desarrollando no elimina registros solo cambia el estado de true a false; por lo que no habria problema alguno no existe el boton Delete o eliminar .

Por tu pregunta uso Microsft SQL 2014 mas delphi xe7 en la oficina y 10 en la casa. Como dije defino el campo tipo Date pero a la hora de agregar todos los campos al adoquery lo crea como un widestring de ahi viene el problema. he tratado de usar el datetostr pero igual me da error no se que hacer.
Responder Con Cita
  #4  
Antiguo 06-11-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por steelha Ver Mensaje
... cuando se crean los campo en el adoquery se crea como tipo Twidestring ...
¿No puedes cambiarlo manualmente o luego por código?
dtpnacimiento es un datetimepicker, ¿no?
Responder Con Cita
  #5  
Antiguo 07-11-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Si sabes que es un tipo Date, porqué no lo especificas al asignar el valor?

Código Delphi [-]
    QryPacientespxNacidoen.AsDate := dtpnacimiento.Date;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 07-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Si muchas gracias neftali , asi funciona; pero no entiendo el porque si en la tabla de Sql esta declarado como campo tipo DATE cuando agrego los campos al componente la crea como TWIDESTRING. Quiero saber si es que el compoente no soporte el tipo date o debe ser declarado tipo DATETIME en la tabla para que asi lo reconozca.
Responder Con Cita
  #7  
Antiguo 08-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Código Delphi [-]
  if nuevo = 1 then
    begin
      DM.QryPacientes.Insert;
      DM.QryPacientesidpaciente.Value := DM.QryPacientes.RecordCount + 1;
    end
  else
    DM.QryPacientes.Edit ;

  with DM do
  begin
    QryPacientespxNombres.Value   := Trim(edtnombre.Text);
    QryPacientespxApellidos.Value := Trim(edtapellido.Text);
    QryPacientespxDocumento.Value := Trim(edtdocumento.Text);
    QryPacientespxCorreo.Value    := Trim(edtdocumento.Text);
    QryPacientespxDireccion.Value := Trim(mdireccion.Lines.Text);
    QryPacientespxTelefonos.Value := Trim(mtelefono.Lines.Text);
    QryPacientespxEstado.Value    := chkactivo.Checked;
    QryPacientesidSexo.Value      := QrySexoidSexo.Value;
    QryPacientesidEstadoCivil.Value:=QryECidEstadoCivil.Value;
    QryPacientesidZona.Value      := QryZonaidZona.Value;
    QryPacientesidCiudad.Value    := QryCiudadidCiudad.Value;
    QryPacientesidSector.Value    := QrySectoridSector.Value;
    QryPacientesidSeguro.Value         := QryArsidArs.Value;
    QryPacientespxNacidoen.AsDateTime  := dtpnacimiento.DateTime;
    QryPacientes.Post;
  end;

He probado los cambios y todo perfecto siempre y cuando no cambie la fecha. Desde que selecciona una fecha he intento grabar obtengo el error.

First chance exception at $7640DF72. Exception class EDatabaseError with message 'Conversion failed when converting date and/or time from character string'.
Responder Con Cita
  #8  
Antiguo 08-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Muchas gracias doy por terminado este hilo. Utilice la forma mas rapida pero no la que se debe hacer. Cambie el tipo de campo a texto y con esto resuelto todo
Responder Con Cita
  #9  
Antiguo 08-11-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No tiene lógica, a ver si es un problema con la versión de los componentes que estás usando.
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
tipo date jSr MySQL 7 14-11-2007 08:36:57
Locate a una tipo date o time RONPABLO Firebird e Interbase 6 29-11-2004 09:49:04
Problema con IBTable y campos de tipo date y time erickperez6 Conexión con bases de datos 4 14-02-2004 03:22:22
campo tipo date Giniromero Firebird e Interbase 21 13-08-2003 13:47:53
problema al insertar dato tipo date a un stringGrid emil SQL 2 11-07-2003 18:41:34


La franja horaria es GMT +2. Ahora son las 20:24:27.


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