Definir variable en multiples lineas

Post Reply
User avatar
mariordz
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Definir variable en multiples lineas

Post by mariordz »

Estimados amigos del foro, despues de meses en que la empresa compró la actualización de FWH (ahora tenemos la 16.04) por fin le estoy dando uso, y se me presenta este pequeño detalle, con la versión anterior de fivewin definia una variable en multiples líneas asi:

Code: Select all | Expand

cCadsql1 := "SELECT campo1,campo2,campo3 FROM tala1 INNER JOIN tabla2 ON ;
tabla1.campo1 = tabla2.campo2 INNER JOIN tabla2 ON tabla2.campo21 = tabla3.campo4  ;
WHERE (tabla1.campo3<>'') AND (tabla3.campo2 < '3') and tabla2.campo3>0 ;
order by tabla1.campo3"


En esta nueva versión no me esta respeytando el ";" como indicador de salo de línea, tienen alguna idea de como corregir este detalle? La verdad es que hay muchas llamadas a SQL desde el sistema que estoy migrando y modificar todas ellas me llevaría un buen tiempo, además de que no me es practico tener la sentencia en una sola línea que sería demasiado larga.

Saludos.
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Definir variable en multiples lineas

Post by cnavarro »

mariordz wrote:Estimados amigos del foro, despues de meses en que la empresa compró la actualización de FWH (ahora tenemos la 16.04) por fin le estoy dando uso, y se me presenta este pequeño detalle, con la versión anterior de fivewin definia una variable en multiples líneas asi:

Code: Select all | Expand

cCadsql1 := "SELECT campo1,campo2,campo3 FROM tala1 INNER JOIN tabla2 ON ;
tabla1.campo1 = tabla2.campo2 INNER JOIN tabla2 ON tabla2.campo21 = tabla3.campo4  ;
WHERE (tabla1.campo3<>'') AND (tabla3.campo2 < '3') and tabla2.campo3>0 ;
order by tabla1.campo3"


En esta nueva versión no me esta respeytando el ";" como indicador de salo de línea, tienen alguna idea de como corregir este detalle? La verdad es que hay muchas llamadas a SQL desde el sistema que estoy migrando y modificar todas ellas me llevaría un buen tiempo, además de que no me es practico tener la sentencia en una sola línea que sería demasiado larga.

Saludos.


Puedes hacerlo asi

Code: Select all | Expand


local cCadsql1 := "SELECT campo1,campo2,campo3 FROM tala1 INNER JOIN tabla2 ON " + ;
"tabla1.campo1 = tabla2.campo2 INNER JOIN tabla2 ON tabla2.campo21 = tabla3.campo4 " + ;
"WHERE (tabla1.campo3<>'') AND (tabla3.campo2 < '3') and tabla2.campo3>0 " + ;
"order by tabla1.campo3"
 


o busca información en el foro sobre el comando

Code: Select all | Expand


TEXT INTO cCadsql1

ENDTEXT
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Definir variable en multiples lineas

Post by horacio »

Se me ocurre que la variable está mal definida, yo lo hago así.

Code: Select all | Expand


cCadsql1 := "SELECT campo1,campo2,campo3 FROM tala1 INNER JOIN tabla2 ON " + ;
"tabla1.campo1 = tabla2.campo2 INNER JOIN tabla2 ON tabla2.campo21 = tabla3.campo4 " +;
"WHERE (tabla1.campo3<>'') AND (tabla3.campo2 < '3') and tabla2.campo3>0 " +;
"order by tabla1.campo3"
 

Saludos
User avatar
mariordz
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Definir variable en multiples lineas

Post by mariordz »

Muchas gracias por sus respuestas, lo hice como sugieren y ya esta funcionando (despues de modificar en todos los PRG's que componen mi sistema), como comenté, en la versión anterior si funcionaba sin necesidad de cerrar la cadena y volver a iniciarla en la siguiente línea, pero supongo que son esos pequeños detalles que varian de una versión a otra, otro detalle curioso es que tengo definidas variables con multiples líneas y no me da ese error, por alguna extraña razón solo me marcaba error en las variables que mando como cadena a SQL.

Mil gracias nuevamente.
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Definir variable en multiples lineas

Post by cnavarro »

Quizás porque la cadena contiene ' ( comillas sencillas ) que puede entender como final de cadena y comienzo de otra ( con la siguiente ' )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Definir variable en multiples lineas

Post by joseluisysturiz »

Una forma de evitarte esos detalles y usar multiples linea seria alago como esto...saludos... :shock:

Code: Select all | Expand


   cSql := "SELECT db.id_referencia_bancaria, db.cedula_cliente, db.cedula_dueno, "
   cSql += "td.tipo_dato_td, db.id_banco, bc.banco, db.id_tipo_cuenta, db.pax "

   cSql += "FROM tbl_datos_bancarios AS db "

   cSql += "LEFT JOIN tbl_tipos_datos_td  AS td ON db.id_tipo_dato_td = td.id_tipo_dato_td "

   cSql += "WHERE db.cedula_cliente = " + ClipValue2SQL( aVarCtt[1] ) + " "

   cSql += "ORDER BY db.cuenta_nombre_titular"

   TRY
      oQry := TDolphinQry():New( cSql, oDatos:oConex )
   CATCH oError
      ShowError( oError, cSql )
   END
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Armando
Posts: 3276
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Definir variable en multiples lineas

Post by Armando »

Mario:

Algo como esto que da más claridad en el código

Code: Select all | Expand


    oRsPay:Source               := "SELECT " +;
                                            "*," +;
                                            "Puestos.*," +;
                                            "Departamentos.*," +;
                                            "Bancos.*," +;
                                            "Tipos.* " +;
                                        "FROM " +;
                                            "Empleados " +;
                                        "LEFT JOIN " +;
                                            "Puestos " +;
                                        "ON " +;
                                            "Empleados.EMP_CIA = Puestos.PUE_CIA " +;
                                        "AND " +;
                                            "Empleados.EMP_PUE = Puestos.PUE_PUE " +;
                                        "LEFT JOIN " +;
                                            "Departamentos " +;
                                        "ON " +;
                                            "Empleados.EMP_CIA = Departamentos.DEP_CIA " +;
                                        "AND " +;
                                            "Empleados.EMP_DEP = Departamentos.DEP_DEP " +;
                                        "LEFT JOIN " +;
                                            "Bancos " +;
                                        "ON " +;
                                            "Empleados.EMP_CIA = Bancos.BAN_CIA " +;
                                        "AND " +;
                                            "Empleados.EMP_BAN = Bancos.BAN_BAN " +;
                                        "LEFT JOIN " +;
                                            "Tipos " +;
                                        "ON " +;
                                            "Empleados.EMP_CIA = Tipos.TIP_CIA " +;
                                        "AND " +;
                                            "Empleados.EMP_TIN = Tipos.TIP_TIP " +;
                                        "ORDER BY " +;
                                            "EMP_AYN"
 


Imagina este código en una sola línea horizontal, después de varios meses de haberla
escrito, sería muy difícil de entender.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
mariordz
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Definir variable en multiples lineas (RESUELTO)

Post by mariordz »

Armando, exactamente ese es mi punto, la claridad y facilidad para leer una sentencia tan larga, ahora que ya he aplicado una solución propuesta mi código es entendible (por lo menos para mi LOL).

Gracias y saludos.
User avatar
Armando
Posts: 3276
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Definir variable en multiples lineas

Post by Armando »

Mario:

Vientos caon!

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Carlos Mora
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Definir variable en multiples lineas

Post by Carlos Mora »

Mario,

hace algún tiempo se discutió el tema en el foro y se sacaron a la luz cosas bastante interesantes, sobre todo a nivel de legibilidad de SQL

viewtopic.php?f=6&t=29700&start=0

Hay una función EXPAND que junto con TEXT INTO <var> ayuda a hacer la vida más fácil.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Post Reply