TDolphin error oQry:Save()
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
TDolphin error oQry:Save()
Hola,
En un proceso de insertar un registro en una tabla, algo tan simple como:
ccadena := 'select * from ps_product'
oQry := oServer:Query(ccadena )
oQry:GetBlankRow(.f.)
oQry:Save()
oQry:end()
me arroja un error:
Error description: Error MYSQL/1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_h' at line 1
El caso es que en otras tablas, algo similar no me da error, si bien es cierto que la tabla ps_product tiene muchos más campos que otras que estoy utilizando, en total tiene 44 campos y algunos con unos nombre muy largos (es la tabla ps_product de Prestashop)
¿Tendrá eso algo que ver ?
Saludos
En un proceso de insertar un registro en una tabla, algo tan simple como:
ccadena := 'select * from ps_product'
oQry := oServer:Query(ccadena )
oQry:GetBlankRow(.f.)
oQry:Save()
oQry:end()
me arroja un error:
Error description: Error MYSQL/1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_h' at line 1
El caso es que en otras tablas, algo similar no me da error, si bien es cierto que la tabla ps_product tiene muchos más campos que otras que estoy utilizando, en total tiene 44 campos y algunos con unos nombre muy largos (es la tabla ps_product de Prestashop)
¿Tendrá eso algo que ver ?
Saludos
Re: TDolphin error oQry:Save()
Hola Sebastian:
Posiblemente no tengas _ no null en la tabla, y con esa instruccion dejas todos _ en blancos e intentas grabar. Tal vez venga por ahí el error.
Posiblemente no tengas _ no null en la tabla, y con esa instruccion dejas todos _ en blancos e intentas grabar. Tal vez venga por ahí el error.
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Hola, efectivamente el problema es en un campo no null, en concreto el campo condition, que es de tipo enum('new','used','refurbished') con un valor predeterminado de new.
He ejecutado en phpMyAdmin la consulta que genera tdolpsrv en el método SQLQuery y falla en condition = ''.
Ahora la pregunta de ignorante:
¿Como doy a oQry:condition el valor new ?, si pongo oQry:condition = 'new' tambien falla.
Gracias por tu tiempo, saludos
He ejecutado en phpMyAdmin la consulta que genera tdolpsrv en el método SQLQuery y falla en condition = ''.
Ahora la pregunta de ignorante:
¿Como doy a oQry:condition el valor new ?, si pongo oQry:condition = 'new' tambien falla.
Gracias por tu tiempo, saludos
cmsoft wrote:Hola Sebastian:
Posiblemente no tengas _ no null en la tabla, y con esa instruccion dejas todos _ en blancos e intentas grabar. Tal vez venga por ahí el error.
Re: TDolphin error oQry:Save()
No se si es la forma mas adecuada, pero funciona.
Code: Select all
base := oQry:GetBlankRow()
base:condition := "new"
oQry:oRow := base
oQry:Save()
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Gracias, acabo de solucionarlo con:
ccadena := "INSERT INTO ps_product(reference) VALUES('123456')"
oServer:Execute(ccadena)
Esto que me sugieres, a mi no me funcionaba
Gracias
ccadena := "INSERT INTO ps_product(reference) VALUES('123456')"
oServer:Execute(ccadena)
Esto que me sugieres, a mi no me funcionaba
Gracias
cmsoft wrote:No se si es la forma mas adecuada, pero funciona.Code: Select all
base := oQry:GetBlankRow() base:condition := "new" oQry:oRow := base oQry:Save()
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: TDolphin error oQry:Save()
Hola Sebastian podrias poner la cadena de creación de la estructura de la tabla? tal cual la creaste si es que lo hiciste por código.
Saludos
Marcelo
Saludos
Marcelo
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Hola Marcelo,
La estructura no la cree yo, como he indicado se trata de una base de datos Prestashop y se crea durante la instalación de este, pero en PhpMyAdmin es así:
CREATE TABLE `ps_product` (
`id_product` int(10) unsigned NOT NULL auto_increment,
`id_supplier` int(10) unsigned default NULL,
`id_manufacturer` int(10) unsigned default NULL,
`id_category_default` int(10) unsigned default NULL,
`id_shop_default` int(10) unsigned NOT NULL default '1',
`id_tax_rules_group` int(11) unsigned NOT NULL,
`on_sale` tinyint(1) unsigned NOT NULL default '0',
`online_only` tinyint(1) unsigned NOT NULL default '0',
`ean13` varchar(13) default NULL,
`upc` varchar(12) default NULL,
`ecotax` decimal(17,6) NOT NULL default '0.000000',
`quantity` int(10) NOT NULL default '0',
`minimal_quantity` int(10) unsigned NOT NULL default '1',
`price` decimal(20,6) NOT NULL default '0.000000',
`wholesale_price` decimal(20,6) NOT NULL default '0.000000',
`unity` varchar(255) default NULL,
`unit_price_ratio` decimal(20,6) NOT NULL default '0.000000',
`additional_shipping_cost` decimal(20,2) NOT NULL default '0.00',
`reference` varchar(32) default NULL,
`supplier_reference` varchar(32) default NULL,
`location` varchar(64) default NULL,
`width` decimal(20,6) NOT NULL default '0.000000',
`height` decimal(20,6) NOT NULL default '0.000000',
`depth` decimal(20,6) NOT NULL default '0.000000',
`weight` decimal(20,6) NOT NULL default '0.000000',
`out_of_stock` int(10) unsigned NOT NULL default '2',
`quantity_discount` tinyint(1) default '0',
`customizable` tinyint(2) NOT NULL default '0',
`uploadable_files` tinyint(4) NOT NULL default '0',
`text_fields` tinyint(4) NOT NULL default '0',
`active` tinyint(1) unsigned NOT NULL default '0',
`available_for_order` tinyint(1) NOT NULL default '1',
`available_date` date NOT NULL,
`condition` enum('new','used','refurbished') NOT NULL default 'new',
`show_price` tinyint(1) NOT NULL default '1',
`indexed` tinyint(1) NOT NULL default '0',
`visibility` enum('both','catalog','search','none') NOT NULL default 'both',
`cache_is_pack` tinyint(1) NOT NULL default '0',
`cache_has_attachments` tinyint(1) NOT NULL default '0',
`is_virtual` tinyint(1) NOT NULL default '0',
`cache_default_attribute` int(10) unsigned default NULL,
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
`advanced_stock_management` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id_product`),
KEY `product_supplier` (`id_supplier`),
KEY `product_manufacturer` (`id_manufacturer`),
KEY `id_category_default` (`id_category_default`),
KEY `indexed` (`indexed`),
KEY `date_add` (`date_add`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=144 ;
Saludos
La estructura no la cree yo, como he indicado se trata de una base de datos Prestashop y se crea durante la instalación de este, pero en PhpMyAdmin es así:
CREATE TABLE `ps_product` (
`id_product` int(10) unsigned NOT NULL auto_increment,
`id_supplier` int(10) unsigned default NULL,
`id_manufacturer` int(10) unsigned default NULL,
`id_category_default` int(10) unsigned default NULL,
`id_shop_default` int(10) unsigned NOT NULL default '1',
`id_tax_rules_group` int(11) unsigned NOT NULL,
`on_sale` tinyint(1) unsigned NOT NULL default '0',
`online_only` tinyint(1) unsigned NOT NULL default '0',
`ean13` varchar(13) default NULL,
`upc` varchar(12) default NULL,
`ecotax` decimal(17,6) NOT NULL default '0.000000',
`quantity` int(10) NOT NULL default '0',
`minimal_quantity` int(10) unsigned NOT NULL default '1',
`price` decimal(20,6) NOT NULL default '0.000000',
`wholesale_price` decimal(20,6) NOT NULL default '0.000000',
`unity` varchar(255) default NULL,
`unit_price_ratio` decimal(20,6) NOT NULL default '0.000000',
`additional_shipping_cost` decimal(20,2) NOT NULL default '0.00',
`reference` varchar(32) default NULL,
`supplier_reference` varchar(32) default NULL,
`location` varchar(64) default NULL,
`width` decimal(20,6) NOT NULL default '0.000000',
`height` decimal(20,6) NOT NULL default '0.000000',
`depth` decimal(20,6) NOT NULL default '0.000000',
`weight` decimal(20,6) NOT NULL default '0.000000',
`out_of_stock` int(10) unsigned NOT NULL default '2',
`quantity_discount` tinyint(1) default '0',
`customizable` tinyint(2) NOT NULL default '0',
`uploadable_files` tinyint(4) NOT NULL default '0',
`text_fields` tinyint(4) NOT NULL default '0',
`active` tinyint(1) unsigned NOT NULL default '0',
`available_for_order` tinyint(1) NOT NULL default '1',
`available_date` date NOT NULL,
`condition` enum('new','used','refurbished') NOT NULL default 'new',
`show_price` tinyint(1) NOT NULL default '1',
`indexed` tinyint(1) NOT NULL default '0',
`visibility` enum('both','catalog','search','none') NOT NULL default 'both',
`cache_is_pack` tinyint(1) NOT NULL default '0',
`cache_has_attachments` tinyint(1) NOT NULL default '0',
`is_virtual` tinyint(1) NOT NULL default '0',
`cache_default_attribute` int(10) unsigned default NULL,
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
`advanced_stock_management` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id_product`),
KEY `product_supplier` (`id_supplier`),
KEY `product_manufacturer` (`id_manufacturer`),
KEY `id_category_default` (`id_category_default`),
KEY `indexed` (`indexed`),
KEY `date_add` (`date_add`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=144 ;
Saludos
Marcelo Roggeri wrote:Hola Sebastian podrias poner la cadena de creación de la estructura de la tabla? tal cual la creaste si es que lo hiciste por código.
Saludos
Marcelo
Last edited by Sebastián Almirón on Mon Nov 18, 2013 3:27 pm, edited 1 time in total.
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Hola, sigo con problemas, a ver si alguien me puede ayudar:
¿ TDolphin puede guardar sin problemas datos en campos enum ?
Parto de la tabla vacía, si ejecuto:
ccadena := "INSERT INTO ps_product(reference) VALUES('123456')"
oServer:Execute(ccadena)
Me inserta un nuevo registro, pero luego cuando quiero cambiarle los valores de _:
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:save()
no me lo hace, no da error, pero no cambia el valor de condition.
He intentado también hacerlo como me sugería cmsoft:
ccadena := 'select * from ps_product'
oQry := oServer:Query(ccadena)
onuevo := oQry:GetBlankRow()
onuevo:condition := 'New'
oQry:orow := onuevo
oQry:save()
En este caso me da un error:
Error description: Error MYSQL/1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_h' at line 1
La Query completa que genera el método SQLQuery de la clase TDolphinSrv, es así (he puesto un Msgget en el método para capturarla):
INSERT INTO ps_product SET id_product=140,id_supplier=0,id_manufacturer=0,id_category_default=40,id_shop_default=1,id_tax_rules_group=1,on_sale=0,online_only=0,ean13='884962894408',upc=NULL,ecotax=0,quantity=0,minimal_quantity=0,price=11.50,wholesale_price=0,unity=NULL,unit_price_ratio=0,additional_shipping_cost=0,reference='3090561',supplier_reference=NULL,location=NULL,width=0,height=0,depth=0,weight=0,out_of_stock=2,quantity_discount=0,customizable=0,uploadable_files=0,text_fields=0,active=1,available_for_order=1,available_date=' - - ',condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_has_attachments=0,is_virtual=0,cache_default_attribute=0,date_add='2013-11-18 12:49:13',date_upd='2013-11-18 12:49:13',advanced_stock_management=0
Esta misma consulta en el SQL de PhpMyAdmin genera el mismo error, limpiandola veo que el problema es que no se puede hacer:
INSERT INTO ps_product SET condition='new'
condition es un campo enum.
¿Alguna idea?
Saludos
¿ TDolphin puede guardar sin problemas datos en campos enum ?
Parto de la tabla vacía, si ejecuto:
ccadena := "INSERT INTO ps_product(reference) VALUES('123456')"
oServer:Execute(ccadena)
Me inserta un nuevo registro, pero luego cuando quiero cambiarle los valores de _:
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:save()
no me lo hace, no da error, pero no cambia el valor de condition.
He intentado también hacerlo como me sugería cmsoft:
ccadena := 'select * from ps_product'
oQry := oServer:Query(ccadena)
onuevo := oQry:GetBlankRow()
onuevo:condition := 'New'
oQry:orow := onuevo
oQry:save()
En este caso me da un error:
Error description: Error MYSQL/1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_h' at line 1
La Query completa que genera el método SQLQuery de la clase TDolphinSrv, es así (he puesto un Msgget en el método para capturarla):
INSERT INTO ps_product SET id_product=140,id_supplier=0,id_manufacturer=0,id_category_default=40,id_shop_default=1,id_tax_rules_group=1,on_sale=0,online_only=0,ean13='884962894408',upc=NULL,ecotax=0,quantity=0,minimal_quantity=0,price=11.50,wholesale_price=0,unity=NULL,unit_price_ratio=0,additional_shipping_cost=0,reference='3090561',supplier_reference=NULL,location=NULL,width=0,height=0,depth=0,weight=0,out_of_stock=2,quantity_discount=0,customizable=0,uploadable_files=0,text_fields=0,active=1,available_for_order=1,available_date=' - - ',condition='new',show_price=1,indexed=0,visibility='both',cache_is_pack=0,cache_has_attachments=0,is_virtual=0,cache_default_attribute=0,date_add='2013-11-18 12:49:13',date_upd='2013-11-18 12:49:13',advanced_stock_management=0
Esta misma consulta en el SQL de PhpMyAdmin genera el mismo error, limpiandola veo que el problema es que no se puede hacer:
INSERT INTO ps_product SET condition='new'
condition es un campo enum.
¿Alguna idea?
Saludos
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Bueno, al final lo he solucionado.
Para añadir un registro he tenido que usar INSERT INTO y ponerle en VALUES todos _ por orden
Para modificar un registro he usado he usado una Query
No entiendo porque me daba tantos problemas, intentaré averiguar porqué más adelante, hay algo que se me escapa. Pero de momento me funciona.
Saludos
Para añadir un registro he tenido que usar INSERT INTO y ponerle en VALUES todos _ por orden
Para modificar un registro he usado he usado una Query
No entiendo porque me daba tantos problemas, intentaré averiguar porqué más adelante, hay algo que se me escapa. Pero de momento me funciona.
Saludos
- Hector Pedro Lerda
- Posts: 46
- Joined: Tue May 07, 2013 7:27 pm
- Location: Buenos Aires - Argentina
Re: TDolphin error oQry:Save()
Sebastian
" Me inserta un nuevo registro, pero luego cuando quiero cambiarle los valores de _:
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:save()
no me lo hace, no da error, pero no cambia el valor de condition."
a esta opción tuya podrias agregarle esto
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
msginfo(oqry:lastrec()) /// te va retornar la cantidad de registros, si te retorna 0 , es porque no encontro nada y aqui esta tu error
luego agrega
oqry:getrow(1) para que se posecione en el primer registro
///// oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:condition := 'used' //con minúsculas lo tienes definido en la tabla y como usa el numero de letra para ordenar puede tener el error ahi
oQry:save()
Saludos Pedro Lerda
Aquí tienes la explicación del manual de mysql con respecto a los datos enum
http://dev.mysql.com/doc/refman/5.0/es/enum.html
" Me inserta un nuevo registro, pero luego cuando quiero cambiarle los valores de _:
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:save()
no me lo hace, no da error, pero no cambia el valor de condition."
a esta opción tuya podrias agregarle esto
ccadena := ' select * from ps_product where reference = "123456" '
oQry := oServer:Query(ccadena )
msginfo(oqry:lastrec()) /// te va retornar la cantidad de registros, si te retorna 0 , es porque no encontro nada y aqui esta tu error
luego agrega
oqry:getrow(1) para que se posecione en el primer registro
///// oQry:condition := 'Used' //El valor predeterminado es 'new'
oQry:condition := 'used' //con minúsculas lo tienes definido en la tabla y como usa el numero de letra para ordenar puede tener el error ahi
oQry:save()
Saludos Pedro Lerda
Aquí tienes la explicación del manual de mysql con respecto a los datos enum
http://dev.mysql.com/doc/refman/5.0/es/enum.html
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Ya se lo que ocurre, creo que es un problema de TDolpqry:
Cuando un campo numerico tiene un valor NULL (que puede haberse puesto como predeterminado), jamas ejecuta el oQry:save(), porque en el método Save de tDolpqry le añade en el WHERE campo = 0, creo que por método BuildDataWhere().
Por ejemplo, tengo un registro con un campo numerico llamado id_category_default que tiene valor NULL, si hago:
oQry:id_category_default := 3
oQry:Save()
la cQuery que crea el método Save() es así (resumido):
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3 AND id_category_default = 0
Ejecutando esa consulta en PhpMyAdmin no afecta a ningún registro, por el id_category_default = 0, sin embargo si le pongo:
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3
Es decir suprimiendo id_category_default = 0, la consulta se ejecuta sobre el registro apropiado y lo modifica.
Ahora la pregunta del millon: como hago para que no se añada a la cadena WHERE de la query de save(), cuando un campo numerico tiene el valor NULL en un registro, he probado a modificar el metodo BuildDataWhere(), pero no se como capturar si el valor de la variable uValue es NULL (con NIL no funciona).
P.D.: Gracias Hector por responder, el problema no tiene nada que ver con eso, lo de New con mayúsculas lo puse sin darme cuenta al escribir el mensaje, en realidad en el programa lo tengo en minúsculas.
Cuando un campo numerico tiene un valor NULL (que puede haberse puesto como predeterminado), jamas ejecuta el oQry:save(), porque en el método Save de tDolpqry le añade en el WHERE campo = 0, creo que por método BuildDataWhere().
Por ejemplo, tengo un registro con un campo numerico llamado id_category_default que tiene valor NULL, si hago:
oQry:id_category_default := 3
oQry:Save()
la cQuery que crea el método Save() es así (resumido):
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3 AND id_category_default = 0
Ejecutando esa consulta en PhpMyAdmin no afecta a ningún registro, por el id_category_default = 0, sin embargo si le pongo:
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3
Es decir suprimiendo id_category_default = 0, la consulta se ejecuta sobre el registro apropiado y lo modifica.
Ahora la pregunta del millon: como hago para que no se añada a la cadena WHERE de la query de save(), cuando un campo numerico tiene el valor NULL en un registro, he probado a modificar el metodo BuildDataWhere(), pero no se como capturar si el valor de la variable uValue es NULL (con NIL no funciona).
P.D.: Gracias Hector por responder, el problema no tiene nada que ver con eso, lo de New con mayúsculas lo puse sin darme cuenta al escribir el mensaje, en realidad en el programa lo tengo en minúsculas.
- Hector Pedro Lerda
- Posts: 46
- Joined: Tue May 07, 2013 7:27 pm
- Location: Buenos Aires - Argentina
Re: TDolphin error oQry:Save()
Sebastian
Para preguntar por un campo null debes poner
is null en tu ejemplo sería
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3 AND id_category_default is null
el valor null en mysql no equivale a 0, lo mismo si tenes que ejecutar comandos de sumas no suma valores null y te puede dar resultados erroneos
Saludos Pedro Lerda
Para preguntar por un campo null debes poner
is null en tu ejemplo sería
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3 AND id_category_default is null
el valor null en mysql no equivale a 0, lo mismo si tenes que ejecutar comandos de sumas no suma valores null y te puede dar resultados erroneos
Saludos Pedro Lerda
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin error oQry:Save()
lo verifico, hasta donde creo recordar, creo que si un valor esta en NIL deberia añadir a la sentencia IS NULLSebastián Almirón wrote:Ahora la pregunta del millon: como hago para que no se añada a la cadena WHERE de la query de save(), cuando un campo numerico tiene el valor NULL en un registro, he probado a modificar el metodo BuildDataWhere(), pero no se como capturar si el valor de la variable uValue es NULL (con NIL no funciona).
Hector Pedro Lerda wrote:is null en tu ejemplo sería
UPDATE ps_product_shop SET id_category_default=6 WHERE id_product = 3 AND id_category_default is null
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin error oQry:Save()
Sebestian
en el codigo de TDolphin esta creada la validacion sin es NIL coloca "IS NULL"
aqui coloco la version del codigo que hace esa validacion en el metodo BuildDataWhere
tomado de TDolpqry.prg
linea 461 de la version actual de TDolphin
en el codigo de TDolphin esta creada la validacion sin es NIL coloca "IS NULL"
aqui coloco la version del codigo que hace esa validacion en el metodo BuildDataWhere
tomado de TDolpqry.prg
linea 461 de la version actual de TDolphin
Code: Select all
cWhere += aField[ MYSQL_FS_NAME ] + If( uValue == NIL .OR. ( HB_IsString( uValue ) .AND. Empty( uValue ) ) .OR. ( HB_IsDate( uValue ) .AND. Empty( uValue ) ), " IS ", " = " ) + ;
ClipValue2Sql( uValue, , , .F. ) + " AND "
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Re: TDolphin error oQry:Save()
Hola,
Estoy perdido y desesperado, me voy a casa a ver si me despejo
El caso es que ese campo, que tiene valor NULL y es de tipo INT. Justo antes de las líneas que añaden el "IS" o el "=", tanto en MakePrimaryKeyWhere() como en BuildDataWhere(), la variable uValue tiene valor 0 y no NIL. Por lo tanto al tratarse de un número me añade un "=" en vez de un "IS" y la función ClipValue2Sql que va a continuación lo trata como un número y devuelve su mismo valor 0.
Aunque creo que no viene al caso, tengo puesto SET LOGICALVALUE OFF.
Mañana seguiré.
Gracias
Estoy perdido y desesperado, me voy a casa a ver si me despejo
El caso es que ese campo, que tiene valor NULL y es de tipo INT. Justo antes de las líneas que añaden el "IS" o el "=", tanto en MakePrimaryKeyWhere() como en BuildDataWhere(), la variable uValue tiene valor 0 y no NIL. Por lo tanto al tratarse de un número me añade un "=" en vez de un "IS" y la función ClipValue2Sql que va a continuación lo trata como un número y devuelve su mismo valor 0.
Aunque creo que no viene al caso, tengo puesto SET LOGICALVALUE OFF.
Mañana seguiré.
Gracias
Daniel Garcia-Gil wrote:Sebestian
en el codigo de TDolphin esta creada la validacion sin es NIL coloca "IS NULL"
aqui coloco la version del codigo que hace esa validacion en el metodo BuildDataWhere
tomado de TDolpqry.prg
linea 461 de la version actual de TDolphin
Code: Select all
cWhere += aField[ MYSQL_FS_NAME ] + If( uValue == NIL .OR. ( HB_IsString( uValue ) .AND. Empty( uValue ) ) .OR. ( HB_IsDate( uValue ) .AND. Empty( uValue ) ), " IS ", " = " ) + ; ClipValue2Sql( uValue, , , .F. ) + " AND "