FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Funciones MySql desde codigo FiveWin (SOLUCIONADO)
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Funciones MySql desde codigo FiveWin (SOLUCIONADO)
Posted: Sun Nov 03, 2024 03:23 PM
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 ambos casos, 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/6181937/how-to-do-a-proper-case-formatting-of-a-mysql-column




Agradecido con la Ayuda que puedan prestarme. No tengo mucho dominio con funciones de MySql.
"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.
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Funciones MySql desde codigo FiveWin (SOLUCIONADO)
Posted: Sun Nov 03, 2024 08:52 PM
Listo amigos, solucionado

Solo quite las clausulas DELIMETER y el PRG crea la funci贸n sin problemas.

As铆 qued贸 el c贸digo:
Code (fw): Select all Collapse
聽 聽 聽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; "
Con esto ya podemos llevar un campo que contenga "FIVEWIN FOR WINDOWS" a "Fivewin For Windows" y viceversa.

y para aplicarlo lo hice asi:

Code (fw): Select all Collapse
聽 聽 
聽 聽 cQuery := "UPDATE "+cTabla+" SET "
聽 聽 if nOrder=1
聽 聽 聽 cQuery +="nombre_cliente:=func_proper(nombre_cliente); "
聽 聽 聽else
聽 聽 聽 cQuery +="nombre_cliente:=UPPER(nombre_cliente); "
聽 聽 endif
donde nOrder es el valor de control RADIO.

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.

Continue the discussion