Page 1 of 1
Una de fechas (SOLUCIONADO)
Posted: Tue Jun 15, 2021 1:35 pm
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
Re: Una de fechas
Posted: Tue Jun 15, 2021 1:45 pm
by karinha
Ejemplo simples? Cual error te retorna? Muestre. Saludos.
Re: Una de fechas
Posted: Tue Jun 15, 2021 10:30 pm
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
Re: Una de fechas (SOLUCIONADO)
Posted: Wed Jun 16, 2021 7:48 pm
by leandro
Armando buenas tardes como estas?
Como lo solucionaste?
Re: Una de fechas (SOLUCIONADO)
Posted: Wed Jun 16, 2021 8:56 pm
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
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
Re: Una de fechas (SOLUCIONADO)
Posted: Wed Jun 16, 2021 9:13 pm
by leandro
Que bueno que lo hayas solucionado.
Muchas gracias por la información.
