Me sucede algo muy extraño, tengo un listado de Nombres de Personas en un Xbrowse y todos los caracteres especiales, como acentos la Ñ, no los traduce aun cuando usao OemToAnsi( "Nom_pac"), esto es realizado en recurso RES, otros Xbrowse me funcioan muy bien, incluso el mismo dato en una varia que paso a otro recurso, se muestra correctamente usando OemToAnsi( "Nom_pac"). No podido encontrar la solucion.
Muchos saludos.
Antonio
Este es el Código que uso:
- Code: Select all Expand view RUN
#include "FiveWin.ch"
#include "xbrowse.ch"
#include "colores.ch"
#include "dtpicker.ch"
#include "calendar.ch"
REQUEST HB_Lang_ESWIN, HB_CODEPAGE_ESWIN
FUNCTION Ing_exa1()
Local oSay,oDlg,oSay1,oSay2,oBot1,oBtn1
Local oFiltra,nFiltra,oFont,oFont1,oFont2
Local aFiltra:= {}
Local dFecha:=Date(),oFecha
Private Ing_xbro:=0
Public oIngre ,Mensa:="",cFiltra:=""
Public Tip_ate1:="EC ", aProfe:= {},oCod_pro1,cCod_pro1:="",nCod_pro1
nCod_pro1=0
HB_LangSelect( "ESWIN" )
HB_SetCodePage( "ESWIN" )
SET DATE TO BRITISH
SET EPOCH TO 1980
SET DATE FORMAT "DD/MM/YYYY"
if Nro_usu1<10
Nro_usu2=str(Nro_usu1,1)
else
Nro_usu2=str(Nro_usu1,2)
endif
Abre_dbf("PROFESIO",1,.f.,"")
Stor 0 to t2
AADD( aProfe,{ "",""})
go top
Do While !Eof()
If Est_pro="S".and.Tip_esp="EC "
t2=1
AADD( aProfe,{ a->Cod_pro,a->Nom_pro})
Endif
a->(DbSkip())
Enddo
DbClosearea()
If t2=0
MsgStop(" NO Existen Profesionales Medicos Para Informar ")
dbclosearea()
Return
Endif
ASORT( aProfe,,, { |x,y| x[2] < y[2] } )
// aProfe:= profesio->( FW_DbfToArray("Cod_pro,Nom_pro" ) )
*/
Abre_dbf("ECOGRA",2,.f.,"")
set inde to ecogra
Abre_dbf("GEINFEC",1,.f.,"")
set inde to foinfec
Abre_dbf("EXAECO",3,.f.,"")
set inde to exaeco,exaboec
Seek Tip_ate1
If Eof()
MsgStop(" NO Existen Examenes a Informar ")
dbclosearea()
Return
Endif
do while (tip_ate=Tip_ate1).and.!eof()
if ctod(fec_emi)<date()
sele geinfec
seek exaeco->nro_bon
if !eof()
sele exaeco
do while .t.
if flock()
dele
dbunlock()
exit
else
Msgwait( "Espere Archivo Ocupado","ESPERE",3 )
endif
enddo
else
sele ecogra
seek exaeco->nro_bon
if !eof().and.tip_pag="NULO"
sele exaeco
do while .t.
if flock()
dele
dbunlock()
exit
else
Msgwait( "Espere Archivo Ocupado","ESPERE",3 )
endif
enddo
endif
endif
else
Sele geinfec
seek exaeco->nro_bon
if !eof()
sele exaeco
do while .t.
if flock()
Repl Inf_exa with "S"
dbunlock()
exit
else
Msgwait( "Espere Archivo Ocupado","ESPERE",3 )
endif
enddo
endif
endif
sele exaeco
skip
enddo
sele geinfec
// dbclosearea()
sele ecogra
dbclosearea()
sele exaeco
Dbcommit()
cAlias="EXAECO"
Define Font oFont1 Name "Curier New" Size 0,15 BOLD
Define Font oFont2 Name "Curier New" Size 0,18 BOLD
Define Font oFont Name "Courier new" Size 0,22 BOLD
DEFINE DIALOG oDlg RESOURCE "#1005" Title " "
REDEFINE SAY oSay1 ID 101 PROMPT "FECHA A INFORMAR" OF oDlg FONT oFont1
REDEFINE SAY oSay ID 100 PROMPT "PACIENTES DEL DIA "+dtoc(dFecha) OF oDlg FONT oFont COLORS RGB(12, 135, 27)
REDEFINE DTPICKER oFecha VAR dFecha ID 103 OF oDlg FONT oFont2 PICTURE "@d" UPDATE ;
ON CHANGE IF(!Procesa(dFecha),(MsgStop(Mensa),.F.), (oIngre:Refresh(),oSay:Refresh(), .T.) )
oFecha:SetFont( oFont)
REDEFINE BTNBMP ID 105 Resource "#8004" OF oDlg TRANSPARENT ADJUST 2007;
ACTION (Cierra(),oDlg:END())
REDEFINE BTNBMP ID 110 Resource "#8005" OF oDlg TOOLTIP "BUSCAR INGRESOS" FONT oFont1 TRANSPARENT ADJUST 2007;
ACTION IF(!Procesa(dFecha),(MsgStop(Mensa),.F.), (oIngre:Refresh(),oSay:Refresh(), .T.) ) // Aqui Boton Acepta
** oBtn1: l2007 := TRUE
REDEFINE XBROWSE oIngre DATASOURCE ALIAS(3) ;
COLUMNS;
"Fec_emi",;
"Nro_ing",;
"Nro_bon",;
OemToAnsi( "Nom_pac"),; <===== ESTE DATO SE MUESTRA INCORRECTO
"cod_ara",;
"Tip_pag",;
"hor_dig",;
"Cod_dig";
HEADERS;
"Fecha Ing.",;
"Nro",;
"Folio Ing.",;
"Nombre de Paciente",;
"Tipo de Examen",;
"T. Pago",;
"Hr.Ing",;
"Cod-Dig.";
PICTURES "@!","9999","9999999999","@!","@!","@!","@!","@!";
ID 104 OF oDlg;
FONT oFont1;
FOOTERS LINES CELL
oCol := oIngre:AddCol()
oCol:AddResource("#8047")
oCol:AddResource("#8048")
oCol:cHeader = "Est."
oCol:bBmpData := { || IIF(exaeco->Inf_exa = "S",1,2 )}
oIngre:nMarqueeStyle := MARQSTYLE_HIGHLROW
oIngre:nColDividerStyle := LINESTYLE_INSET
oIngre:nRowDividerStyle := LINESTYLE_INSET
oIngre:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
oIngre:nOpacity := 230
oIngre:l2007:=.t.
oIngre:lVScroll := .t.
oIngre:lHScroll := .t.
oIngre:lFooter := .f.
oIngre:bKeyDown:={|nKey| iif(nKey=32.or.nKey=VK_RETURN,Act_eco1(),oIngre:Refresh())}
oIngre:bLDblClick:={||Act_eco1(exaeco->Nro_bon,aProfe),oIngre:Refresh()}
ACTIVATE DIALOG oDlg CENTERED ON INIT (oIngre:SetFocus())
Return
Static Function ValidaFec1()
MsgStop(" FECHA VALIDADA ")
Return
Static Function Cierra()
Close all
Return
Static FUNCTION Procesa(dFecha)
If dFecha>Date()
Mensa= (" Fecha de Informe Debe Ser Menor o Igual a "+dtoc(date()))
oFecha:=Setfocus()
Return .f.
Endif
Sele Exaeco
Seek Tip_ate1+dtos(dFecha)
if eof()
Seek Tip_ate1+Subs(dtos(dFecha),1,6)
if eof()
Seek Tip_ate1+Subs(dtos(dFecha),1,4)
if eof()
dbGotop()
Mensa= (" No Existen Ingresos a Informar para el dia "+dtoc(dFecha))
Return .f.
endif
endif
endif
Return .t.