From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Gabriel Colina <colina_movil(at)yahoo(dot)com> |
Cc: | Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Simbolos dentro de cadenas y el codigo propuesto |
Date: | 2007-03-14 22:59:38 |
Message-ID: | 20070314225938.GA30723@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gabriel Colina escribió:
>
> Ejemplo 1
[plpgsql]
Ok ...
> Ejemplo 2.
[otra vez plpgsql]
Ok
> 3 Metodo parecido al que plantea mi tocayo Gabriel
> Ferro, a quien confieso le debo el hecho de darle una
> mano mejor, que la que le di en la pregunta anterior y
> por lo cual le pido disculpas y espero compenzarlo con
> esto.
>
>
> Desde visual y sin crear una funcion en postgresql.
>
> DtaSysGc.cnSysGeGc.Execute "insert into
> central.documentos (id_articulo,id_cab,cantidad)
> select '" & TxtDatos(0).Text & "' as id_articulo, " &
> nCabezales & " as id_cab, " &
> Abs(Val(Lbldatos(4).Caption)) & " as cantidad;"
>
> Las comillas dobles encierran todo lo que se va a
> ejecuttar, pero si miras esto previamente de un msgbox
> o desde el depurador verias que lo que pasa es esto
> insert into central.documentos
> (id_articulo,id_cab,cantidad) select 'PH8' as
> id_articulo, 924,123.45 as cantidad;
Pero esto tiene el mismo problema que la solucion que yo mostraba antes.
Si tienes tablas cuyos nombres estan en mayuscula, tienes que poner esos
nombres entre comillas dobles en la consulta. Y en el ejemplo de
arriba, siguen estando los & como operador de concatenacion, y las
comillas simples que quedan rodeando la parte donde se pone la variable.
Justamente todo lo que yo te comentaba que seria preferible evitar.
La unica diferencia con el codigo que yo te mostré es que no están los _
que significaban "el código continúa en la linea siguiente". No me
queda claro si esto es un artefacto del copy&paste del codigo en el
email, o si realmente el codigo funciona en varias lineas sin el _.
Las otras dos soluciones que mostrabas, no atacan para nada el problema
que yo queria hacer patente, sino que usan un mecanismo diferente para
evitarlo completamente. Ahora, cuando uno tiene un programa que hace
una consulta simple, para que iba a usar un SP? ¿Sera solo para
evitarse el problema de las comillas, etc, en el lenguaje?
No se si me explico con respecto a cual es el problema con el lenguaje.
Como ves es una cosa que parece bastante menor pero que a ti, como
programador, te hace la vida dificil innecesariamente.
No he dicho en ningun momento que sea un problema que tu o cualquier
otro programador no deba solucionar (y probablemente mas de una vez).
No digo que seas una persona despreciable porque tengas que solucionar
ese problema, o porque debas (o escojas) programar en Visual Basic.
Recuerda que fue lo primero que yo dije que abrio todo este thread: "tu
problema no es Postgres sino Visual Basic". Y creo que aca queda claro
a que me referia, porque justamente el problema es cómo construir un
string que puedas usar como consulta SQL. Y Visual Basic te hace ese
problema mas dificil de lo que deberia.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Mario Cassanelli | 2007-03-14 23:04:18 | pasar DBF's a Postgresql |
Previous Message | Luis Marucco | 2007-03-14 22:20:26 | RE: Me mudo a POSTGRES |