Funcion Concat() en Fox...

1,401 views
Skip to first unread message

Francisco

unread,
Jul 9, 2015, 11:40:24 AM7/9/15
to publice...@googlegroups.com
¿Existe en fox una funcion similar al CONCAT ( string_value1, string_value2 [, string_valueN ] ) devuelva la cadena unida de SQL? Ya se que puedes hacer con el alltrim()+alltrim()+alltrim() pero es si existe dicha función o alguien la ha implementado...

Fidel Charny

unread,
Jul 9, 2015, 12:26:06 PM7/9/15
to publice...@googlegroups.com, dire...@informatica-apliges.com
Ya ves que no hace falta la función Concat(), desde que puedes generar un cadena con " + ".
Si tienes varias funciones que devuelven (invariablemente) un valor cadena:
lcString = Function_String1(param1) + Function_String2(param2,param3) + function_StringN(paramN)
Si las funciones pueden devolver un valor nulo, lo puedes testear con NVL()
lcString = NVL(Fun_Str1(),"")+NVL(Fun_Str2(),"")+chr(13)+chr(10)+"Sigo en la línea de abajo..."
Soporta retorno de carro, avance de línea, tabulación, etc.

Maximum # of characters per character string or memory variable = 16,777,184



Ahora si lo que necesitas es enviar una cadena a una sentencia SQL, utiliza TEXT |TEXTMERGE|/ ENDTEXT con PRETEXT 15.

Carlos Miguel FARIAS

unread,
Jul 9, 2015, 12:28:57 PM7/9/15
to Grupo Fox
Otra posibilidad:
El equivalente a alltrim()+alltrim()+alltrim()
es alltrim(cadena1-cadena2-cadena3)
Ya que el menos concatena, tirando los blancos al fondo), con una sola eliminación de blancos, listo.
Saludos: Miguel, La Pampa (RA)

Francisco

unread,
Jul 9, 2015, 12:53:22 PM7/9/15
to publice...@googlegroups.com, carlosmig...@gmail.com
Conclusión no existe funcion equivalente a Concat :-)

Víctor Hugo Espínola Domínguez

unread,
Jul 9, 2015, 1:01:20 PM7/9/15
to publice...@googlegroups.com
Hola Francisco

Se puede codificar fácilmente, pero su uso es más tedioso que implementar los operadores de cadena + y -

lcH = "Hola "
lcM = " Mundo"
? lcH - lcM
? Concat(lcH, Ltrim(lcM))

Function Concat
Lparameters tcS1, tcS2, tcS3, tcS4, tcS5, tcS6, tcS7, tcS8, tcS9, tcS10 As String
*
*-- Hasta tcS26
*
lcConcat = ""
For lnS = 1 To Parameters()
    lcS      = "tcS" + Transform(lnS)
    lcConcat = lcConcat + Transform(Evaluate(lcS))
Endfor

Return lcConcat

La única ventaja que le veo a tener esta función es que puedes concatenar datos de distinto tipo
? Concat("Hola ", "mundo N° ", 1)

Saludos,
Víctor.
Lambaré - Paraguay.

Francisco

unread,
Jul 9, 2015, 1:36:33 PM7/9/15
to publice...@googlegroups.com, vich...@gmail.com
Gracias Victor al final hice una función muy parecida a la que tu me has puesto como ejemplo, obviamente con cierto nº de parametros (en este caso no necesitaba más de 9). El necesitar esto tiene su historia, pero como siempre es muy larga... :-) Gracias por vuestros ejemplos... Como siempre si no hay una forma se busca... 

Antonio Meza

unread,
Jul 9, 2015, 1:55:20 PM7/9/15
to publice...@googlegroups.com, vich...@gmail.com
Hola!!

Puedes usar mejor ALINES() así evitas crear parámetros, solo con un parámetro donde recibes la cadena y separados por espacio o comas, etc. y luego haces la separación y la unes como gustes.

saludos
Antonio Meza
Reply all
Reply to author
Forward
0 new messages