Problema con tdolphin mas reciente

Problema con tdolphin mas reciente

Postby carlos vargas » Fri Jan 17, 2014 9:57 pm

Daniel

con los últimos cambios en thdolphin
sucede que en una consulta con columnas tipo lógicas o de fecha, cuando no contienen datos, se convierten en tipo caracter vació.
revisando el código y comparando he realizado los siguientes cambios:

Code: Select all  Expand view

METHOD VerifyValue( nIdx, cField ) CLASS TDolphinQry

   LOCAL cType, uValue
   LOCAL nPad

   cType := ::aStructure[ nIdx ][ MYSQL_FS_CLIP_TYPE ] //, ::aStructure[ nIdx ][ MYSQL_FS_TYPE ]

   SWITCH cType
      CASE "L"
         IF cField == NIL //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR.
            uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), .F., cField )
         ELSE
            uValue := If( ValType( cField ) == "L", cField, !( Val( cField ) == 0 ) )
         ENDIF
         EXIT

      CASE "N"

         IF cField == NIL //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR.
            uValue = If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), 0, cField )
         ELSE
            uValue = If( ValType( cField ) == "N", cField, Val( cField ) )
         ENDIF
         EXIT

      CASE "D"
         IF Empty( cField ) //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR.
            uValue = If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ),  CToD( "" ), cField )
         ELSE
            uValue := If( ValType( cField ) == "D", cField, SqlDate2Clip( cField ) )
         ENDIF
         EXIT
      CASE "M"
         // we can not use PadR in  memo field
         IF ( cField == NIL .OR. Empty(cField) )
            uValue := ""
         ELSE
            uValue := cField
         ENDIF
         EXIT
      CASE "T"
      CASE "C"
         IF D_SetPadRight()
            nPad = Min( If( ::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ] > ::aStructure[ nIdx ][ MYSQL_FS_LENGTH ],;
                      ::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ], ::aStructure[ nIdx ][ MYSQL_FS_LENGTH] ), MAX_BLOCKSIZE )
         ELSE
            nPad = 0
         ENDIF
         IF ( cField == NIL .OR. Empty(cField) )
            uValue = If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), PadR(nPad), cField )
         ELSE
            uValue := PadR( cField, Max( Len( cField ), nPad ) )
         ENDIF

         EXIT
#ifdef __XHARBOUR__
      DEFAULT
#else
      OTHERWISE
#endif
  //       uValue = cField
      ENDSWITCH

RETURN uValue

 


otra cosa, has visto este post
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27901&p=155778&hilit=carlos+vargas#p155778
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema con tdolphin mas reciente

Postby carlos vargas » Fri Jan 17, 2014 10:29 pm

Daniel

Otras cosa que note haciendo una función propia de búsqueda es: en la ordenación de un query con un xbrowse
establece que dando click en una columna se ordena ascendentemente, si nuevamente damos click en esa misma columna se ordena descendente
en oQuery:cOrder se almacena el nombbre de la columna ordenada actualmente.

por ejemplo:

Code: Select all  Expand view
?oQuery:cOrder  // mostraria "NOMBRE" si la columna del query se llama NOMBRE y esta ordenada ascendentemente

y
Code: Select all  Expand view
?oQuery:cOrder  // mostraria "NOMBRE DESC" si la columna del query se llama NOMBRE y esta ordenada descendentemente


yo en mi funcion propia me he visto obligado a eliminar la parte " DESC" para que no me diera error.
no se si por ahi van los problemas con el methodo Seek propio de tdolphin cuando cambias entre columnas ordenadas, esto esta reportado en un post anterior, lo ubicare para indicarlo aca.

en este momento no pude hacer pruebas pero tu que tienes mas control sobre la clase sabrás si es relevante esto.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema con tdolphin mas reciente

Postby Daniel Garcia-Gil » Sat Jan 18, 2014 12:42 pm

Carlos

Gracias, ahpra me encuentro fuera de mi pais atendiendo unos asuntos de trabajo, a la brevedad reviso lo que me comentas
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Problema con tdolphin mas reciente

Postby carlos vargas » Mon Mar 24, 2014 1:05 am

Daniel, podria corregir asi este codigo, cuando los valores logicos y fechason vacios, los cambia a tipo caracter en el query
asi funciona bien.

Code: Select all  Expand view

METHOD VerifyValue( nIdx, cField ) CLASS TDolphinQry

   LOCAL cType, uValue
   LOCAL nPad

   cType := ::aStructure[ nIdx ][ MYSQL_FS_CLIP_TYPE ] //, ::aStructure[ nIdx ][ MYSQL_FS_TYPE ]

   SWITCH cType
      CASE "L"
         IF cField == NIL //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR.
            uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), .F., cField )
         ELSE
            uValue := If( ValType( cField ) == "L", cField, !( Val( cField ) == 0 ) )
         ENDIF
         EXIT

      CASE "N"
         IF cField == NIL //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR.
            uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), 0, cField )
         ELSE
            uValue := If( ValType( cField ) == "N", cField, Val( cField ) )
         ENDIF
         EXIT

      CASE "D"
         IF cField == NIL  //.OR. Empty(cField) <------------------------ ACA SE COMENTA ANTES DEl .OR. y se pone al inicio IF cField == NIL
            uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ),  CToD( "" ), cField )
         ELSE
            uValue := If( ValType( cField ) == "D", cField, SqlDate2Clip( cField ) )
         ENDIF
         EXIT
      CASE "M"
         // we can not use PadR in  memo field
         IF ( cField == NIL .OR. Empty(cField) )
            uValue := ""
         ELSE
            uValue := cField
         ENDIF
         EXIT
      CASE "T"
      CASE "C"
         IF D_SetPadRight()
            nPad = Min( If( ::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ] > ::aStructure[ nIdx ][ MYSQL_FS_LENGTH ],;
                      ::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ], ::aStructure[ nIdx ][ MYSQL_FS_LENGTH] ), MAX_BLOCKSIZE )
         ELSE
            nPad := 0
         ENDIF
         IF ( cField == NIL .OR. Empty(cField) )
            uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_FLAGS ] ), PadR(nPad), cField )
         ELSE
            uValue := PadR( cField, Max( Len( cField ), nPad ) )
         ENDIF
         EXIT

#ifdef __XHARBOUR__
      DEFAULT
#else
      OTHERWISE
#endif
  //       uValue = cField
      ENDSWITCH

RETURN uValue
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema con tdolphin mas reciente

Postby Daniel Garcia-Gil » Fri Mar 28, 2014 1:44 am

Carlos

estoy pendiente por hacelo
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Problema con tdolphin mas reciente

Postby carlos vargas » Fri Mar 28, 2014 2:44 am

ok, daniel, gracias.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 35 guests