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 10-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Puedes copiarnos la estructura de la tabla de tu base de datos y algún ejemplo de código para probar?
La estructura de la tabla:

Código SQL [-]
CREATE TABLE VENTA (
    CVE_PUNTO_VENTA              NUMERIC(10,0) NOT NULL,
    COSTO_LITRO                  NUMERIC(8,2),
    FECHA_REGISTRO_VENTA         DATE,
    FECHA_ACTUALIZACION          DATE,
    ANIO_PERIODO_CIERRE          NUMERIC(4,0),
    CLAVE_RUTA                   NUMERIC(4,0),
    OBSERVACIONES_DISTRIBUCION   BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    USUARIO_ACTUALIZADOR         VARCHAR(15),
    USUARIO_REGISTRADOR          VARCHAR(15),
    HORA_ENTREGA                 TIMESTAMP,
    FOLIO_IMPRESO                NUMERIC(10,0),
    CLAVE_PLANTA                 NUMERIC(5,0),
    CLAVE_RUTA_REPARTIDOR        NUMERIC(5,0),
    CLAVE_CIA                    NUMERIC(5,0),
    SECUENCIA_DISTRIBUCION       NUMERIC(2,0),
    RESPONSABLE_DEVOLUCION       NUMERIC(1,0),
    HORA_ENTREGA_TXT             VARCHAR(5),
    CONTINGENCIA                 VARCHAR(1)
);
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 11-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No recuerdo si firebird 2.0 tiene el tipo "time", puedes usar ese si lo tiene, es que timestamp guarda fecha y hora, de ahí el mensaje de error.

Edito: Deberías plantearte cambiar la versión, al menos la 2.5 si no quieres grandes cambios, hay diferencias importantes para mejor.
La versión 2.0 es de hace 17 años (2006). Ya está la versión 5 en modo "release".

Última edición por Casimiro Notevi fecha: 11-11-2023 a las 10:39:46.
Responder Con Cita
  #3  
Antiguo 11-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por cierto, he hecho una prueba con una tabla con un campo timestamp y no ha habido problema:
Código SQL [-]
insert into EJEMPLO3 (ID, NOMBRE, SUELDO, HORANACIMIENTO) values ( 5, 'NOMBRE', 999, '04:05:00' );

Edito: Era una versión más nueva de firebird. Con la versión 2 no veo el tipo "time", no sé si te viene bien guardar la hora en formato texto '20:15:18', por ejemplo.
La otra opción es seguir usando timestamp y "pasar" de la fecha, puedes guardar la hora con la fecha actual o poner siempre una misma fecha, y depende de lo que mejor te venga.

Última edición por Casimiro Notevi fecha: 12-11-2023 a las 11:26:05.
Responder Con Cita
  #4  
Antiguo 12-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usando dialecto 3 puedes tener campos sólo fecha y campos sólo hora, ejemplo:


Responder Con Cita
  #5  
Antiguo 13-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Usando dialecto 3 puedes tener campos sólo fecha y campos sólo hora, ejemplo:


Hola Casimiro, gracias por las aportaciones, las cuales también las he pensado, buscando "otra forma" de darle la vuelta al error. En mis mensajes anteriores a este hilo, comenté que ya había cambiado el tipo de dato a TIME en BD. y me marcó el mismo error.

A nivel de tabla, SQL, B.D. no tengo problema, el UPDATE que hice de prueba funcionó, se aplicó la actualización sin problema, el problema esta desde DELPHI, ahí no me permite aplicar el update del DataSet asociado. El dato "01:41" que es capturado por el usuario en un objecto TMaskEdit, algo tiene que al momento de dar click sobre el botón que dispara el proceso de actualización, marca error.

En fin, seguiré viendo opciones, por lo pronto este fin de semana pasado, no me ocupe, quise distraerme un poco, porque ya tengo 1 semana (talvez un poco mas) tratando de resolver este problema.

Saludos y muchas gracias x tu tiempo, a ti y a todos lo que han leido este hilo. Sigo buscando la solución....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #6  
Antiguo 13-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por si acaso, me parece recordar que la hora debe indicar también los segundos: 20:35:00
Te prepararé un ejemplo desde delphi, ¿los componentes IB son los IBX?
Responder Con Cita
  #7  
Antiguo 13-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Por si acaso, me parece recordar que la hora debe indicar también los segundos: 20:35:00
Te prepararé un ejemplo desde delphi, ¿los componentes IB son los IBX?
Si....los IB=IBX.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #8  
Antiguo 14-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Hola compañeros.

Solo para comentarles que pues no lo he resuelto como quería, pero de momento lo solucioné de esta manera:

Cree un campo, "HORA_ENTREGA_TXT" de tipo VARCHAR(5) en donde almacenaré la hora de entrega del producto...y el campo HORA_ENTREGA tipo TIMESTAMP / TIME (lo describo asi, porq en ambos tipos marcó el error), lo deje como parte de la estructura y de momento no contendrá datos, mas adelante haré un procedimiento almacenado o trigger para lo que haya en HORA_ENTREGA_TXT pasarlo al campo HORA_ENTREGA.

Sigo buscando la solución, una mas profesional...jajajaja.

Saludos y gracias por su tiempo.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #9  
Antiguo 14-11-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
He hecho una prueba simulando tu entorno y ha funcionado como se espera.
He creado esta tabla:
Código SQL [-]
CREATE TABLE TBPRU01 (
    ID      INTEGER,
    NOMBRE  VARCHAR(64),
    FECHA   DATE,
    HORA    TIME
);
Y en un formulario he puesto un maskedit igual que el tuyo para probar, este es el resultado:

En un botón va esto:
Código Delphi [-]
procedure TForm2.Button2Click(Sender: TObject);
var
  iID :integer;
  cNombre :string;
begin
  iID := random(100000);
  cNombre := 'Nombre '+inttostr(iID);
  IBQuery1.Close;
  IBQuery1.SQL.Text := 'INSERT INTO tbPru01 (id, nombre, fecha, hora) VALUES (:Id, :nombre, :fecha, :hora)';
  //
  IBQuery1.Params[0].AsInteger := iID;
  IBQuery1.Params[1].AsString := cNombre;
  IBQuery1.Params[2].AsDate := date;
  IBQuery1.Params[3].AsTime := StrToTime( MaskEdit1.Text );
  IBQuery1.ExecSQL;
  //
  IBDataSet1.Refresh;
end;
Espero que te sirva.

Última edición por Casimiro Notevi fecha: 14-11-2023 a las 20:29:57.
Responder Con Cita
  #10  
Antiguo 14-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
He hecho una prueba simulando tu entorno y ha funcionado como se espera.
He creado esta tabla:
Código SQL [-]
CREATE TABLE TBPRU01 (
    ID      INTEGER,
    NOMBRE  VARCHAR(64),
    FECHA   DATE,
    HORA    TIME
);
Y en un formulario he puesto un maskedit igual que el tuyo para probar, este es el resultado:

En un botón va esto:
Código Delphi [-]
procedure TForm2.Button2Click(Sender: TObject);
var
  iID :integer;
  cNombre :string;
begin
  iID := random(100000);
  cNombre := 'Nombre '+inttostr(iID);
  IBQuery1.Close;
  IBQuery1.SQL.Text := 'INSERT INTO tbPru01 (id, nombre, fecha, hora) VALUES (:Id, :nombre, :fecha, :hora)';
  //
  IBQuery1.Params[0].AsInteger := iID;
  IBQuery1.Params[1].AsString := cNombre;
  IBQuery1.Params[2].AsDate := date;
  IBQuery1.Params[3].AsTime := StrToTime( MaskEdit1.Text );
  IBQuery1.ExecSQL;
  //
  IBDataSet1.Refresh;
end;
Espero que te sirva.
Caray! CASIMIRO, muchas gracias.

Veo que en el codigo usas AsTime, obvio son nuestras versiones diferentes de Delphi y de FB que tenemos, yo uso Delphi6 y FB 2.0 ya que en mi delphi no tengo "AsTime", ademas de estas "variantes", esta también la de mi equipo portátil, que no sé si también este influyendo en el problema, ya que es equipo nuevo y algo -creo yo- hace falta por configurar....lo raro es que traslado el EXE compilado al servidor de producción y marca el error, por lo tanto la variante "laptop nueva", pues se descarta que sea parte del problema...

Por lo pronto asi lo tengo:

Código Delphi [-]
        dsProds.FieldByName('RESPONSABLE_DEVOLUCION').AsInteger:=cbxDevolLiq.ItemIndex;
//        dsProds.FieldByName('HORA_ENTREGA').AsDateTime := StrToTime( mskHora.Text );
        dsProds.FieldByName('HORA_ENTREGA_TXT').AsString := mskHora.Text;
        dsProds.FieldByName('FECHA_REGISTRO_VENTA').AsDateTime:=Date;
        dsProds.FieldByName('COSTO_LITRO').AsFloat:=qryContrato.fieldbyname('PRECIO_LITRO_CONCESIONARIO').As  Float;
        dsProds.Post;
        dsProds.ApplyUpdates;
Analizaré un poco mas lo que me has enviado y les cuento.

Saludos y muchas gracias.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
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
TimeStamp Willo MySQL 4 22-03-2016 21:15:00
Is not a valid integer value joancmb Varios 9 19-03-2013 14:10:58
TimeStamp = TimeStamp me da error Chogo Firebird e Interbase 7 16-03-2011 04:13:38
not valid floating merlin Conexión con bases de datos 1 21-07-2004 13:18:53
Timestamp y bde 5.2 Toni Firebird e Interbase 2 27-05-2003 09:26:33


La franja horaria es GMT +2. Ahora son las 13:36:54.


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