Ordenacion Mayúsculas/Minúsculas

Ordenacion Mayúsculas/Minúsculas

Postby JoseLuis » Wed Aug 15, 2018 11:44 am

Buenas

Hago un índice así:
Code: Select all  Expand view
index on &(AnsiUpper("PROVE->Calle")) tag &("Calle")

o así
Code: Select all  Expand view
index on &(Upper("PROVE->Calle")) tag &("Calle")

o así
Code: Select all  Expand view
index on PROVE->Calle tag &("Calle")


y siempre me ordena la calle poniéndome primero las mayúsculas y luego las minúsculas.

Hay alguna forma de indexar que de igual que sea mayúscula o minúscula, es decir, que las vaya intercalando?

Saludos
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Postby JoseLuis » Wed Aug 29, 2018 6:31 pm

Sigo sin resolverlo

Y ésto, creo que me afecta a que cuando hago una búsqueda, si la hago con Upper(string), solo me presenta las grabadas en mayúsculas, y si no, sólo las minúsculas.

Tiene esto algo que ver con lo expresado anteriormente?.

He puesto al principio del programa:

REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN
HB_LangSelect("ES")
HB_SetCodePage("ESWIN")

y nada, sigue igual

Un saludo
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Postby karinha » Wed Aug 29, 2018 7:34 pm

Muestra como usted hace la búsqueda via fuente porfa.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Postby JoseLuis » Wed Aug 29, 2018 9:38 pm

El campo es Calle, y me pone primero las mayusculas

esta es la imagen del wbrowse

Imagewbrowse by Jose Luis Garcia


en el browse:
Code: Select all  Expand view
oLbx:bKeyChar := { | nKey, nFlags | ;
              iif (nKey == 43 .or. nKey == 65 .or. nKey == 97,;
                          (entreg(cTitulo,"A",aAlias,aoDbf), oLbx:Refresh()), ),;
              iif (nKey == 76 .or. nKey == 108,;
                          (Busca(aAlias[21],oLbx,oTab,tQbusco), oLbx:Refresh()), ),;
          iif (nKey == 66 .or. nKey == 98,;
                          (Borra1(aAlias),oLbx:UpStable(), oLbx:Refresh()), ),;
              iif (nKey == 77 .or. nKey == 109,  ;
                          (entreg(cTitulo,"M",aAlias,aoDbf),oLbx:Refresh() ), ) }


Funcion busca:

Code: Select all  Expand view
//----------------------------------------------------------------------------//

function Busca(cAlias,oLbx,oTab,tQbusco,BusRaiz)
************************************************
local oDlg,aAlias
local oBusco,oboton
local oCbx,osay
local cBusco, cIndi
local nClave
local aIndi:={}
local nReg:=(cAlias)->(Recno())
DEFAULT BusRaiz:=""
aeval( tQbusco[3] , { |LX| aadd(aIndi,strtran(LX,"&")) } )
  DEFINE DIALOG oDlg RESOURCE "LOCALIZA2" BRUSH Publicas:oBrush1 TRANSPARENT Font Publicas:oWPpal:ofont
  REDEFINE SAY osay ID 10 OF oDlg COLOR CLR_GREEN
  REDEFINE GET oBusco VAR cBusco  ID 100 OF oDlg ;
       ON CHANGE ( nClave:=( cAlias )->(recno()),;
              ::Assign(),;
              iif( (cAlias)->(dbseek(Upper( Substr(cBusco, 1,::nPos -1)))), .T. ,;
                   ( (cAlias)->( dbGoto ( Recno() )), .f.) ),oLbx:Refresh(),;
                  iif (Chr(nKey)=13,oDlg:End(),.T.))
  REDEFINE COMBOBOX oCbx VAR aIndi[oTab:nOption] ITEMS aIndi ID 101 OF oDlg ;
           ON CHANGE (oTab:nOption:=oCbx:nAt,oTab:refresh(),;
        cBusco:=tQbusco[2,oCbx:nAt], ;
        (cAlias)->(OrdSetFocus(tQbusco[1,oCbx:nAt])),oLbx:Refresh(),;
        oBusco:Refresh(), oBusco:setFocus(), oDlg:Update() )
  REDEFINE BUTTON oboton ID 102 OF oDlg PROMPT "Aceptar" ;
                ACTION oDlg:End() CANCEL

  ACTIVATE DIALOG oDlg CENTERED ON INIT Tget():lClrFocus:=.T.
  if Busraiz='C' .or. Busraiz='S'
  cbusco:=alltrim(cbusco)
  obusco:blostfocus := {||oDlg:End()}
  else
  cBusco:=tQbusco[2,oTab:nOption]
  cIndi :=aIndi[oTab:nOption]      
  endif
return cbusco
//------------------------------------------------
 


Un saludo
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Postby karinha » Thu Aug 30, 2018 1:13 pm

SET EXACT está ON?

Cambia el ON CHANGE para una FUNCTION, creo sea mejor para el controle.

Mira también el comando ASCAN()

y

Code: Select all  Expand view

    ISLOWER()
    ISUPPER()
 


http://harbour.edu.pl/clipper/en/C53G01C/ng34b.html

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Postby karinha » Thu Aug 30, 2018 1:39 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Postby JoseLuis » Thu Aug 30, 2018 5:47 pm

Muchas gracias Joao.

Lo miro y te comento

Un saludo
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Postby cnavarro » Thu Aug 30, 2018 10:07 pm

Por favor, indica qué versión de Fivewin y (x)Harbour utilizas ( por ejemplo en tu firma ), así será más fácil comentar tus posts.

Es posible que no tenga nada que ver, pero por si acaso, te comento lo siguiente:

- Pantalla: al seleccionar en Harbour el codepage ESWIN, estás indicando a Harbour qué caracteres ha de utilizar y haga todas las "traducciones", y seguro que en eso no tienes problema.
- Base de datos: es posible que debas seleccionar la página de códigos correcta en la que se almacenan los datos y en la que quieres utilizar los datos, para permitir que Harbour haga su trabajo correctamente. Echa un vistazo al tutorial de Alexander (http://www.kresin.ru/en/hrbfaq.html#_Doc5) y mira cómo puede seleccionar un CODEPAGE en el comando USE o en la función dbUseArea ().
- Ten también en cuenta que hay varios codepages disponibles para español, por lo que puedes probarlos a ver los resultados que obtienes, así nos informas a todos de tu experiencia ( no olvides volver a generar tus indices cada vez que cambies el codepage, claro ):
    ES850 Español (Moderno) CP-850
    ES850C Español CP-850 ( ntx spa.obj compatible)
    ES850M Español CP-850 ( mdx spa.obj compatible)
    ESISO Español (Moderno) ISO-8859-1
    ESMWIN Español (Moderno) ISO-8859-1
    ESWIN Español (Moderno) Windows-1252

Además, puedes investigar cómo se setea globalmente los codepages que queremos utilicen nuestras bases de datos, para no tener que modificar tu código al tener que implementar el codepage en el comando USE y/o en la function DbUseArea:
(Esta es una forma de hacerlo)
Set( _SET_DBCODEPAGE, <codepage del que se ha realizado previamente un REQUEST> )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ordenacion Mayúsculas/Minúsculas

Postby gsabattino » Fri Aug 31, 2018 2:36 am

no veo la necesidad de usar macros en la creación de los indices:

index on Upper( PROVE->Calle ) tag Calle


Saludos,
User avatar
gsabattino
 
Posts: 102
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Re: Ordenacion Mayúsculas/Minúsculas

Postby JoseLuis » Fri Aug 31, 2018 12:47 pm

Buenas

Joao, he visto que en tu browse ocurre lo mismo:


Imagejoao by Jose Luis Garcia, en Flickr

No obstante, tienes una rutina de busqueda, que me va a servir de mucho, muchas gracias.

Con respecto a la version de fwh que utilizo, en concreto ésta aplicación está generada con la de abril del 2011 y con Verce.

Dispongo de otras FTDN posteriores, pero he intentado, por ejemplo con alguna del 2015, ya que en esta fecha veo que hubo modificacion importante de xbrowse y no soy capaz de compilar, me da muchos errores, y es que utilizo muchas librerias externas y de ahí vienen los errores, y dispongo de poco tiempo para ponerme con este tema.

Muchas gracias por las respuestas
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Postby karinha » Fri Aug 31, 2018 2:20 pm

Una idea,

Code: Select all  Expand view

FUNCTION MAISCULA()

   PARAMETERS VDBF

   IF VDBF = NIL

      ? "Informe o nome do DBF"

      QUIT

   ELSE

      IF !( "." $ VDBF )
         VDBF := VDBF + ".DBF"
      ENDIF

      IF !FILE( VDBF )
         ? "Arquivo " + VDBF
         QUIT
      ENDIF

   ENDIF

   SELE 1
   USE ( VDBF )

   IF !FILE( "DBF.OLD" )
      COPY TO "DBF.OLD"
   ENDIF

   VQCAM := FCOUNT()

   CAR_OLD := { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " ", "‚", "¡", "¢", "£", "Æ", "ä", "ƒ", "ˆ", "Œ", "“", "–", "…", "Š", "", "•", "—", "„", "‰", "‹", "”", "", "‡", "¤", "µ", "", "Ö", "à", "é", "Ç", "å", "¶", "Ò", "×", "â", "ê", "·", "Ô", "Þ", "ã", "ë", "Ž", "Ó", "Ø", "™", "š", "€", "¥" }

   CAR_NEW := { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "A", "E", "I", "O", "U", "A", "O", "A", "E", "I", "O", "U", "A", "E", "I", "O", "U", "A", "E", "I", "O", "U", "€", "¥", "A", "E", "I", "O", "U", "A", "O", "A", "E", "I", "O", "U", "A", "E", "I", "O", "U", "A", "E", "I", "O", "U", "€", "¥" }

   DO WHILE ( 1->( !EOF() ) )

      FOR I = 1 TO VQCAM

         VGET := FIELDGET( I )

         IF VALTYPE( VGET ) = "C"

            VQTAM := LEN( ALLTRIM( VGET ) )
            VPOE := .F.
            VTXT := ""

            FOR U = 1 TO VQTAM

               VSUB := SUBSTR( VGET, U, 1 )
               VP := ASCAN( CAR_OLD, VSUB )

               IF VP > 0
                  VCAR := CAR_NEW[VP]
                  VPOE := .T.
               ELSE
                  VCAR := VSUB
               ENDIF
               VTXT := VTXT + VCAR
            NEXT

            IF VPOE = .T.
               FIELDPUT( I, VTXT )
            ENDIF

         ENDIF

      NEXT

      SKIP

   ENDDO
   /*
   WIN_CAR_LOW:='áéíóúãõâêîôûàèìòùäëïöüçñ'
   WIN_CAR_HIG:='ÁÉÍÓÚÃÕÂÊÎÔÛÀÈÌÒÙÄËÏÖÜÇÑ'

   DOS_CAR_LOW:=' ‚¡¢£Æ䃈Œ“–…Š•—„‰‹”‡¤'
   DOS_CAR_HIG:='µÖàéÇå¶Ò×âê·ÔÞãëŽÓØ™š€¥'
   */


RETURN NIL
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 90 guests

cron