Re: Simbolos dentro de cadenas

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Simbolos dentro de cadenas
Date: 2007-03-13 16:23:46
Message-ID: 20070313162346.GD7548@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gabriel Ferro escribió:
> Maestros, tengo el problema que cuando intento guardar una cadena en un campo del tipo character(50) hay carcateres que me dan problemas esto lo hago desde VB con
>
> sql= "UPDATE ""Acta"" SET " _
> & """FechaCarga""='" & Format(campos(2), "dd/mm/yyyy") & "', " _
> & """Lugar""='" & lugar & "' " _
> & " WHERE ""CodActa""='" & tuplas2!CodActa & "';"
> cnn.Execute (sql)
>
> la cosa es que si el campo lugar tiene
> por ejemplo !"·$%&/()=?¿ÑѪºÇÇÁÉÍÓÚÀÈÌÒÙ><hola
>
> me da el error como si se pasa de los 50 caracteres
> fui viendo simbolo por simbolo y tuve que hacer una funcion que reemplaza los caracteres problematicos por un *, los que me dieron problemas eran
> "
> !
> &
> %
> ·
> º
> lo raro aun mas es que si copio el contenido de la variale sql en
> tiempo de ejecucion y la pego en un pgpadmin3 la instruccion se
> ejecuta sin problemas... y ademas como aseguro que son solo estos, hay
> alguna funcion de postgree que reemplace los caracteres problematicos
> asegurandome que no se pinchara el programa con cualquier cadena que
> tenga?

Yo iba a responder la primera vez sugiriendo que deberias escapar los
caracteres, pero despues de echarle un segundo vistazo al trozo de
codigo que muestras arriba, me da la impresion de que la sintaxis es
Visual Basic. Y me pregunto, no hay una manera _sana_ de usar el
lenguaje??? No hay algo asi como un sprintf() con el cual puedas
construir el string de la consulta? Lo que muestras arriba es horrible
e inmantenible, y me pregunto como diablos puede un programador hacer
algo con un lenguaje asi.

En sintesis, el problema que tienes se llama Visual Basic, no es
realmente de Postgres ... para Postgres, deberia bastar con escapar los
caracteres ' y \ (y en tu caso, probablemente tambien los ").

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Quiroga 2007-03-13 16:24:04 RE: Acotar tiempo de Transacciones
Previous Message Alvaro Herrera 2007-03-13 16:14:40 Re: Hola necesito una opinion fuerte sobre cual es mas rapido m