Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Talking Error En Campo Fecha

RESULTA QUE CUANDO CONSULTO UN DETERMINADO REGISTRO DE LA BASE DE DATOS EN EL CUAL EN UNA COLUMNA DE TIPO DATETIME. HAGO LA SIGUIENTE CONSULTA.
Código Delphi [-]
  with Fmodulo.qry_registra do
   begin
     SQL.Clear;
     SQL.Add('select * from volantes');
     SQL.Add('where volante=:volante_a_buscar');
     Parameters.ParamByName('volante_a_buscar').Value:=Trim(wbuscar);
     try
      open;
      if not Fmodulo.qry_registra.IsEmpty then
       begin
        Fregistro.wmodificar:=FieldByname('id_volante').AsString;
        Fregistro.txtoficio.Text:=FieldByname('volante').AsString;
        Fregistro.txtremitente.Text:=FieldByname('remitente').AsString;
        Fregistro.txtfirmado.Text:=FieldByname('firmado_por').AsString;
        fregistro.txtasunto.Text:=FieldByname('asunto').AsString;
        Fregistro.txtrecibio.Text:=FieldByname('recibe').AsString;
        fregistro.txtarchivo.Text:=FieldByname('archivo_en').AsString;
        ShortDateFormat := 'dd/mm/yyyy';
        fregistro.dtp_fecha_oficio.Date:=StrToDate(FieldByname('fecha_oficio').asString);
        fregistro.dtp_fecha_recibido.Date:=StrToDate(FieldByname('fecha_recibido').asString);
        {registros de distribucion}
        Fregistro.dtp_fecha_turno.DateTime:=StrToDate(FieldByname('fecha_turnado').AsString);        
        Fregistro.cb_personal.Text:= FieldByname('TURNADO_A').AsString;
        Fregistro.txtinstrucciones.Text:=FieldByname('para').AsString;
        {termina registros de distribucion}
        Fregistro.widentificador:=1;
        exit;
       end
      else
       begin
         Fregistro.widentificador:=0;
       end;
     except
      on E:EOleException do
        begin
        MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
        exit;
       end;
     end;
   end;

BIEN CUANDO HAY UN REGISTRO EN EL QUE AUN NO TIENE UNA FECHA. AL REGRESAR UN CAMPO DE TIPOD FECHA PARA CARGARLO AL tDATETIME ME MANDA EL SIGUIENTE ERROR

IS NOT A VALID DATE.

ALGUIEN SABER COMO PONER UNA FECHA EN UN TDATE CUANDO EL CAMPO DE LA BASE DE DATOS DE TIPO FECHA ESTA VACIO?
Responder Con Cita
  #2  
Antiguo 06-09-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Añádele la información:

TDateTime necesita un formato de dd/mm/yyyy hh:mm:ss

En este caso puedes hacer dos opciones

Fregistro.dtp_fecha_turno.DateTime:=StrToDate(FieldByname('fecha_turnado').AsString);
El dato fecha_turnado puede ser vacío ¿verdad?

If FieldByname('fecha_turnado').Value is null then << lo que quieras >>
Posicionarlo como "clear" de tal manera que en la base queda en blanco.

Asígnarle una fecha por defecto, o si el campo es un formato dd/mm/yyyy deberás añadirle la hora.

Sino, también puedes capturar el código crítico

Try

Fregistro.dtp_fecha_turno.DateTime:=StrToDate(FieldByname('fecha_turnado').AsString);
Except << aquí metes el código para el error >>>
por ejemplo: Fregistro.dtp_fecha_turno.DateTime := nil
End;//del try

No recuerdo si se le asigna con nil. Sino puedes utilizar la opción de asignarle la fecha por defecto que requieras.

Saludos.
Responder Con Cita
  #3  
Antiguo 06-09-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Código Delphi [-]
Fregistro.dtp_fecha_turno.DateTime:=FieldByname('fecha_turnado').AsDateTime;

siempre y cuando tu fecha sea fecha... me refiero a que el campo fecha, este definido como fecha... por que una fecha es una fecha, ¿o no?. No se porque la manía de creer que una fecha es una cadena... pero bueno... de echo, uan fecha es un número.
__________________


Última edición por ContraVeneno fecha: 06-09-2010 a las 18:37:17.
Responder Con Cita
  #4  
Antiguo 06-09-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
contraveneno

probe de mil formas de insertar fecha, ahora bien lo que utilizo es ADO, ahora el ejemplo que pones no hay ninfun problema el problema es cuando en el campo de tipo fecha no tengo registrada una fecha es decir esta vacio.
Responder Con Cita
  #5  
Antiguo 07-09-2010
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.333
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
Cita:
Empezado por microbiano Ver Mensaje
...el problema es cuando en el campo de tipo fecha no tengo registrada una fecha es decir esta vacio.
¿No puedes preguntar antes de asignar si el campo es nulo?
__________________
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-09-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Talking Listo Resuelto El Problema

JEJEJE CAPTURE LA EXCEPCION JEJEJE DEJO EL CODIGO
Código Delphi [-]
with Fmodulo.qry_registra do
   begin
     SQL.Clear;
     SQL.Add('select * from volantes');
     SQL.Add('where volante=:volante_a_buscar');
     Parameters.ParamByName('volante_a_buscar').Value:=Trim(wbuscar);
     try
      open;
      if not Fmodulo.qry_registra.IsEmpty then
       begin
        Fregistro.wmodificar:=FieldByname('id_volante').AsString;
        Fregistro.txtoficio.Text:=FieldByname('volante').AsString;
        Fregistro.txtremitente.Text:=FieldByname('remitente').AsString;
        Fregistro.txtfirmado.Text:=FieldByname('firmado_por').AsString;
        fregistro.txtasunto.Text:=FieldByname('asunto').AsString;
        Fregistro.txtrecibio.Text:=FieldByname('recibe').AsString;
        fregistro.txtarchivo.Text:=FieldByname('archivo_en').AsString;
        ShortDateFormat := 'dd/mm/yyyy';
        fregistro.dtp_fecha_oficio.Date:=StrToDate(FieldByname('fecha_oficio').asString);
        fregistro.dtp_fecha_recibido.Date:=StrToDate(FieldByname('fecha_recibido').asString);
        {registros de distribucion y verifico que no me traiga una
        fecha vacio si es asi le pongo la fecha actual}
        try
         Fregistro.dtp_fecha_turno.DateTime:=StrToDate(FieldByname('fecha_turnado').AsString);
        except
         on EConvertError do
     
          Fregistro.dtp_fecha_turno.DateTime:=Now;
         end;
        Fregistro.cb_personal.Text:= FieldByname('TURNADO_A').AsString;
        Fregistro.txtinstrucciones.Text:=FieldByname('para').AsString;
        {termina registros de distribucion}
        Fregistro.widentificador:=1;
        exit;
       end
      else
       begin
         Fregistro.widentificador:=0;
       end;
     except
      on E:EOleException do
        begin
        MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
        exit;
       end;
     end;
   end;

AHORA BIEN ME SIGUE LA DUDA DEL POR QUE NO PUEDO USAR PARAMETROS PARA GENERAR MIS CONSULTAS:


LO QUE PARA UNOS ES FACIL HACER UN SERT DE LA SIGUIENTE MANERA :
Código Delphi [-]
      SQL.Clear;
      sql.Add('Insert into sap_serv(nombreserv,cuota)');
      SQL.Add('Values( :servicio, :cuota)');
      Parameters.ParamByName('servicio').Value:=wservicio;
      Parameters.ParamByName('cuota').Value:=wcuota;

YO LO TENGO QUE HACER ASI
Código Delphi [-]
 sql.Clear;
     sql.Add(' insert into sap_contrato (');
     Sql.Add(' nocontrato ,');    //1
     sql.Add(' nombre ,');//2
     sql.Add(' paterno ,');//3
     sql.Add(' materno ,');//4
     sql.Add(' ncompleto, '); //5
     sql.Add(' localidad ,');//6
     sql.Add(' calle ,');//7
     sql.Add(' noext ,');//8
     sql.Add(' noint ,');//9
     sql.Add(' cp ,');//10
     sql.Add(' fecharegistro ,');//111
     sql.Add(' telefono ,');//12
     sql.Add(' observacio, ');//13
     sql.add(' status ');//14
     sql.Add(' ) values (');
     sql.Add(' '+QuotedStr(wnocontrato)+', ');//1
     sql.Add(' '+QuotedStr(wnombre)+', ');//2
     sql.Add(' '+QuotedStr(wpaterno)+', ');//3
     sql.Add(' '+QuotedStr(wmaterno)+', ');//4
     sql.Add(' '+QuotedStr(wcompleto)+', '); //5
     sql.add(' '+QuotedStr(wlocalidad)+', ');//6
     sql.Add(' '+QuotedStr(wcalle)+', ');//7
     sql.Add(' '+IntToStr(wnoint)+', ');//8
     sql.Add(' '+inttostr(wnoext)+', ');//9
     sql.Add(' '+Inttostr(wcp)+', '); //10
     sql.Add(' '+QuotedStr(DateToStr(wfechare))+', ');//11
     sql.Add(' '+QuotedStr(wtel)+', ');//12
     sql.Add(' '+QuotedStr(wobs)+', ');//13
     sql.Add(' '+Inttostr(westatus) +')');//14
      ExecSQL;

AHORA LO QUE PREGUNTO ES HAY AKLGUNA EXTRAÑA RAZON DEL PORQUE ALGUNOS PUEDEN USAR PARAMETROS Y OTROS NO, O DEPENDE DE LA BASE DE DATOS O DE LOS COMPOMENTES QUE SE USAN PARA ACCEDER A ELLOS O DE LAS USES.

MIS USES

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls,ADODB,ComObj,DateUtils;

MIS COMPONENTE SON

ADOCONEXION,ADOQUERY,ADOSTOREPROCEDURE.


Y MI BASE DE DATOS ES

SQLSERVER 2000

CONTRAVENENO, QUE USES TIENES REGISTRADAS, QUE BASE DE DATOS USAS Y QUE COMPONENTES?

ESPERO ME RESPONDAN :-)

Última edición por microbiano fecha: 07-09-2010 a las 17:24:42. Razón: modificar el mensaje
Responder Con Cita
  #7  
Antiguo 07-09-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
sigue mi duda con parametros

bueno resulta que ya investigue y al parecer no encuentro la respuesta a mi duda del porque no puedo usar parametros en las instrucciones sql lo que para unos hacer un insert es tan facil como
Código Delphi [-]
 SQL.Clear;
      sql.Add('Insert into sap_serv(nombreserv,cuota)');
      SQL.Add('Values( :servicio, :cuota)');
      Parameters.ParamByName('servicio').Value:=wservicio;
      Parameters.ParamByName('cuota').Value:=wcuota;

yo tengo que hacer lo siguiente
Código Delphi [-]
sql.Clear;
     sql.Add(' insert into sap_contrato (');
     Sql.Add(' nocontrato ,');    //1
     sql.Add(' nombre ,');//2
     sql.Add(' paterno ,');//3
     sql.Add(' materno ,');//4
     sql.Add(' ncompleto, '); //5
     sql.Add(' localidad ,');//6
     sql.Add(' calle ,');//7
     sql.Add(' noext ,');//8
     sql.Add(' noint ,');//9
     sql.Add(' cp ,');//10
     sql.Add(' fecharegistro ,');//111
     sql.Add(' telefono ,');//12
     sql.Add(' observacio, ');//13
     sql.add(' status ');//14
     sql.Add(' ) values (');
     sql.Add(' '+QuotedStr(wnocontrato)+', ');//1
     sql.Add(' '+QuotedStr(wnombre)+', ');//2
     sql.Add(' '+QuotedStr(wpaterno)+', ');//3
     sql.Add(' '+QuotedStr(wmaterno)+', ');//4
     sql.Add(' '+QuotedStr(wcompleto)+', '); //5
     sql.add(' '+QuotedStr(wlocalidad)+', ');//6
     sql.Add(' '+QuotedStr(wcalle)+', ');//7
     sql.Add(' '+IntToStr(wnoint)+', ');//8
     sql.Add(' '+inttostr(wnoext)+', ');//9
     sql.Add(' '+Inttostr(wcp)+', '); //10
     sql.Add(' '+QuotedStr(DateToStr(wfechare))+', ');//11
     sql.Add(' '+QuotedStr(wtel)+', ');//12
     sql.Add(' '+QuotedStr(wobs)+', ');//13
     sql.Add(' '+Inttostr(westatus) +')');//14
      ExecSQL;

AHORA LO QUE PREGUNTO ES HAY AKLGUNA EXTRAÑA RAZON DEL PORQUE ALGUNOS PUEDEN USAR PARAMETROS Y OTROS NO, O DEPENDE DE LA BASE DE DATOS O DE LOS COMPOMENTES QUE SE USAN PARA ACCEDER A ELLOS O DE LAS USES.

mis uses

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls,ADODB,ComObj,DateUtils;


IS COMPONENTE SON

ADOCONEXION,ADOQUERY,ADOSTOREPROCEDURE.


Y MI BASE DE DATOS ES

SQLSERVER 2000

CONTRAVENENO, QUE USES TIENES REGISTRADAS, QUE BASE DE DATOS USAS Y QUE COMPONENTES?

ESPERO ME RESPONDAN :-)
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
error al insertar campo de tipo fecha con paramtero microbiano Conexión con bases de datos 14 30-08-2010 18:01:31
Error en campo fecha, con SQL Server 2005 Carmelo Cash Conexión con bases de datos 3 21-08-2008 21:33:59
error al buscar campo tipo fecha fernando1973 SQL 2 18-05-2007 14:22:37
Error al hacer insert (campo fecha) en firebird con fibplus Acanol Firebird e Interbase 7 15-06-2006 09:05:07
Error en update campo tipo fecha dridly SQL 1 24-09-2004 14:27:37


La franja horaria es GMT +2. Ahora son las 14:19:59.


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