Una de fechas (SOLUCIONADO)

Post Reply
User avatar
Armando
Posts: 3278
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 3 times
Contact:

Una de fechas (SOLUCIONADO)

Post by Armando »

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
karinha
Posts: 7948
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Una de fechas

Post by karinha »

Ejemplo simples? Cual error te retorna? Muestre. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Armando
Posts: 3278
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 3 times
Contact:

Re: Una de fechas

Post by Armando »

Karinha:

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

Code: Select all | Expand


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


    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
leandro
Posts: 1770
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 49 times
Been thanked: 12 times
Contact:

Re: Una de fechas (SOLUCIONADO)

Post by leandro »

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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
User avatar
Armando
Posts: 3278
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 3 times
Contact:

Re: Una de fechas (SOLUCIONADO)

Post by Armando »

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


"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


"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
leandro
Posts: 1770
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 49 times
Been thanked: 12 times
Contact:

Re: Una de fechas (SOLUCIONADO)

Post by leandro »

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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
Post Reply