Amigos, saludos a todos.
Un cliente me pide que pueda visualizar el contenido de un campo de una tabla MySql bien sea en mayúscula o que la primera letra de cada palabra sea Mayúscula y las demás Minúsculas. Para ello, coloque un control RADIO que según la selección del usuario, el contenido de dicho campo pueda cambiar, por ejemplo, entre "FIVEWIN FOR WINDOWS" a "Fivewin For Windows"
Investigando, veo que no existe una función propia de MYSQL que lo haga, pero si encontré una función hecha por un usuario que si ejecuta el cambio.
Ahora bien, transcribiendo el código tal cual, con un simple "Copy & Paste" a la base de datos directo con NAVICAT, funciona perfecto.
Si ejecuto ese script desde el editor de Querys de NAVICAT, también funciona.
En _, con servidor remoto y local, se crea la función y puedo llamarla y ejecutarla desde mi código fivewin sin problema.
El detalle es, que no quiero tener que hacerlo "a pie" con cada una de las bases de datos de mis clientes, quiero que la función se cree automáticamente desde un prg, el mismo que tengo para crear las tablas. Pues resulta desde código fivewin no funciona, arroja error de sintaxis.
Me imagino que debe ser alguna incompatibilidad de tDholpin con MySql.
Alguien ha logrado crear stored procedures MySql desde código fivewin?
Acá dejo imagen del código y el enlace a StackOweflow donde lo encontré
https://stackoverflow.com/questions/618 ... sql-column
Agradecido con la Ayuda que puedan prestarme. No tengo mucho dominio con funciones de MySql.
Funciones MySql desde codigo FiveWin (SOLUCIONADO)
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Funciones MySql desde codigo FiveWin (SOLUCIONADO)
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Funciones MySql desde codigo FiveWin (SOLUCIONADO)
Listo amigos, solucionado
Solo quite las clausulas DELIMETER y el PRG crea la función sin problemas.
Así quedó el código:
Con esto ya podemos llevar un campo que contenga "FIVEWIN FOR WINDOWS" a "Fivewin For Windows" y viceversa.
y para aplicarlo lo hice asi:
donde nOrder es el valor de control RADIO.
Lo dejo por acá por su alguien lo necesita.
Un abrazo a Todos.
Solo quite las clausulas DELIMETER y el PRG crea la función sin problemas.
Así quedó el código:
Code: Select all | Expand
cQuery:= "CREATE FUNCTION func_proper( str VARCHAR(255) ) " +CRLF
cQuery+= "RETURNS VARCHAR(255) " +CRLF
cQuery+= " BEGIN " +CRLF
cQuery+= " DECLARE chr VARCHAR(1); " +CRLF
cQuery+= " DECLARE lStr VARCHAR(255); " +CRLF
cQuery+= " DECLARE oStr VARCHAR(255) DEFAULT ''; " +CRLF
cQuery+= " DECLARE i INT DEFAULT 1; " +CRLF
cQuery+= " DECLARE bool INT DEFAULT 1; " +CRLF
cQuery+= " DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/'; " +CRLF
cQuery+= " WHILE i <= LENGTH( str ) DO " +CRLF
cQuery+= " BEGIN " +CRLF
cQuery+= " SET chr = SUBSTRING( str, i, 1 ); " +CRLF
cQuery+= " IF LOCATE( chr, punct ) > 0 THEN " +CRLF
cQuery+= " BEGIN " +CRLF
cQuery+= " SET bool = 1; " +CRLF
cQuery+= " SET oStr = concat(oStr, chr); " +CRLF
cQuery+= " END; " +CRLF
cQuery+= " ELSEIF bool=1 THEN " +CRLF
cQuery+= " BEGIN " +CRLF
cQuery+= " SET oStr = concat(oStr, UCASE(chr)); " +CRLF
cQuery+= " SET bool = 0; " +CRLF
cQuery+= " END; " +CRLF
cQuery+= " ELSE " +CRLF
cQuery+= " BEGIN " +CRLF
cQuery+= " SET oStr = concat(oStr, LCASE(chr)); " +CRLF
cQuery+= " END; " +CRLF
cQuery+= " END IF; " +CRLF
cQuery+= " SET i = i+1; " +CRLF
cQuery+= " END; " +CRLF
cQuery+= " END WHILE; " +CRLF
cQuery+= " RETURN oStr; " +CRLF
cQuery+= " END; "
y para aplicarlo lo hice asi:
Code: Select all | Expand
cQuery := "UPDATE "+cTabla+" SET "
if nOrder=1
cQuery +="nombre_cliente:=func_proper(nombre_cliente); "
else
cQuery +="nombre_cliente:=UPPER(nombre_cliente); "
endif
Lo dejo por acá por su alguien lo necesita.
Un abrazo a Todos.
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.