Una de fechas (SOLUCIONADO)

Una de fechas (SOLUCIONADO)

Postby Armando » Tue Jun 15, 2021 1:35 pm

Saludos al foro:

Tengo la siguiente situación, en un registro tengo dos campos de tipo fecha
definidos como DATE.

Uno de los campos contiene la fecha de emisión, por lo tanto siempre tiene
una fecha, pero el otro que tiene la fecha de pago al momento de grabar
no tiene contenido, aún no se ha pagado, por lo tanto debe ir vacío.

Tengo definido el campo como NOT NULL y por DEFAULT '0000-00-00', sin
embargo al retomar el registro para mostrarlo en algún consulta me tira
error por el campo vacío.

Algún consejo?, que estoy haciendo mal?

Gracias
Last edited by Armando on Wed Jun 16, 2021 1:13 am, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Una de fechas

Postby karinha » Tue Jun 15, 2021 1:45 pm

Ejemplo simples? Cual error te retorna? Muestre. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7842
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Una de fechas

Postby Armando » Tue Jun 15, 2021 10:30 pm

Karinha:

Gracias por el interés, este es el error que me tira

Code: Select all  Expand view  RUN

Application
===========
   Path and name: C:\SiaMSM\SiaMsm.Exe (32 bits)
   Size: 5,007,872 bytes
   Compiler version: Harbour 3.2.0dev (r1904111533)
   FiveWin  version: FWH 19.05
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows version: 6.2, Build 9200

   Time from start: 0 hours 0 mins 5 secs
   Error occurred at: 15/06/2021, 17:20:47
   Error description: (DOS Error -2147352567) WINOLE/1007  El proveedor de datos u otro servicio devolvió un estado E_FAIL. (0x80004005): Microsoft Cursor Engine

Stack Calls
===========
   Called from:  => TOLEAUTO:BOF( 0 )
   Called from: Source\SiaMsm6c.Prg => LEEDET( 1304 )
   Called from: Source\SiaMsm6c.Prg => IMPRIMIR( 1213 )
   Called from: Source\SiaMsm6c.Prg => (b)LABARRA( 266 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 697 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 983 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1791 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2006 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3546 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1078 )
   Called from: Source\SiaMsm.Prg => MAIN( 171 )
 


Y esta es la definición de los campos en la tabla

Code: Select all  Expand view  RUN

    cCmdSql := "CREATE TABLE IF NOT EXISTS DetOdc (" +;
                    "DET_FOL DECIMAL(07,0)  NOT NULL    DEFAULT 0             COMMENT 'Folio de la órden de compra'," +;
                    "DET_PTD DECIMAL(05,0)  NOT NULL    DEFAULT 0             COMMENT 'Partida'," +;
                    "DET_PAR DECIMAL(05,0)  NOT NULL    DEFAULT 0               COMMENT 'Número de parte'," +;
                    "DET_POS TEXT               NOT NULL                              COMMENT 'Producto o servicio solicitado'," +;
                    "DET_CTD DECIMAL(09,3)  NOT NULL    DEFAULT 0.000         COMMENT 'Cantidad'," +;
                    "DET_UDM VARCHAR(03)        NOT NULL    DEFAULT ''            COMMENT 'Unidad de medida'," +;
                    "DET_APL TEXT               NOT NULL                              COMMENT 'Aplicación'," +;
                    "DET_UNI DECIMAL(09,2)  NOT NULL    DEFAULT 0.000         COMMENT 'Precio unitario'," +;
                    "DET_IMP DECIMAL(09,2)  NOT NULL    DEFAULT 0.000         COMMENT 'Importe'," +;
                    "DET_FDE DATE                NOT NULL    DEFAULT '0000-00-00'    COMMENT 'Fecha de la entrada'," +;
                    "DET_ENT DECIMAL(09,3)  NOT NULL    DEFAULT 0.000         COMMENT 'Cantidad entregada'," +;
                    "PRIMARY KEY(DET_FOL,DET_PTD))" +;
                    "ENGINE = InnoDB                                                  COMMENT 'Detalle de órdenes de compra';"
 


El problema esta en el campo DET_FDE, al grabar esta vacio, con el valor por DEFAULT '0000-00-00' como
se ve en el siguiente texto, que al leerlo para imprimir es cuando tira el error

1 1 1 PRIMERA REFACCION 5000 PZS Almacén de refacciones 1.5 7500 0000-00-00 0

Espero haber explicado bien el problema

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Una de fechas (SOLUCIONADO)

Postby leandro » Wed Jun 16, 2021 7:48 pm

Armando buenas tardes como estas?

Como lo solucionaste?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Una de fechas (SOLUCIONADO)

Postby Armando » Wed Jun 16, 2021 8:56 pm

Hola Leandro:

Ahí va la solución para evitar muchos dolores de cabeza.

Tenia yo definida la estructura de una factura en el campo D02_FECPAG de la siguiente manera

Code: Select all  Expand view  RUN

"D02_FECPAG DATE             NOT  NULL  DEFAULT '0000-00-00'  COMMENT 'Fecha del pago'," +;
 


Obviamente cuando registraba yo la factura aún no existía una fecha de pago, el valor que
se grababa era el valor por deault 0000-00-00 por lo que cuando consultaba el registro me
tiraba el espantoso error antes mencionado.

La solución es simple, se debe definir el campo como NULL y sin valor por DEFAULT

Code: Select all  Expand view  RUN

"D02_FECPAG DATE                    NULL                          COMMENT 'Fecha del pago'," +;
 


Entonces cuando se graba el registro, el campo queda como NULL, de esta manera al hacer
la consulta ya no tira el error, solo debemos validar que el contenido no sea NULL cuando
hagamos uso del campo D02_FECPAG.

Espero quitar dolores de cabeza.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Una de fechas (SOLUCIONADO)

Postby leandro » Wed Jun 16, 2021 9:13 pm

Que bueno que lo hayas solucionado.

Muchas gracias por la información. :D
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 94 guests