Re: Simbolos dentro de cadenas y el codigo propuesto

From: Gabriel Colina <colina_movil(at)yahoo(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(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 23:56:25
Message-ID: 119004.89437.qm@web34705.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Alvaro Herrera <alvherre(at)commandprompt(dot)com>
escribió:

> 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.
En este ejemplo que ponia igual cabe invertir las
funcion de las comillas, o sea las simples por fuera y
las dobles por dentro para que formen la cadena.

> 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 _.

Estas en lo cierto en eso tambien, fue por la forma en
que lo pegue y escribi para el ejemplo.

>
> 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.

Pero si lo evitas ya no es problema, por eso te decia
que es la forma en que usan Visual, a mi me enseniaron
que esa forma de escribir codigo como si programaras
en clipper no es la forma ni la filosofia para ser un
buen programador en Visual, si no para que queres un
lenguaje visual, para aparte de crear los formularios,
escribir codigo por gusto ??

> 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.

Te explicas muy claro, y no discrepo, pero es que si
agarro un martillo de bola sin unias para sacar un
clavo, estoy equivocado.

El ejemplo 3 es solo para mostrar que el tema comillas
es solucionable aun en la peor forma de usar la
herramienta.

> 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.
Lo que pasa que para resolver eso yo no concateno con
esto _ yo creo una funcion en visual donde paso
parametros y genero la cadena que luego voy a
ejecutar, si ese fuera el caso, por ejemplo tengo una
lista de precios que hace muchos filtros por distintas
propiedades y se muestran en combo box, text box, y
otros controles propios de Visual, bueno desde el
los_focus lo mando a la funcion y listo. cuando tengo
que comunicarme con PostgreSQL para que me devuelva
determinado recordset termina asi.

DtaSysGc.cnSysGeGc.Execute funcion_visual()


> 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.

Yo tambien abri fuego diciendo que no era Visual o
PostgreSQL, si no como combinan las herramientas.

Por que tambien cuando alguien desde visual me dice
postgresql no sirve no alcanza performance y esas
cosas, les pregunto si utilizan bien la herramienta.

Pregunto si estan usando la combinacion de Visual
Basic y una base de datos como deberia usarse.

No se si queda claro.

Por ultimo, si un lenguaje tiene varias posibilidades
y la gente elige la peor, es culpa del lenguaje ?

Bueno espero cafe mediante, seguir debatiendo y
tambien aportando.

No te olvides de las dos propuestas, mira que voy en
serio.\

La de la contrib, en que quiza me ayudes y en la del
encuentro.

Atte.
Gabriel Colina

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gunnar Wolf 2007-03-15 00:12:40 Re: Simbolos dentro de cadenas
Previous Message Vida Luz 2007-03-14 23:18:21 Re: Trabajando con Grandes BD