In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Locate en TDataSet

Foro público de Xailer en español
User avatar
XeviCOMAS
Posts: 520
Joined: Sat Mar 12, 2011 8:16 pm

Locate en TDataSet

Postby XeviCOMAS » Thu May 23, 2019 12:56 pm

Siguiendo con el Locate, después del mensaje que ya postee y que no se me contestó, otro detalle que si que me es un problema, es cuando en ese Locate de un TDataSet, más concretamente un TDbfDataSet, si el campo a localizar contiene alguna comilla simple, lanza error.

texto a localizar A D'

Code: Select all

****************************** Registre d'errors ******************************

             Exe: \\Server10\c\@Soft\Compta\CWin.exe
         Version: 4.19.5.15
           Build: 15
       User name: Xevi
   Computer name: HPPORTATILI7
           Data: 23/05/2019
            Hora: 12:50:24
   Memòria lliure: 2097151
     Àrea actual: 1

-------------------------- Informació del compilador --------------------------

  Versió Xailer: Xailer 6.0.4
      Compilador: Harbour 3.2.0dev (r1803161710)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
      Plataforma: Windows 10 10.0

----------------------- Informació detallada del error ------------------------

      Subsistema: BASE
 Codi d'error: 1449
          Estat: .F.
     Descripció: Error de sintaxis
       Operació: &
      Arguments:  [ 1] = Tipus: C Valor: {||DESCRIPCIO >= 'A D''}
         Fitxer:
 Codi error SO: 0

Pila de trucades:
  TDBFDATASET:LOCATE (516)
  XRECERCA (365)
  TMDIFORM:EDITRECERCACHANGE (352)
  TMASKEDIT:ONCHANGE (0)
  (b)XEDIT (95)
  TEDIT:CHANGE (0)
  (b)XMASKEDIT (66)
  TMASKEDIT:CHANGE (0)
  TMASKEDIT:COMMAND (166)
  TSCROLLINGWINCONTROL:WMCOMMAND (275)
  TMDIFORM:WMCOMMAND (952)
  SENDMESSAGE (0)
  (b)XCONTROL (101)
  TMASKEDIT:SENDMSG (0)
  TMASKEDIT:INPUT (614)
  TMASKEDIT:WMCHAR (104)
  RUNFORM (0)
  TAPPLICATION:RUN (289)
  MAIN (23)

------------------- Informació detallada d'àrees de treball -------------------

            Àrea: 1
           Àlies: CMAEC
        Registre: 118
          Filtre:
        Relació:
Ordre de l'índex: 10
    Clau activa: 10


¿Cómo lo haceis en estos casos???
¿Alguna función como para un TSQLTable como StrSQL(cTexto) ???

Gracias por vuestro tiempo
Un Saludo,
Xevi.
User avatar
XeviCOMAS
Posts: 520
Joined: Sat Mar 12, 2011 8:16 pm

Re: Locate en TDataSet

Postby XeviCOMAS » Thu May 23, 2019 4:56 pm

He probado con la función StrSQLite(), pero no resuelve el problema.

Code: Select all

****************************** Registre d'errors ******************************

             Exe: D:\XeviXailer (local)\GWin\GWin.exe
         Version: 4.19.5.22
           Build: 22
       User name: Xevi
   Computer name: HPPORTATILI7
           Data: 23/05/2019
            Hora: 16:55:40
   Memòria lliure: 2097151
     Àrea actual: 1

-------------------------- Informació del compilador --------------------------

  Versió Xailer: Xailer 6.0.4
      Compilador: Harbour 3.2.0dev (r1803161710)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
      Plataforma: Windows 10 10.0

----------------------- Informació detallada del error ------------------------

      Subsistema: BASE
 Codi d'error: 1449
          Estat: .F.
     Descripció: Error de sintaxis
       Operació: &
      Arguments:  [ 1] = Tipus: C Valor: {||NOM >= 'D'''}
         Fitxer:
 Codi error SO: 0

Pila de trucades:
  TDBFDATASET:LOCATE (516)
  EDITRECERCACHANGECLIENTS (279)
  TFRMCLIENTS:EDITRECERCACHANGE (264)
  TMASKEDIT:ONCHANGE (0)
  (b)XEDIT (95)
  TEDIT:CHANGE (0)
  (b)XMASKEDIT (66)
  TMASKEDIT:CHANGE (0)
  TMASKEDIT:COMMAND (166)
  TSCROLLINGWINCONTROL:WMCOMMAND (275)
  TFRMCLIENTS:WMCOMMAND (952)
  SENDMESSAGE (0)
  (b)XCONTROL (101)
  TMASKEDIT:SENDMSG (0)
  TMASKEDIT:INPUT (614)
  TMASKEDIT:WMCHAR (104)
  RUNFORM (0)
  TAPPLICATION:RUN (289)
  MAIN (24)

------------------- Informació detallada d'àrees de treball -------------------

            Àrea: 1
           Àlies: CLIEN
        Registre: 3003
          Filtre:
        Relació:
Ordre de l'índex: 4
    Clau activa: 4

Un Saludo,
Xevi.
User avatar
XeviCOMAS
Posts: 520
Joined: Sat Mar 12, 2011 8:16 pm

Re: Locate en TDataSet

Postby XeviCOMAS » Thu May 23, 2019 5:31 pm

:Locate( "MICAMPO = '" + xStrDBF( "Carte d'Or" ) + "'" )

He hecho esta funcioncilla

Code: Select all

FUNCTION xStrDBF( cText )
RETURN StrTran( cText, "'", ['+"'"+'] )


Y está funcionando correctamente!!!

Igual a alguno le puede servir.


Gracias por vuestro tiempo.
Un Saludo,
Xevi.

Return to “Spanish”