Problemas con Comilla simple guardando sql

246 views
Skip to first unread message

Edwin Duran

unread,
Jun 24, 2015, 3:08:41 PM6/24/15
to publice...@googlegroups.com
Buenas tarde, 
No he dado con la solución en esto, sucede que los usuarios dependiendo de producto colocar una comillas simple (') al final de la descripción de un producto, pero esto me causa error al momento de guardar en sql sever erreo es con  el campo lnom_labor, anexo parte de mi código

                        lcod_labor = "12345"
lnom_labor = "ejemplo '      "
TEXT TO cmd_guardar NOSHOW text  
BEGIN
    SET NOCOUNT ON

    --Se actualizan los registros en la tabla

    UPDATE <<Msplabor>>
    SET  cod_labor = '<<lcod_labor>>',
nom_labor = '<<lnom_labor>>',
  WHERE tipo_alma = '<<ltipo_alma>>' 
  and cod_labor         = '<<lcod_labor>>'
      --Si no se actualizó ningún registro se inserta en la tabla
     
IF (@@ROWCOUNT = 0 )
      BEGIN
INSERT into <<Msplabor>> (     cod_labor,           nom_labor,  ) values
                                          ('<<lcod_labor>>','<<lnom_labor>>')
      END
   END
   
ENDTEXT

Saludos

Fernando D. Bozzo

unread,
Jun 24, 2015, 3:18:08 PM6/24/15
to publice...@googlegroups.com, edwinn...@gmail.com
Hola Edwin:

¿Y en vez de usar comilas simples no podés usar la comunes en tu código?

lcod_labor = "12345"
lnom_labor
= "ejemplo '      "


TEXT TO cmd_guardar NOSHOW text  
BEGIN
   SET NOCOUNT ON


   
--Se actualizan los registros en la tabla


   UPDATE
<<Msplabor>>
      SET  cod_labor
= "<<lcod_labor>>", nom_labor = "<<lnom_labor>>"

     WHERE tipo_alma
= "<<ltipo_alma>>" AND cod_labor = "<<lcod_labor>>"

   
--Si no se actualizó ningún registro se inserta en la tabla
     
   IF
(@@ROWCOUNT = 0 )
     
BEGIN

         INSERT
into <<Msplabor>> (cod_labor, nom_labor) values ("<<lcod_labor>>","<<lnom_labor>>")
     
END
   
END
   
ENDTEXT



Saludos.-

Víctor Hugo Espínola Domínguez

unread,
Jun 24, 2015, 3:30:36 PM6/24/15
to publice...@googlegroups.com
Hola Edwin

Un dato introducido por el usuario NO debes pasar al servidor 'encomillado', porque aparte del problema que generan por ejemplo los nombres tipo O'Hara, se considera como una vulnerabilidad para ataques conocidos como SQL INJECTION.

Solución: Usa parametrización

'<<lcod_labor>>'
Reemplaza por
?m.lcod_labor

Estas variables parametrizadas deben estar visibles en el método donde llamas a la función SQLEXEC.

Saludos,
Víctor.
Lambaré - Paraguay.

Edwin Duran

unread,
Jun 24, 2015, 3:49:28 PM6/24/15
to publice...@googlegroups.com, fdb...@gmail.com, edwinn...@gmail.com
Gracias Fernando, pero no funcionas, se me olvido decir que me conecto via ADO, y sql server no reconoce las doble comillas para el uso de text0

Edwin Duran

unread,
Jun 24, 2015, 3:57:03 PM6/24/15
to publice...@googlegroups.com, edwinn...@gmail.com, fdb...@gmail.com
Gracias victor, pero como lo utilizaria ?m.lcod_labor en text endtext

Víctor Hugo Espínola Domínguez

unread,
Jun 24, 2015, 4:29:49 PM6/24/15
to publice...@googlegroups.com
Así mismo como está escrito, lo único que tienes que tener en cuenta es el alcance de la variable.

Jorge L. Florez C.

unread,
Jun 24, 2015, 4:35:11 PM6/24/15
to publice...@googlegroups.com
Estimado Edwin

Aquí un ejemplo de como agregar comilla simple en codigo SQL

insert into mitabla ( campo_texto ) values ( 'Trabajo, pa'' que' )

Ojo, no es comilla doble es, comilla comilla, con este criterio, arma tu archivo txt

Saludos.
Jorge Florez

Edwin Duran

unread,
Jun 24, 2015, 4:51:44 PM6/24/15
to publice...@googlegroups.com, jorgel...@gmail.com
Gracias Jorge, eso lo tengo claro creo que lo solucione con 

lnom_labor =  ALLTRIM(strtran(Lnom_labor,"'","''"))

si encuentra comillas que le agregue otra
Reply all
Reply to author
Forward
0 new messages