Entrar
¿Usuario nuevo? Regístrate
eagle1 · Eagle1 usuarios
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes añadir enlaces en tu web relacionados con tu grupo.

Mensajes

  Mensajes Ayuda
Avanzado
[ query ] - No encuentra metodo RecCount   Lista de mensajes  
Responder | Reenviar Mensaje #1181 de 1702 |
Re: [eagle1] RE: [ query ] - No encuentra metodo RecCount

Esto es justamente lo que quise hacer pero me dio el error.
 
 IF lResultado
        // Esta comprobación la haría yo en la funcion que llame a este método "LeerTabla"
        IF oQuerylocal:RecCount() < 1
            MyMsg( "No hay registros que cumplan con las condiciones de la seleción de datos" )
        endif
 
 

ELSE...
 
El error persiste
 
 
----- Original Message -----
From: Manu
Sent: Tuesday, May 22, 2007 7:03 PM
Subject: Re: [eagle1] RE: [ query ] - No encuentra metodo RecCount

Mira la parte final...
He comentado los cambios. Si no lo entiendes me lo dices y ya dirás si
ya funciona ;-)

GoosFancito escribió:
>
> ok.
>
> Aca envio el metodo que utilizo para que me devuelve ese "select"
>
> Gracias.
>
>
> ----- Original Message -----
> *From:* Manu <mailto:manuexposito@terra.es>
> *To:* eagle1@yahoogroups.com <mailto:eagle1@yahoogroups.com>
> *Sent:* Tuesday, May 22, 2007 3:08 PM
> *Subject:* Re: [eagle1] RE: [ query ] - No encuentra metodo RecCount
>
> Ya sé Gustavo, pero aún así insisto que pongas un PRG donde se
> demuestre
> ese comportamiento ya que el objeto se debería crear siempre y co él
> todas sus datas y sus métodos...
>
> Si puedes adjuntas la sentencia para crear la tabla.
>
> GoosFancito escribió:
> >
> > Es muy sencillo.
> >
> > Crear la conexion.
> > Crear el select y cuando no devuelve nada ahi esta el error.
> >
> > En ese caso tube que hacer asi:
> >
> > Sabiendo que oQuery es el objeto:
> >
> > if oQuery == nil
> > ? "no devolvio datos"
> > endif
> >
> > ya que esto no funciona:
> >
> > if oQuery:RecCount() > 0
> > ? "No devolvio datos"
> > endif
> >
> >
> >
> >
> > ----- Original Message -----
> > *From:* loloexpo <mailto:manuexposito@terra.es
> <mailto:manuexposito%40terra.es>>
> > *To:* eagle1@yahoogroups.com <mailto:eagle1%40yahoogroups.com>
> <mailto:eagle1@yahoogroups.com <mailto:eagle1%40yahoogroups.com>>
> > *Sent:* Monday, May 21, 2007 6:48 PM
> > *Subject:* [eagle1] RE: [ query ] - No encuentra metodo RecCount
> >
> > Hola Gustavo... puedes enviar un PRG donde se vea el problema?
> >
> > --- En eagle1@yahoogroups.com <mailto:eagle1%40yahoogroups.com>
> <mailto:eagle1@yahoogroups.com <mailto:eagle1%40yahoogroups.com>>,
> > "GoosFancito" <goosfancito@...> escribió:
> > >
> > > Gente.
> > >
> > > De vuelta por estos pagos. Estoy teniendo un problema.
> > >
> > > Cuando realizo un query y no encuentra registros, el eagle "no me
> > crea el objeto"
> > > por ende cuando quiero llamar al metodo RecCount() no lo
> encuentra.
> > >
> > > Como lo soluciono?
> > >
> > > Gracias,.
> > >
> >
> >
> >
> > __________ Información de NOD32, revisión 2284 (20070522) __________
> >
> > Este mensaje ha sido analizado con NOD32 antivirus system
> > http://www.nod32.com <http://www.nod32.com>
>
>
>
> __________ Información de NOD32, revisión 2285 (20070522) __________
>
> Este mensaje ha sido analizado con NOD32 antivirus system
> http://www.nod32.com




METHOD LeerTabla( aSelect, aJoin, aWhere, uOrden, nLimit, lAND, lContieneCadena ) CLASS TConexion

   LOCAL cTabla          := "", ;
         cSelect         := "", ;
         cJoin           := "", ;
         cWhere          := "", ;
         cQuery          := "", ;
         cParte          := "", ;
         cNuevaRelacion  := "", ;
         cConectorLogico := "", ;
         xElemento

   LOCAL oQueryLocal, ;
         nItem      := 0, ;
         lResultado := .T.

   DEFAULT  lAND            := .T., ;
            lContieneCadena := .F.


   ::nError:= 0

   //----------( CREA EL SELECT )----------

   AEval( aSelect, { | xElemento | cSelect += Lower( xElemento ) + ", " } )

   cSelect:= Left( cSelect, Len( cSelect ) - 2 )

   cTabla := " FROM " + Left( cSelect, At( ".", cSelect ) - 1 ) + " "

   cSelect := "SELECT " + cSelect

   //----------( Crea el Join )----------


   IF aJoin != NIL

      FOR EACH xElemento IN aJoin

         // Tomo la parte despues del =
         // para en el proximo paso tomar lo que esta antes del punto
         // y obtener en nombre de la tabla con que se va a relacionar
         cParte:= Lower( SubStr( xElemento, At( "=", xElemento ) + 1 ) )

         // ahora necesito tener lo que está antes del punto asi
         // lo tomo como "tabla que va a relacionarse"
         cParte:= AllTrim( SubStr( cParte, 1, At( ".", cParte ) - 1 ) )

         IF Empty( cNuevaRelacion )
            cNuevaRelacion:= cParte
            // Armo el join Hasta aca
            cJoin += "LEFT JOIN " + cParte + " ON " + xElemento + " "
         ELSE
            IF cNuevaRelacion == cParte
               cJoin += " and " + xElemento
            ELSE
               // Armo el join Hasta aca
               cJoin += " LEFT JOIN " + cParte + " ON " + xElemento + " "
               cNuevaRelacion:= cParte
            ENDIF
         ENDIF

      NEXT

      #ifdef __CQUERY__
         VIEW cJoin
      #endif

   ENDIF

   //----------( Crea el WHERE )----------

   IF aWhere != NIL

      cWhere:= " WHERE "

      FOR EACH xElemento IN aWhere

         IF lContieneCadena = .F.

            IF ValType( xElemento[2] ) = "N"
               cWhere += xElemento[1] + "= '" + AllTrim( Str( xElemento[2] ) ) + cConectorLogico
            ELSE
               cWhere += xElemento[1] + "= '" + xElemento[2] + cConectorLogico
            ENDIF
         ELSE
            IF ValType( xElemento[2] ) = "N"
               cWhere += xElemento[1] + " LIKE '" + AllTrim( Str( xElemento[2] ) ) + "%'" + cConectorLogico
            ELSE
               cWhere += xElemento[1] + " LIKE '"+ xElemento[2] + "%'" + cConectorLogico
            ENDIF
         ENDIF

      NEXT

      cWhere:= Left( cWhere, Len( cWhere ) - Len( cConectorLogico ) + 1 )

      #ifdef __CQUERY__
         VIEW cWhere
      #endif

   ENDIF

   //----------( se crea la cadena QUERY )----------

   cQuery:= cSelect + cTabla + cJoin + cWhere

   IF nLimit == NIL
      oQueryLocal:= TMSQuery():New( ::oConexion )
      oQueryLocal:SetReadPADAll( .T. )

      IF lContieneCadena
         cQuery:= Left( cQuery, Len( cQuery ) - 1 )
      ENDIF

      IF !( oQueryLocal:Open( cQuery + ' ORDER BY 1 DESC ' ) )
         ::nError:= 4   // El select esta bien, pero no devolvio datos
         RETURN ( NIL )
      ELSE
         IF oQueryLocal:RecCount() == 0
            ::uUltimoCampoClave:= NIL
         ELSE
            ::uUltimoCampoClave:= oQueryLocal:FieldGet( 1 )
         ENDIF
//         oQueryLocal:close()   // <---------------------------- Para reciclar el objeto
      ENDIF

   ENDIF

   IF uOrden != NIL
      IF ValType( uOrden ) $ "CN"
         cQuery += ' ORDER BY '
         IF ValType( uOrden )== "N"
            uOrden := StrNum( uOrden )    // StrNum es -> AllTrim( Str( n ) )
         ENDIF
         cQuery += uOrden
       ENDIF

   ENDIF

   IF nLimit != NIL
      cQuery += " LIMIT " + StrNum( nLimit )
   ENDIF

   IF ValType( oQueryLocal ) != "O"
        // Si existe porque lo reciclamos no hace falta volverlo a crear
        oQueryLocal:= TMSQuery():New( ::oConexion )
        oQueryLocal:SetReadPADAll( .T. )
    ENDIF
// Quito esto porque no sé exactamente qué hace esta función por dentro :-)
//   msgrun( "Accediendo a los datos...", ".:::. Espere .::.", { || lResultado:= oQueryLocal:Open( cQuery ) } )

   lResultado:= oQueryLocal:Open( cQuery )

   IF lResultado
        // Esta comprobación la haría yo en la funcion que llame a este método "LeerTabla"
        IF oQuerylocal:RecCount() < 1
            MyMsg( "No hay registros que cumplan con las condiciones de la seleción de datos" )
        endif
   ELSE
        MyMsg( "Error al abrir el conjunto de resultados" )
        oQueryLocal:Close()  // <----------------- Yo quitarí esto
        RETURN ( nil )       // <----------------- Lo dejo por coherencia con tu método
   ENDIF


/*
      // Aca es donde deberia de crear igual el objeto, asi no encuentre datos el select

      ::nError:= 4         // No hay datos para devolver
      RETURN ( nil )
   ENDIF
*/

   RETURN ( oQueryLocal ) // Me imagino que tendrás en cuenta que este método pude devolver NIL o un objeto TMSQuery


Mar, 22 de Mayo, 2007 11:28 pm

goosfancito
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #1181 de 1702 |
Desplegar mensajes Autor Ordenar por fecha

Gente. De vuelta por estos pagos. Estoy teniendo un problema. Cuando realizo un query y no encuentra registros, el eagle "no me crea el objeto" por ende cuando...
goosfancito
Sin conexión Enviar mensaje
20 de Mayo, 2007
2:01 pm

Hola Gustavo... puedes enviar un PRG donde se vea el problema? ... crea el objeto"...
loloexpo
Sin conexión Enviar mensaje
21 de Mayo, 2007
9:50 pm

Es muy sencillo. Crear la conexion. Crear el select y cuando no devuelve nada ahi esta el error. En ese caso tube que hacer asi: Sabiendo que oQuery es el...
goosfancito
Sin conexión Enviar mensaje
21 de Mayo, 2007
9:54 pm

Ya sé Gustavo, pero aún así insisto que pongas un PRG donde se demuestre ese comportamiento ya que el objeto se debería crear siempre y co él todas sus...
Manu
loloexpo
Sin conexión Enviar mensaje
22 de Mayo, 2007
6:29 pm

ok. Aca envio el metodo que utilizo para que me devuelve ese "select" Gracias. ... From: Manu To: eagle1@yahoogroups.com Sent: Tuesday, May 22, 2007 3:08 PM ...
goosfancito
Sin conexión Enviar mensaje
22 de Mayo, 2007
9:09 pm

Mira la parte final... He comentado los cambios. Si no lo entiendes me lo dices y ya dirás si ya funciona ;-) ... METHOD LeerTabla( aSelect, aJoin, aWhere,...
Manu
loloexpo
Sin conexión Enviar mensaje
22 de Mayo, 2007
10:04 pm

Miro y te comento. Gracias. ... From: Manu To: eagle1@yahoogroups.com Sent: Tuesday, May 22, 2007 7:03 PM Subject: Re: [eagle1] RE: [ query ] - No encuentra...
goosfancito
Sin conexión Enviar mensaje
22 de Mayo, 2007
10:34 pm

Esto es justamente lo que quise hacer pero me dio el error. IF lResultado // Esta comprobación la haría yo en la funcion que llame a este método "LeerTabla"...
goosfancito
Sin conexión Enviar mensaje
22 de Mayo, 2007
11:41 pm

Gustavo móntate un PRG autocontenido que reproduzca el error, yo no lo consigo......
Manu
loloexpo
Sin conexión Enviar mensaje
23 de Mayo, 2007
3:19 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda