Algo nuevo o es Error de TDolphin.?

Post Reply
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Algo nuevo o es Error de TDolphin.?

Post by joseluisysturiz »

Saludos, normalmente defino mis VAR con un switch de valor logico para controlar si es registro nuevo o es modificado, ejemplo:

aVar[1] := IIF( lNew, 0, oQry:campo1 ) // campo de tipo numero (int, double, decimal, etc)
aVAr[2] := IIF( lNew, space(10), oQry:campo2) // campo de tipo string
aVar[3] := IIF( lnew, date(), oQry:campo3 ) campo tipo fecha

hasta alli todo esta bien, el problema esta ocurriendo cuando grabo en _ y el valor de la VAR sigue siendo cero(0) o esta vacio, ya que no se graba en el campo el valor cero de la VAR sino se graba como NULL al igual que si la VAR esta vacia, esto hace que cuando voy a modificar mi campo y la VAR toma el valor del campo de la tabla, se inicia en NULL y asi no me permite editarlo, esto esta sucediendo en la ultima actualizacion de la LIB de TDolphin ya que por casualidad tenia una LIB vieja y alli si trabaja bien, el problema es que tengo sistemas de clientes donde valido si el valor del campo es cero o mayor que cero al igual que los tipos fechas y ahora esas validaciones me arrojan error ya que el valor del campo numerico es NULL y no cero como lo mande guardar....para los nuevos sistemas estoy haciendo directamente en la tabla que el valor por default sera CERO, pero tengo sistemas que tiene full datos y que solo funciona con los registros nuevos. Tambien tuve que cambiar la forma de iniciar mis VAR de la siguiente manera

aVar[n] ;= iif( lNew .or. empty(oqry:campo), 0, oqry:campo)

nose si a alguno le sucede lo mismo o si es un problema mio en mis tablas o si es algun cambio que le hayan hecho a la TDolphin, agradezo sus comentarios, sugerencias y observaciones, gracias, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Algo nuevo o es Error de TDolphin.?

Post by acuellar »

Yo pensé que era así de normal que grababa NULL en _ VARCHAR, por lo que tuve que ponerle el carácter ASCII 255 para grabe y luego poder editarlo
y _ fecha le gurado '01-01-1001'

Code: Select all

   If ClipValue2SQL(oQry:FECHANAC)="NULL"
     oQry:FECHANAC:=ctod('01-01-1001')
   Endif
     oQry:NOMBRE:=If(Empty(oQry:NOMBRE),Chr(255), ) 
 
Así funciona. Claro que no debiera ser así.

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Algo nuevo o es Error de TDolphin.?

Post by joseluisysturiz »

Saludos, pues no acuellar, eso que haces tambien lo hice, pero es muy tedioso, se puede hacer al principio de inicializacion de las VAR o cuando se va a grabar como lo haces, pero originalmente lo hacia bien sin hacer tantas validaciones, habria que ver que nos comenta Daniel, si se debe trabajar asi de ahora en adelante, si es algun detalle que se paso en la ultima version o alguna otra sugerencia, es bueno saber que no es a mi el unico que lepasa, crei era algo en mis sistemas, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Algo nuevo o es Error de TDolphin.?

Post by sysctrl2 »

En _ CHAR y NUMERICOS
cuando se crea la tabla,
debes de poner valores deault,

CAMPO 1 DECIMAL( 10, 2 ) DEFAUL 0.00

saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Algo nuevo o es Error de TDolphin.?

Post by joseluisysturiz »

Si SYSCTRL, asi es que lo estoy haciendo ahora en los sistemas nuevos, pero antes no hacia falta iniciar en la tabla en cero _ numericos, asi he resuelto ese tipo de campos, pero que me dices sobre _ VARCHAR, aunque los ponga por default string vacio (Empty String) al guardarlos sin valor, es decir que la VAR queda vacia, igual los guarda NULL al igual que _ FECHAS, por los momentos hay que hacer truquitos para evitar los errores de validaciones, gracias y saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Algo nuevo o es Error de TDolphin.?

Post by Willi Quintana »

Hola amigos,,,
Llevo trabajando con MySQL desde el 2005, con diversas herramientas, pero lo mas importante esta en el diseño de las tablas, el uso correcto de los tipos de datos, la diferencia entre char() y varchar(), la longitud de _ numéricos, los índices etc etc, talvez estamos acostumbrados a las facilidades que nos brinda las dbfs, pero en SQL las cosas con distintas, mi consejo es que todos _ de una tabla en SQL deben ser indicadas con valores por defecto,,, de otro modo pede surgir un valor nulo que es distinto a vacio o cero.

Code: Select all

CREATE TABLE `kardexcliente` (
`registro` int(10) unsigned NOT NULL auto_increment,
`cod_producto` varchar(20) NOT NULL default '',
`modo` char(1) default '',
`fecha_doc` date NOT NULL default '0000-00-00',
`tipo` varchar(2) default ' ',
`documento` varchar(22) NOT NULL default '',
`cantidad` decimal(15,3) default '0.000',
`saldo` decimal(15,3) default '0.000',
`costo` decimal(15,3) default '0.000',
`cod_prov_clie` varchar(15) default '' COMMENT 'ruc o dni del proveedor o del cliente destino',
`cod_operador` varchar(10) default '',
`fecha_operacion` date NOT NULL default '0000-00-00',
`hora_operacion` varchar(8) NOT NULL default '00:00:00',
`precio_venta` decimal(12,3) default '0.000',
`estado` char(1) default ' ',
`concre` int(10) unsigned NOT NULL default '1',
`glosa` varchar(45) default '',
`num_pedido` varchar(14) NOT NULL default '              ',
`fecha_pedido` date NOT NULL default '0000-00-00',
`cod_vendedor` varchar(5) NOT NULL default '',
`guiaremision` VARCHAR(22) DEFAULT '',
`cod_almacen` VARCHAR(2) DEFAULT '01',            
`fecha_doc_guia` date NOT NULL default '0000-00-00',
`fecha_ope_guia` date NOT NULL default '0000-00-00',
`hora_ope_guia` varchar(8) NOT NULL default '00:00:00',
PRIMARY KEY  (`registro`,`cod_producto`),
KEY `Producto` (`cod_producto`),
KEY `Documento` (`documento`),
KEY `Operador` (`cod_operador`),
KEY `Fecha_Documento` (`fecha_doc`),
KEY `Fecha_Operacion` (`fecha_operacion`),
KEY `Vendedor` (`cod_vendedor`),
KEY `Pedido` (`num_pedido`),
KEY `FechaPedido` (`fecha_pedido`),
KEY `Guia` (`guiaremision`),
KEY `Almacen` (`cod_almacen`) 
ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
Post Reply