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

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Incisto. Porque el Eagle no crea el objeto...   Lista de mensajes  
Responder | Reenviar Mensaje #1191 de 1683 |
Re: [eagle1] Incisto. Porque el Eagle no crea el objeto...

Manu,
 
    En el ejemplo que envias no veo donde usas un SELECT.
 
Gracias
----- Original Message -----
From: Manu
Sent: Sunday, June 03, 2007 3:59 PM
Subject: Re: [eagle1] Incisto. Porque el Eagle no crea el objeto...

De cualquier modo prueba este programa que es con el que he hecho la
prueba....

Manu escribió:
>
> Gustavo por más que intento encontrar algo a mí no me da ese problema...
> Lo que voy a hacer si te parece es enviarte la última versión que está
> en periodo de transición a la version 5.03 pero que es totalemente
> funcional... ya así podrás probar con lo mismo que tengo yo aquí. Si te
> parece bien me lo dices...
>
> goosfancito escribió:
> >
> > Gente.
> >
> > Alguna ayuda? el eagle no me devuelve un objeto cuando al hacer un
> > select no encuentra datos.
> >
> > Alguna Ayuda?
> > Gracias
> >
> >
> >
> > __________ Información de NOD32, revisión 2305 (20070601) __________
> >
> > Este mensaje ha sido analizado con NOD32 antivirus system
> > http://www.nod32.com <http://www.nod32.com>
>
>
>
> __________ Información de NOD32, revisión 2305 (20070601) __________
>
> Este mensaje ha sido analizado con NOD32 antivirus system
> http://www.nod32.com


//----------------------------------------------------------------------------//
//  AUTOR.....: Manuel Expósito Suárez   Soft4U 2002-2006                     //
//  eMail.....: manuexposito@...                                        //
//  CLASE.....: Pt03.prg                                                      //
//  FECHA MOD.: 11/12/2006                                                    //
//  VERSION...: 5.02                                                          //
//  PROPOSITO.: Ejemplo de mantenimiento simple de una tabla                  //
//----------------------------------------------------------------------------//

//-- Definiciones ------------------------------------------------------------//

#define B_BOX ( CHR( 218 ) + CHR( 196 ) + CHR( 191 ) + CHR( 179 ) + ;
                CHR( 217 ) + CHR( 196 ) + CHR( 192 ) + CHR( 179 ) + " " )

#define ID_CONSUTA  0
#define ID_MODIFICA 1
#define ID_ALTA     2
#define ID_BORRA    3

//-- Includes ----------------------------------------------------------------//

#include "InKey.ch"
#include "Eagle1.ch"

//-- Modulo principal --------------------------------------------------------//

procedure main()

    local cHost := "127.0.0.1"
    local cUser := "root"
    local cPwd := "root"
    local cDb := "E1Prueba"
    local cTable := "Test"
    local oCon, oTb
    local aStruct := { ;
                        { "FIRST",      "C", 20, 00 },;
                        { "LAST",       "C", 20, 00 },;
                        { "STREET",     "C", 30, 00 },;
                        { "CITY",       "C", 30, 00 },;
                        { "STATE",      "C", 02, 00 },;
                        { "ZIP",        "C", 10, 00 },;
                        { "HIREDATE",   "D", 08, 00 },;
                        { "MARRIED",    "L", 01, 00 },;
                        { "AGE",        "N", 02, 00 },;
                        { "SALARY",     "N", 06, 00 },;
                        { "NOTES",      "C", 70, 00 } ;
                     }

    SET DATE FORMAT TO "DD/MM/YYYY"

    cls

    // Creamos objeto conexion
    oCon := TMSConnect():New()

    // Intentamos la conexion
    if oCon:Connect( cHost, cUser, cPwd )

    // Comprobamos si ya existe la DB
    if oCon:ExistDataBase( cDb )
        Alert( "Ya existe la DB: " + AllTrim( cDb ) )
    else
        oCon:CreateDataBase( cDb )
    endif

    oCon:SelectDataBase( cDb )

/*
        if oCon:SetCharacterSet( "utf8" )
            Alert( "Se activó el juego de caracteres UTF8" )
        else
            Alert( "No se pudo activar el juego de caracteres UTF8" )
        endif
*/

        // Creo el objeto Tabla con DataField
        oTb := TMyTable( cTable ):New( oCon, cTable )
        // Establezco el relleno de espacios (menos optimo)

        if oCon:oDataBase:ExistTable( oTb:cName )
            Alert( "Ya existe la tabla: " + oTb:cName )
        else
            // Creamos la tabla
            if !oTb:CreateTable( aStruct )
                Alert( "Error al crear la tabla " + oTb:cName )
                oTb:Free()
                oCon:Free()
                return
            else
                Alert( "Se ha creado la tabla..." )
            endif
        endif

        oTb:SetReadPADAll( .t. )

        // Abro la tabla
        if oTb:Open()                                                           ; Alert( "Se abrió" )
            // Si no hay registros insertamos uno para que funcione el Browse
            if ( oTb:RecCount() == 0 )                                          ; Alert( "reccount == 0" )
            // Si no hay datos al meno introducimos uno...
            // Llenamos el buffer con los valores
                oTb:aBuffer := { "Manu", ;
                                 "Exposito", ;
                                 "Formentera", ;
                                 "SE", ;
                                 "SP", ;
                                 "41700", ;
                                 date(), ;
                                 .t., ;
                                 42, ;
                                 150000, ;
                                 "Mi priemer registro..." }
                // Inserto el registro y traigo el resultado al cliente
                oTb:Insert( .t. )
            endif
            // Abrimos el Browse
            GestBrw( oTb )
        endif
        // Liberamos la memoria ocupada por el objeto tabla
        oTb:Free()
    endif

    // Liberamos la memoria de la conexion
    oCon:Free()

return

//-- Modulos auxiliares ------------------------------------------------------//

//----------------------------------------------------------------------------//
// Gestion completa de una tabla MySQL

static procedure GestBrw( oTb )

    local oBrw, oCol
    local lEnd := .f.
    local nKey, n, nFld

    oBrw := TBrowseNew( 1, 0, MaxRow() - 1, MaxCol() )

    oBrw:colorSpec := "W+/B, N/BG"
    oBrw:ColSep    := " ³ "
    oBrw:HeadSep   := "ÄÅÄ"
    oBrw:FootSep   := "ÄÁÄ"
    // Asignamos los bloques de codigo de movimientos del cursor
    // de datos
    MySetBrowse( oBrw, oTb )

    nFld := oTb:FieldCount()

    FOR n := 1 TO nFld
        oBrw:AddColumn( TBColumnNew( oTb:FieldName( n ), GenCB( oTb, n ) ) )
    NEXT

    cls

    @ 0, 0 SAY PadC( "Ojeando la tabla: " + ;
                        upper( oTb:cName ), MaxCol() + 1, " " ) COLOR "W+/G+"

    @ MaxRow(),         0 SAY "INS"                 COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Altas"               COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "ENTER"               COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Mod."                COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "SUPR"                COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Bajas"               COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "F1"                  COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Ayuda"               COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "F4"                  COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Orden"               COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "F5"                  COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Busca"               COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "F6"                  COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Busca ->"            COLOR "W+/R+"
    @ MaxRow(), Col() + 1 SAY "ESC"                 COLOR "GR+/R+"
    @ MaxRow(), Col() + 1 SAY "Salir"               COLOR "W+/R+"

    while !lEnd

      oBrw:ForceStable()

      nKey = InKey( 0 )

      do case
         case nKey == K_ESC             // Salir
              SetPos( MaxRow(), 0 )
              lEnd = .t.

         case nKey == K_DOWN            // Fila siguiente
              oBrw:Down()

         case nKey == K_F3
              oTb:SetReadPADAll( !oTb:SetReadPADAll() )
              oBrw:Configure()

         case nKey == K_F4              // Establece el orden
                if ElOrden( oTb )
                    oBrw:goTop()
                endif

         case nKey == K_F5              // Busca valor en columna
            if BuscaValor( oTb )
                Alert( "Encontrado..." )
            else
                Alert( "Valor no encontrado..." )
                oTb:GoTop()
            endif
            oBrw:RefreshAll()

         case nKey == K_F6              // Busca siguiente columna
            if oTb:FindNext()
                Alert( "Encontrado..." )
            else
                Alert( "Valor no encontrado..." )
                oTb:GoTop()
            endif
            oBrw:RefreshAll()

         case nKey == K_UP              // Fila anterior
              oBrw:Up()

         case nKey == K_LEFT            // Va a la columna antrior
              oBrw:Left()

         case nKey == K_RIGHT           // Va a la columna siguiente
              oBrw:Right()

         case nKey = K_PGDN             // Va a la pagina siguiente
              oBrw:pageDown()

         case nKey = K_PGUP             // Va a la pagina antrior
              oBrw:pageUp()

         case nKey = K_CTRL_PGUP        // Va al principio
              oBrw:goTop()

         case nKey = K_CTRL_PGDN        // Va al final
              oBrw:goBottom()

         case nKey = K_HOME             // Va a la primera columna visible
              oBrw:home()

         case nKey = K_END              // Va a la ultima columna visible
              oBrw:end()

         case nKey = K_CTRL_LEFT        // Va a la primera columna
              oBrw:panLeft()

         case nKey = K_CTRL_RIGHT       // Va a la ultima columna
              oBrw:panRight()

         case nKey = K_CTRL_HOME        // Va a la primera página
              oBrw:panHome()

         case nKey = K_CTRL_END         // Va a la última página
              oBrw:panEnd()

         case nKey = K_DEL              // Borra fila
            Borrar( oTb, oBrw )

         case nKey = K_INS              // Inserta columna
            Insertar( oTb, oBrw )

         case nKey = K_ENTER            // Modifica columna
            Modificar( oTb, oBrw )

         case nKey == K_F1              // Algunos datos
            Alert( "Datos de la tabla " + oTb:cName + ";" + ;
                   ";Registro actual......: " + Str( oTb:RecNo() ) + ;
                   ";Total de registros...: " + Str( oTb:RecCount() ) + ;
                   ";Total de columnas....: " + Str( oTb:FieldCount() ) )

      endcase

   end

return

//----------------------------------------------------------------------------//
// Crea los codeblock SETGET de las columnas del browse

static function GenCB( oTb, n )
return( { || oTb:FieldGet( n ) } )

//----------------------------------------------------------------------------//
// Pantalla de datos de la tabla

static function PantMuestra( oTb, nTipo )

    local GetList := {}
    local cTipo, cId

    do case
        case nTipo == ID_ALTA
            cTipo := "Insertando"
            cId := "nuevo"
        case nTipo == ID_BORRA
        case nTipo == ID_CONSUTA
        case nTipo == ID_MODIFICA
            cTipo := "Modificando"
            cId := StrNum( oTb:Id )
    end

    SET CURSOR ON

    DispBox( 3, 2, 18, 74, B_BOX )

    @ 04, 03 SAY cTipo + " registro en tabla " + oTb:cName + " - Numero: " + cId

    @ 06, 03 SAY "First....:" GET oTb:First     PICTURE "@K"
    @ 07, 03 SAY "Last.....:" GET oTb:Last      PICTURE "@K"
    @ 08, 03 SAY "Street...:" GET oTb:Street    PICTURE "@K"
    @ 09, 03 SAY "City.....:" GET oTb:City      PICTURE "@K"
    @ 10, 03 SAY "State....:" GET oTb:State     PICTURE "@K"
    @ 11, 03 SAY "Zip......:" GET oTb:Zip       PICTURE "@K"
    @ 12, 03 SAY "Hiredate.:" GET oTb:Hiredate  PICTURE "@K"
    @ 13, 03 SAY "Married..:" GET oTb:Married   PICTURE "@K"
    @ 14, 03 SAY "Age......:" GET oTb:Age       PICTURE "@K"
    @ 15, 03 SAY "Salary...:" GET oTb:Salary    PICTURE "@K"
    @ 16, 03 SAY "Notes:"
    @ 17, 03                  GET oTb:Notes     PICTURE "@K"

return( GetList )

//----------------------------------------------------------------------------//
// Inserta una fila

static procedure Insertar( oTb, oBrw )

    local GetList := {}
    local cPant := SaveScreen( 3, 2, 18, 74 )

    oTb:Blank()

    GetList := PantMuestra( oTb, ID_ALTA )
    READ

    set cursor off

    RestScreen( 3, 2, 18, 74, cPant )

    if LastKey() != K_ESC .and. Updated()
        if oTb:Insert()
            Alert( "Tupla insertada" )
            if Alert( "Refresca el Browse?", { "Si", "No" } ) == 1
                oTb:Refresh()
                oBrw:goBottom()
                oBrw:RefreshAll()
            endif
        endif
    endif

return

//----------------------------------------------------------------------------//
// Modifica la fila actual

static procedure Modificar(oTb,oBrw )

    local GetList := {}
    local nRecNo := oTb:RecNo()
    local cPant := SaveScreen( 3, 2, 18, 74 )

    oTb:Load()

    GetList := PantMuestra( oTb, ID_MODIFICA )
    READ

    set cursor off

    RestScreen( 3, 2, 18, 74, cPant )

    if LastKey() != K_ESC .and. Updated()
        if oTb:Update()
            Alert( "Tupla modificada" )
            if Alert( "Refresca el Browse?", { "Si", "No" } ) == 1
                oTb:Refresh()
                oTb:GoTo( nRecNo )
                oBrw:RefreshAll()
            endif
        endif
    endif

return

//----------------------------------------------------------------------------//
// Borra la fila actual

static procedure Borrar( oTb, oBrw )

    local nRecNo := oTb:RecNo()

    if Alert( "Realmente quieres borrar el registro?", { "Si", "No" } ) == 1
        if oTb:Delete( , 1 )
            Alert( "Borrado en el servidor" )
            if Alert( "Refresca el Browse?", { "Si", "No" } ) == 1
                oTb:Refresh()
                oTb:GoTo( nRecNo )
                oBrw:RefreshAll()
            endif
        endif
    else
        Alert( "Mo se ha borrado..." )
    endif

return

//----------------------------------------------------------------------------//
// Establece un nuevo orden de visualizacion

static function ElOrden( oTb )

    local i := oTb:FieldCount()
    local aFld := Array( i )
    local n, lRet

    FOR n := 1 TO i
        aFld[ n ] := oTb:FieldName( n )
    NEXT

    DispBox( 5, 9, 10, 25, B_BOX )

    i := 0
    i := AChoice( 6, 10, 9, 24, aFld )

    if lRet := ( i > 0 )
        Alert( "Ordenado por la columna: " + StrNum( i ) + " " + oTb:FieldName( i ) )
        oTb:SetOrder( i )
    endif

return( lRet )

//----------------------------------------------------------------------------//
// Busca un valor de una columna

static function BuscaValor( oTb )

    local GetList := {}
    local nCol := 0
    local lRet, uVal

    DispBox( 5, 5, 8, 75, B_BOX )

    @ 6, 10 SAY "Entre numero de columna:" GET nCol PICTURE "@K"
    READ

    uVal := oTb:FieldGet( nCol )

    @ 7, 10 SAY "Entre valor buscado:" GET uVal PICTURE "@K"
    READ

    lRet := oTb:Find( nCol, uVal, .t. )

return( lRet )

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



Do, 3 de Jun, 2007 8:11 pm

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

Reenviar Mensaje #1191 de 1683 |
Desplegar mensajes Autor Ordenar por fecha

Gente. Alguna ayuda? el eagle no me devuelve un objeto cuando al hacer un select no encuentra datos. Alguna Ayuda? Gracias...
goosfancito
Sin conexión Enviar mensaje
3 de Jun, 2007
10:31 am

Gustavo por más que intento encontrar algo a mí no me da ese problema... Lo que voy a hacer si te parece es enviarte la última versión que está en periodo...
Manu
loloexpo
Sin conexión Enviar mensaje
3 de Jun, 2007
6:11 pm

De cualquier modo prueba este programa que es con el que he hecho la prueba.... ... ...
Manu
loloexpo
Sin conexión Enviar mensaje
3 de Jun, 2007
7:12 pm

Manu, En el ejemplo que envias no veo donde usas un SELECT. Gracias ... From: Manu To: eagle1@yahoogroups.com Sent: Sunday, June 03, 2007 3:59 PM Subject: Re:...
Pa246f10004792
goosfancito
Sin conexión Enviar mensaje
3 de Jun, 2007
8:13 pm
Avanzado

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