Ordenacion Mayúsculas/Minúsculas

Post Reply
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Ordenacion Mayúsculas/Minúsculas

Post by JoseLuis »

Buenas

Hago un índice así:

Code: Select all

index on &(AnsiUpper("PROVE->Calle")) tag &("Calle")
o así

Code: Select all

index on &(Upper("PROVE->Calle")) tag &("Calle")
o así

Code: Select all

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: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Post by JoseLuis »

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Post by karinha »

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

Saludos.
João Santos - São Paulo - Brasil
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Post by JoseLuis »

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

 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

//----------------------------------------------------------------------------//

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Post by karinha »

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

    ISLOWER()
    ISUPPER()
 
http://harbour.edu.pl/clipper/en/C53G01C/ng34b.html

Saludos.
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Post by karinha »

João Santos - São Paulo - Brasil
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Post by JoseLuis »

Muchas gracias Joao.

Lo miro y te comento

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

Jose Luis
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ordenacion Mayúsculas/Minúsculas

Post by cnavarro »

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> )
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
gsabattino
Posts: 100
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Re: Ordenacion Mayúsculas/Minúsculas

Post by gsabattino »

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

index on Upper( PROVE->Calle ) tag Calle


Saludos,
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Ordenacion Mayúsculas/Minúsculas

Post by JoseLuis »

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenacion Mayúsculas/Minúsculas

Post by karinha »

Una idea,

Code: Select all

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
Post Reply