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
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Locate en TDataSet

Mensaje por XeviCOMAS »

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'

Código: Seleccionar todo

****************************** 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.
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Locate en TDataSet

Mensaje por XeviCOMAS »

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

Código: Seleccionar todo

****************************** 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.
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Locate en TDataSet

Mensaje por XeviCOMAS »

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

He hecho esta funcioncilla

Código: Seleccionar todo

FUNCTION xStrDBF( cText )
RETURN StrTran( cText, "'", ['+"'"+'] )
Y está funcionando correctamente!!!

Igual a alguno le puede servir.


Gracias por vuestro tiempo.
Un Saludo,
Xevi.
Responder