Page 1 of 2

Consulta SQL via TDolphin

PostPosted: Wed Jul 04, 2018 11:08 pm
by MarioG
Hola Gente
He guardado en un campo el siguiente texto: IDEAS & DESARROLLOS
Luego cuando lo recupero para mostrarlo en un SAY, se ve asi: IDEAS _DESARROLLOS

Cual es la forma de guardarlo o de recuperarlo
Gracias

Re: Consulta SQL via TDolphin

PostPosted: Thu Jul 05, 2018 12:14 am
by joseluisysturiz
Intenta con ClipValue2SQL( Val2Escape( tu_valor ) ), saludos... :shock:

Re: Consulta SQL via TDolphin

PostPosted: Thu Jul 05, 2018 2:11 pm
by MarioG
Gracias JL!
Ahora se vé así : IDEAS DESARROLLOS
Alguna función/metodo me está faltando porque en un xBrowse, que muestra el Query consultado, se ve correctamente

Re: Consulta SQL via TDolphin

PostPosted: Thu Jul 05, 2018 3:11 pm
by cmsoft
Hola Mario:
Hice la prueba en una base de datos que tengo y tanto en el Browse como en el Get me mustra bien el ampersand
Tengo la tabla definida con ENGINE=INNODB DEFAULT CHARSET=latin1 y el campo es un VARCHAR (40)
Tambien probé con otra tabla que tengo definida como ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci y obtuve el mismo resultado.
Grabo con la funcion SAVE de Tdolphin
Espero que te de alguna pista

Re: Consulta SQL via TDolphin

PostPosted: Thu Jul 05, 2018 8:16 pm
by MarioG
Gracias por tus datos CM
Mis tablas estan creadas como: CHARSET=utf8 y COLLATE=utf8_spanish_ci
Como comenté en el primer post tengo el siguiente Browse
Code: Select all  Expand view
  REDEFINE XBROWSE oBrwP ID BRW_XBRW OF oDlg AUTOSORT  ;
            COLUMNS "RazSocial", "CUIT" ;
            HEADERS "RazSocial", "CUIT" ;
            OBJECT  ::oQVProv
 

Que muestra el dato tal como lo guardé mediante:
oData:oServer:Insert(...)
o cuando actualizo mediante
oData:oServer:SqlQuery( cQry )

Luego para mostrarlo en un say, lo recupero con, en este caso: oQryPrv:= hA:oConn:Query( "SELECT * FROM provclie WHERE id_prvcli="+cIDProv )
Y, el campo aludido me devuelve, tal lo comentado
Intenté usando la función que me pasó José Luis, pero me devuelve espacio donde esta el simbolo &
Tambien mne contactó Ariel Cagiao y me paso lo siguiente:
cVar:= "IDEAS & DESARROLLOS"
cSave:= StrToHexa( cVar )
cLoad:= HexaToStr( cSave )
? cVar, cSave, cLoad

En este caso no reconoce las funciones; uso Harbour 3.2
Probé con inclui HB_Str... no las reconoce

Re: Consulta SQL via TDolphin

PostPosted: Thu Jul 05, 2018 10:40 pm
by cmsoft
Prueba asi:
Code: Select all  Expand view

oQryPrv:= hA:oConn:Query( "SELECT * FROM provclie WHERE id_prvcli="+cIDProv )
oQryPrv:nombre := "IDEAS & DESARROLLOS" // O como se llame el campo donde grabas el nombre del proveedor
oQryPrv:Save()
 

Y comenta como lo graba...

Re: Consulta SQL via TDolphin

PostPosted: Fri Jul 06, 2018 12:14 am
by MarioG
Voy para peor! :shock: :cry:
Puse el campo en blanco; paso las líneas que me sugeriste... y no guarda nada!!

Re: Consulta SQL via TDolphin

PostPosted: Fri Jul 06, 2018 11:41 am
by cmsoft
Mario:
Por favor prueba este codigo y comenta
Code: Select all  Expand view
#include "fivewin.ch"
#include "XBROWSE.ch"
#include "Tdolphin.ch"
function Mario_test()

   local  oDlg, oBrw, oBot, oGet, base,cSql, oServer, oQry, oError

   CONNECT oServer HOST "localhost" ;
                      USER "root" ;
                      PASSWORD "" ;
                      PORT 3306;
                      FLAGS 0;
                      DATABASE "test"
   
   TEXT INTO cSql
   CREATE TABLE IF NOT EXISTS `datos` (
  `NOMBRE` VARCHAR(35) NOT NULL,
  `CODIGO` INT(10) NOT  NULL AUTO_INCREMENT,
  PRIMARY KEY (`CODIGO`)
   ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
   ENDTEXT
   oServer:Execute(cSql)
   oServer:Execute("INSERT INTO datos (nombre) VALUES (' ')")
   oQry:= oServer:Query("SELECT * FROM datos ")  

   DEFINE DIALOG oDlg TITLE "Prueba browse " FROM 09,15 TO 28,135
   oDlg:lHelpIcon := .f.

   @ 02,080 XBROWSE oBrw DATASOURCE oQry SIZE 325,120 OF oDlg PIXEL ;
       COLUMNS "codigo","nombre" HEADERS "Codigo","Nombre";
       SIZES   100,400 AUTOSORT
   @ 00,00 SAY oBrw:oSeek PROMPT "" OF oDlg PIXEL
   oBrw:CreateFromCode()
 

   @10,423 BUTTON oBot PROMPT "&Salir" OF oDlg SIZE 30,10 ACTION oDlg:End() PIXEL

   ACTIVATE DIALOG oDlg CENTER
   base:=oQry:GetRowObj()
   DEFINE DIALOG oDlg TITLE "Prueba Get " FROM 09,15 TO 28,135
   oDlg:lHelpIcon := .f.

   @ 02,080 GET oGet VAR base:nombre SIZE 300,12 OF oDlg PIXEL

   @10,423 BUTTON oBot PROMPT "&Salir" OF oDlg SIZE 30,10 ACTION oDlg:End() PIXEL
   // Activo el dialog
   ACTIVATE DIALOG oDlg CENTER

   oQry:oRow := base
   TRY
    oServer:BeginTransaction()
    oQry:Save()
    oQry:Refresh(.t.)
    oServer:CommitTransaction()
   CATCH oError
     MsgInfo("Error")
   
   END TRY

return nil

Es muy basico, pero a mi me funciona bien y me muestra bien el ampersand
Cada vez que ejecutas el programa te agrega un nuevo registro, y te lo muestra en el browse y en el get. Ponle IDEAS & DESARROLLOS y comenta que hace

Re: Consulta SQL via TDolphin

PostPosted: Fri Jul 06, 2018 1:07 pm
by MarioG
Gracias por tu tiempo CM
En algo me estaré equivocando, lo veo y te cuento

Re: Consulta SQL via TDolphin

PostPosted: Sun Jul 08, 2018 6:14 pm
by nnicanor
Hola,

La presentacion correcta de los caracteres tiene que ver con el codepage de idioma seleccionado de harbour y el de la base datos, lo solucionas asi y guardara correctamente los acentos y caracteres especiales:

REQUEST HB_CODEPAGE_ESWIN
REQUEST HB_LANG_ES


Function Main()

..
..

SET( _SET_CODEPAGE, "ESWIN" ) // Seleccionar idioma en Harbour

Set_MyLang( "es_MX" ) // Seleccionar el idioma en MYSQl

...
...

Saludos,

Re: Consulta SQL via TDolphin

PostPosted: Mon Jul 09, 2018 12:36 am
by MarioG
Muchas gracias Nicanor
No sabia de esto: Set_MyLang( "es_MX" ) // Seleccionar el idioma en MYSQl

Re: Consulta SQL via TDolphin

PostPosted: Sat Aug 15, 2020 1:32 pm
by MarioG
MarioG wrote:Muchas gracias Nicanor
No sabia de esto: Set_MyLang( "es_ES" ) // Seleccionar el idioma en MYSQl


Buenos dias
Usando MariaDB al compilar me devuelve error:
Error: Unresolved external '_HB_FUN_SET_MYLANG' referenced from D:\MIAPP\DEBUG\TCFGSYS.OBJ

Como la debo invocar?, o es suficiente con esto:
HB_LangSelect( "ESWIN" )
HB_SetCodePage( "ESWIN" )

Re: Consulta SQL via TDolphin

PostPosted: Sat Aug 15, 2020 2:00 pm
by acuellar
Mario

Yo utilizo éstos:
Code: Select all  Expand view

 HB_LANGSELECT( 'ESWIN' )
 HB_SetCodePage("ESWIN")
 HB_CDPSELECT("ESWIN")
 

Re: Consulta SQL via TDolphin

PostPosted: Sat Aug 15, 2020 2:37 pm
by MarioG
Gracias!

Me esta pasando un tema que hace rato no lo puedo solucionar, y tiene que ver con datos en Tablas
Escribo en una variable, por ej., "Ideas & Desarrollos"
Luego el SAY me muestra "Ideas _Desarrollos"
He probado con varias funciones, como por ej. HB_Str2UTF8(), u otras y no le encuentro la solución
Por eso intenté probar Set_MyLang()

Pruebo y comento...

Re: Consulta SQL via TDolphin

PostPosted: Sun Aug 16, 2020 6:52 am
by nageswaragunupudi
MarioG wrote:Gracias!

Me esta pasando un tema que hace rato no lo puedo solucionar, y tiene que ver con datos en Tablas
Escribo en una variable, por ej., "Ideas & Desarrollos"
Luego el SAY me muestra "Ideas _Desarrollos"
He probado con varias funciones, como por ej. HB_Str2UTF8(), u otras y no le encuentro la solución
Por eso intenté probar Set_MyLang()

Pruebo y comento...


We are sorry we did not provide the correct solution 2 years back when you first raised the issue.

This has nothing to do with MySql or DBF. Nothing to do with any language or codepage settings.

This is just the default behaviour of TSay class (which, in turn, uses Windows static control) to display the text. By default, when '&' is found in a string, the '&' is ommitted and next character is underlined.

We can display '&' as expected by
(1) put '&&' instead of single '&'
OR
(2) Add the style SS_NOPREFIX ( 0x80 ) to the Say object.

This sample shows the default behaviour:
Code: Select all  Expand view
#include "fivewin.ch"

function Main()

   local oWnd, oSay, cText

   cText    := "IDEAS & DESARROLLOS"

   DEFINE window oWnd
   @ 30,50 SAY oSay PROMPT cText SIZE 200,20 PIXEL OF oWnd
   ACTIVATE WINDOW oWnd CENTERED

return nil
 


Image

This test shows if we add SS_NOPREFIX style:
Code: Select all  Expand view
#include "fivewin.ch"

#define SS_NOPREFIX         0x00000080

function Main()

   local oWnd, oSay, cText

   cText    := "IDEAS & DESARROLLOS"

   DEFINE window oWnd
   @ 30,50 SAY oSay PROMPT cText SIZE 200,20 PIXEL OF oWnd
   oSay:WinStyle( SS_NOPREFIX, .t. )  // inserted
   ACTIVATE WINDOW oWnd CENTERED

return nil
 


Image

If you are using dialogs from resources, please try adding SS_NOPREFIX to the style of the control.