Buen Dia a Todos !
No se si existe algún truco, o si tengo que poner el SQL_MODE de alguna
manera para que no pase lo siguiente:
En cualquier campo Char o VarChar enlazado con TDBMaskEdit, puedo
teclear cualquier caracter excepto estos: la comilla ' y la diagonal
invertida(backslash) . porque si los tecleo y hago un Update() , me
saca del programa y sale este error.
Subsystem Call: MySQL
System Code: -1
Default Status: .T.
Description: 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 ''PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID=
3' at line 1
Operation: TMYSQLRECORDS:REPLACE
Arguments: [ 1] = Type: C Val: UPDATE tipostarifa SET
TARIFA='PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3
Involved File:
Dos Error Code: 0
Trace Through:
TMYSQLRECORDS:REPLACE (499)
TMYSQLRECORDS:UPDATE (341)
TSQLQUERY:UPDATE (488)
TTIPOSTARIFA:BTNGRABARCLICK (108)
TBTNBMP:ONCLICK (0)
TBTNBMP:CLICK (99)
(b)XCONTROL:XCONTROL (145)
TBTNBMP:COMMAND (0)
TSCROLLINGWINCONTROL:WMCOMMAND (255)
TTIPOSTARIFA:WMCOMMAND (889)
RUNFORM (0)
TAPPLICATION:RUN (209)
MAIN (16)
Salio este error porque le puse la comilla en la captura (despues del
75) , igual pasa con la diagonal invertida.
Error de Programación ? ó Restricción del Motor de Base de Datos en
este caso MYSQL.
Saludos...
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Error Grave (Eso Creo) en DataControls Usando MySql
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
Error Grave (Eso Creo) en DataControls Usando MySql
Martin:
Corrijanme si estoy equivocado:
en el caso del , creo que tienes que ponerlo doble
y en el caso de la comilla sencilla ahi si vas a tener problemas porque
por defaul la comilla sencilla se utiliza para delimitar los strings (en
todos los SQL), por eso te marca error.
Saludos
Rene Flores
http://www.ciber-tec.com
Del Angel escribió:
> Buen Dia a Todos !
>
> No se si existe algún truco, o si tengo que poner el SQL_MODE de alguna
> manera para que no pase lo siguiente:
>
> En cualquier campo Char o VarChar enlazado con TDBMaskEdit, puedo
> teclear cualquier caracter excepto estos: la comilla ' y la diagonal
> invertida(backslash) . porque si los tecleo y hago un Update() , me
> saca del programa y sale este error.
>
>
> Subsystem Call: MySQL
> System Code: -1
> Default Status: .T.
> Description: 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 ''PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3' at line 1
> Operation: TMYSQLRECORDS:REPLACE
> Arguments: [ 1] = Type: C Val: UPDATE tipostarifa SET
> TARIFA='PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3
> Involved File:
> Dos Error Code: 0
>
> Trace Through:
> TMYSQLRECORDS:REPLACE (499)
> TMYSQLRECORDS:UPDATE (341)
> TSQLQUERY:UPDATE (488)
> TTIPOSTARIFA:BTNGRABARCLICK (108)
> TBTNBMP:ONCLICK (0)
> TBTNBMP:CLICK (99)
> (b)XCONTROL:XCONTROL (145)
> TBTNBMP:COMMAND (0)
> TSCROLLINGWINCONTROL:WMCOMMAND (255)
> TTIPOSTARIFA:WMCOMMAND (889)
> RUNFORM (0)
> TAPPLICATION:RUN (209)
> MAIN (16)
>
>
>
> Salio este error porque le puse la comilla en la captura (despues del
> 75) , igual pasa con la diagonal invertida.
>
> Error de Programación ? ó Restricción del Motor de Base de Datos en
> este caso MYSQL.
>
> Saludos...
Corrijanme si estoy equivocado:
en el caso del , creo que tienes que ponerlo doble
y en el caso de la comilla sencilla ahi si vas a tener problemas porque
por defaul la comilla sencilla se utiliza para delimitar los strings (en
todos los SQL), por eso te marca error.
Saludos
Rene Flores
http://www.ciber-tec.com
Del Angel escribió:
> Buen Dia a Todos !
>
> No se si existe algún truco, o si tengo que poner el SQL_MODE de alguna
> manera para que no pase lo siguiente:
>
> En cualquier campo Char o VarChar enlazado con TDBMaskEdit, puedo
> teclear cualquier caracter excepto estos: la comilla ' y la diagonal
> invertida(backslash) . porque si los tecleo y hago un Update() , me
> saca del programa y sale este error.
>
>
> Subsystem Call: MySQL
> System Code: -1
> Default Status: .T.
> Description: 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 ''PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3' at line 1
> Operation: TMYSQLRECORDS:REPLACE
> Arguments: [ 1] = Type: C Val: UPDATE tipostarifa SET
> TARIFA='PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3
> Involved File:
> Dos Error Code: 0
>
> Trace Through:
> TMYSQLRECORDS:REPLACE (499)
> TMYSQLRECORDS:UPDATE (341)
> TSQLQUERY:UPDATE (488)
> TTIPOSTARIFA:BTNGRABARCLICK (108)
> TBTNBMP:ONCLICK (0)
> TBTNBMP:CLICK (99)
> (b)XCONTROL:XCONTROL (145)
> TBTNBMP:COMMAND (0)
> TSCROLLINGWINCONTROL:WMCOMMAND (255)
> TTIPOSTARIFA:WMCOMMAND (889)
> RUNFORM (0)
> TAPPLICATION:RUN (209)
> MAIN (16)
>
>
>
> Salio este error porque le puse la comilla en la captura (despues del
> 75) , igual pasa con la diagonal invertida.
>
> Error de Programación ? ó Restricción del Motor de Base de Datos en
> este caso MYSQL.
>
> Saludos...
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Grave (Eso Creo) en DataControls Usando MySql
Rene Flores escribió:
> Martin:
>
> Corrijanme si estoy equivocado:
>
> en el caso del , creo que tienes que ponerlo doble
>
> y en el caso de la comilla sencilla ahi si vas a tener problemas porque
> por defaul la comilla sencilla se utiliza para delimitar los strings (en
> todos los SQL), por eso te marca error.
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
>
>
> Del Angel escribió:
>> Buen Dia a Todos !
>>
>> No se si existe algún truco, o si tengo que poner el SQL_MODE de
>> alguna manera para que no pase lo siguiente:
>>
>> En cualquier campo Char o VarChar enlazado con TDBMaskEdit, puedo
>> teclear cualquier caracter excepto estos: la comilla ' y la diagonal
>> invertida(backslash) . porque si los tecleo y hago un Update() ,
>> me saca del programa y sale este error.
>>
>>
>> Subsystem Call: MySQL
>> System Code: -1
>> Default Status: .T.
>> Description: 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 ''PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID=
>> 3' at line 1
>> Operation: TMYSQLRECORDS:REPLACE
>> Arguments: [ 1] = Type: C Val: UPDATE tipostarifa SET
>> TARIFA='PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3
>> Involved File:
>> Dos Error Code: 0
>>
>> Trace Through:
>> TMYSQLRECORDS:REPLACE (499)
>> TMYSQLRECORDS:UPDATE (341)
>> TSQLQUERY:UPDATE (488)
>> TTIPOSTARIFA:BTNGRABARCLICK (108)
>> TBTNBMP:ONCLICK (0)
>> TBTNBMP:CLICK (99)
>> (b)XCONTROL:XCONTROL (145)
>> TBTNBMP:COMMAND (0)
>> TSCROLLINGWINCONTROL:WMCOMMAND (255)
>> TTIPOSTARIFA:WMCOMMAND (889)
>> RUNFORM (0)
>> TAPPLICATION:RUN (209)
>> MAIN (16)
>>
>>
>>
>> Salio este error porque le puse la comilla en la captura (despues del
>> 75) , igual pasa con la diagonal invertida.
>>
>> Error de Programación ? ó Restricción del Motor de Base de Datos
>> en este caso MYSQL.
>>
>> Saludos...
Gracias Rene por tu respuesta.
EL Usuario tiene que utilizar la comilla ' y la diagonal en la
captura de su inf.
Si efectivamente al poner solo se graba una , pero creo que tanto
la comilla y la diagonal no deben de ser problema , ya que con la
herramienta SQLyog Enterprise no tengo ese problema , capturo la comilla
y la diagonal y se graban sin problema.
Ahora por otro lado , estoy migrando Tablas DBF de FoxPro unas con
70,000 registros y en una de ellas hay una campo que tienen comillas y
diagonal , ya que asi codifican sus productos.
Cuando migro la Inf. a MySQL , les quito las comillas y la diagonal ,
para que Xailer/MySQL no me den error al hacer UPdate() o FastUpdate().
Pero el cliente exigentemente quiere las comillas y la diagonal en su Inf.
Como es sabido la comilla sirve para delimitar las Datos String en los
motores SQL, pero entonces porque en el programa Prueba de SQLITE en
SamplesDataControlsSQLite1 cuando tecleas la comilla o la diagonal
en los Campos First y Last se graban correctamente.
Ahora porque la diferencia en codigo :
en el codigo de MySQLRecords.prg esta esto en la funcion VAlTOSTR
STATIC FUNCTION ValToStr( x )
SWITCH ValType( x )
CASE 'C'
x := "'" + x + "'" <== estan conctatenando con la comilla ,
claro como debe de ser
EXIT
y ahora vean el codigo en SQLiteRecords.prg
STATIC FUNCTION ValToStr( x )
SWITCH ValType( x )
CASE 'C'
x := "'" + StrSql( x ) + "'" <== donde esta
esta funcion StrSql
EXIT
La funcion StrSql es propia de SQLite o esta definida en alguna de las
librerias de Xailer o Xharbour ?
y porque la diferencia en concatenar los strings en MYSQLRecords sin
esta funcion y en SQLiteRecords Si se usa.
Que hace esta Funcion?
Saludos....
Martin Del Angel
Dymsa Sistemas
> Martin:
>
> Corrijanme si estoy equivocado:
>
> en el caso del , creo que tienes que ponerlo doble
>
> y en el caso de la comilla sencilla ahi si vas a tener problemas porque
> por defaul la comilla sencilla se utiliza para delimitar los strings (en
> todos los SQL), por eso te marca error.
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
>
>
> Del Angel escribió:
>> Buen Dia a Todos !
>>
>> No se si existe algún truco, o si tengo que poner el SQL_MODE de
>> alguna manera para que no pase lo siguiente:
>>
>> En cualquier campo Char o VarChar enlazado con TDBMaskEdit, puedo
>> teclear cualquier caracter excepto estos: la comilla ' y la diagonal
>> invertida(backslash) . porque si los tecleo y hago un Update() ,
>> me saca del programa y sale este error.
>>
>>
>> Subsystem Call: MySQL
>> System Code: -1
>> Default Status: .T.
>> Description: 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 ''PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID=
>> 3' at line 1
>> Operation: TMYSQLRECORDS:REPLACE
>> Arguments: [ 1] = Type: C Val: UPDATE tipostarifa SET
>> TARIFA='PROMULGATED 75'' WHERE tipostarifa.TARIFA_ID= 3
>> Involved File:
>> Dos Error Code: 0
>>
>> Trace Through:
>> TMYSQLRECORDS:REPLACE (499)
>> TMYSQLRECORDS:UPDATE (341)
>> TSQLQUERY:UPDATE (488)
>> TTIPOSTARIFA:BTNGRABARCLICK (108)
>> TBTNBMP:ONCLICK (0)
>> TBTNBMP:CLICK (99)
>> (b)XCONTROL:XCONTROL (145)
>> TBTNBMP:COMMAND (0)
>> TSCROLLINGWINCONTROL:WMCOMMAND (255)
>> TTIPOSTARIFA:WMCOMMAND (889)
>> RUNFORM (0)
>> TAPPLICATION:RUN (209)
>> MAIN (16)
>>
>>
>>
>> Salio este error porque le puse la comilla en la captura (despues del
>> 75) , igual pasa con la diagonal invertida.
>>
>> Error de Programación ? ó Restricción del Motor de Base de Datos
>> en este caso MYSQL.
>>
>> Saludos...
Gracias Rene por tu respuesta.
EL Usuario tiene que utilizar la comilla ' y la diagonal en la
captura de su inf.
Si efectivamente al poner solo se graba una , pero creo que tanto
la comilla y la diagonal no deben de ser problema , ya que con la
herramienta SQLyog Enterprise no tengo ese problema , capturo la comilla
y la diagonal y se graban sin problema.
Ahora por otro lado , estoy migrando Tablas DBF de FoxPro unas con
70,000 registros y en una de ellas hay una campo que tienen comillas y
diagonal , ya que asi codifican sus productos.
Cuando migro la Inf. a MySQL , les quito las comillas y la diagonal ,
para que Xailer/MySQL no me den error al hacer UPdate() o FastUpdate().
Pero el cliente exigentemente quiere las comillas y la diagonal en su Inf.
Como es sabido la comilla sirve para delimitar las Datos String en los
motores SQL, pero entonces porque en el programa Prueba de SQLITE en
SamplesDataControlsSQLite1 cuando tecleas la comilla o la diagonal
en los Campos First y Last se graban correctamente.
Ahora porque la diferencia en codigo :
en el codigo de MySQLRecords.prg esta esto en la funcion VAlTOSTR
STATIC FUNCTION ValToStr( x )
SWITCH ValType( x )
CASE 'C'
x := "'" + x + "'" <== estan conctatenando con la comilla ,
claro como debe de ser
EXIT
y ahora vean el codigo en SQLiteRecords.prg
STATIC FUNCTION ValToStr( x )
SWITCH ValType( x )
CASE 'C'
x := "'" + StrSql( x ) + "'" <== donde esta
esta funcion StrSql
EXIT
La funcion StrSql es propia de SQLite o esta definida en alguna de las
librerias de Xailer o Xharbour ?
y porque la diferencia en concatenar los strings en MYSQLRecords sin
esta funcion y en SQLiteRecords Si se usa.
Que hace esta Funcion?
Saludos....
Martin Del Angel
Dymsa Sistemas