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

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes determinar el orden de los mensajes. Pulsa el enlace en la columna correspondiente a la fecha. Tus preferencias serán guardadas y no tendrás que introducirlas de nuevo.

Mensajes

  Mensajes Ayuda
Avanzado
error de Harbour con FieldGet()   Lista de mensajes  
Responder | Reenviar Mensaje #1573 de 1683 |
RE: error de Harbour con FieldGet()

Este mensaje lo he visto ahora, perdona!!!
Estoy seguro que el error es de la DLL de MySQL o hay que reconstruir
la LIB.
Para ver la versión sólo tienes abrir cualquier PRG de la clase.

Saludos

--- En eagle1@yahoogroups.com, "Moisés Barrio" <iepc.programacion@...>
escribió:
>
> Hola Manu:
>
> La segunda apertura de la tabla la añadí por comprobar si se habría
cerrado.
> La quito y sigue el error.
>
> La cuestión es que:
>
> La tabla sí tiene registros, y oTb:RecCount() funciona perfectamente,
> devolviendo correctamente el número de registros.
>
> Pero cuando hago un oTb:FieldGet( 1) salta el error de Harbour
excepction
> que adjunté.
>
> Asimismo, ¿cómo puedo saber la versión de Eagle que tengo?. Me
actualizé a
> la versión para poder usar MySQL 5, pero no se la versión.
>
> Muchas gracias. Un saludo
>
>
> 2008/12/28 Manu <messoft@...>
>
> > Moisés no dices qué versión de Eagle1 usas, pero aún así creo
que estás
> > abriendo la tabla dos veces:
> >
> > una aquí....
> >
> > // Obtengo Total Registros---
> > -------------------------------
> > // Seleccionamos la TABLA LIBROS---------------------------
> > oTb := TMSTable():New( oMySql, AllTrim(cTablaCliente) )
> > if !oTb:Open() // si no se abre
> > MsgStop( "No se puede abrir la tabla: " + cTablacliente,
> > "Operación Cancelada" )
> > RETURN Nil
> > else
> > // Contamos total de Registros
> > nTotal := oTb:RecCount()
> > msgalert(ntotal)
> > endif
> >
> > y otro aqui:
> >
> > // Control de Tabla-------------------------------------------
> > //oTb:Blank()
> > if !oTb:Open() // si no se abre
> > MsgStop( "No se puede abrir la tabla: " + cTablacliente, "Operación
> > Cancelada" )
> > DbCloseAll()
> > QUIT
> > endif
> >
> > Porqué lo haces?
> > Eso por un lado y por otro deberías comprobar que hay datos en la
tabla.
> > Yo haría:
> > if oTb:RecCount() > 0
> > oTb:GoTop()
> > while !oTb:Eof()
> >
> > REPLACE CLIENTES->CAMPO01 WITH oTb:FieldGet( 1 )
> > REPLACE CLIENTES->CAMPO02 WITH oTb:FieldGet( 2 )
> > REPLACE CLIENTES->NOMBRE WITH oTb:FieldGet( 9
> > )+space(1)+oTb:FieldGet( 10 )+space(1)+oTb:FieldGet( 8 )
> > REPLACE CLIENTES->NIF WITH oTb:FieldGet( 11 )
> > REPLACE CLIENTES->DIRECCION WITH oTb:FieldGet( 17 )
> > REPLACE CLIENTES->POBLACION WITH oTb:FieldGet( 19 )
> > REPLACE CLIENTES->TELEFONO WITH oTb:FieldGet( 21 )
> > REPLACE CLIENTES->BANCO WITH oTb:FieldGet( 37 )
> > REPLACE CLIENTES->OFICINA WITH oTb:FieldGet( 38 )
> > REPLACE CLIENTES->SUCURSAL WITH oTb:FieldGet( 39 )
> > REPLACE CLIENTES->DC WITH oTb:FieldGet( 40 )
> > REPLACE CLIENTES->CUENTA WITH oTb:FieldGet( 41 )
> > REPLACE CLIENTES->DIR_BANCO WITH oTb:FieldGet( 42 )
> > REPLACE CLIENTES->POB_BANCO WITH oTb:FieldGet( 43 )
> > if oTb:FieldGet( 45 ) = 1 // Caja
> > REPLACE CLIENTES->FPAGO WITH "Caja"
> > else
> > REPLACE CLIENTES->FPAGO WITH "Domiciliación"
> > endif
> >
> > // Avanzamos registro
> > oTb:Skip( 1 )
> > oMeter:SetPos( cActual )
> > cActual++
> > Sysrefresh()
> > end //while
> >
> > Por cierto no puedes incrementar n dentro de un bucle FOR NEX cuyo
> > inicio es el propio n
> >
> > Mírate el ejemplo mstodbf.prg que hay en BIN que te transcribo
aquí por
> > que es cortito:
> >
> > //----------------------------------------------------------//
> > // AUTOR.....: Manuel Expósito Suárez Soft4U
> > 2002-2006 //
> > // eMail.....:
> > manuexposito@... <manuexposito%40gmail.com> //
> > // CLASE.....:
> > MsToDBF //
> > // FECHA MOD.:
> > 11/12/2006 //
> > // VERSION...:
> > 5.02 //
> > // PROPOSITO.: Pasa una tabla de MySQL a una
> > DBF //
> > //----------------------------------------------------------//
> >
> > #include "util.ch"
> > #include "inKey.ch"
> >
> > //----------------------------------------------------------//
> >
> > function main( cIP, cUser, cPwd )
> >
> > local oCon, oDb, oTb
> > local GetList, n, nFldCount, aDB, aTb
> > local cDb := space( 30 )
> > local cTb := space( 30 )
> > local i := 0
> >
> > cls
> >
> > DEFAULT cIP := "127.0.0.1"
> > DEFAULT cUser := "root"
> > DEFAULT cPwd := "root"
> >
> > // Creamos el objeto conexion:
> > oCon := TMSConnect():New()
> >
> > // Nos conectamos y comprobamos si se ha establecido la conexion:
> > if !oCon:Connect( cIP, cUser, cPwd )
> > Alert( "No se ha establecido la conexion" )
> > // Liberamos memoria
> > oCon:Close()
> > return( nil )
> > endif
> >
> > oCon:SetAutoError( .f. )
> >
> > DispBox( 3, 9, 21, 71 )
> >
> > @ 2, 9 SAY "Bases de Datos de la conexion " + oCon:cHost + ":"
> >
> > aDB := oCon:ListDataBases()
> > cDb := aDB[ AChoice( 4, 10, 20, 70, aDB ) ]
> > oDb := oCon:DataBaseByName( cDb, .t. ) // Creamos y seleccionamos
> > el objeto DB
> >
> > cls
> >
> > @ 2, 9 SAY "Tablas de la Base de Datos " + upper( cDb ) + ":"
> > DispBox( 3, 9, 21, 71 )
> > aTb := oDb:ListTables()
> > cTb := aTb[ AChoice( 4, 10, 20, 70, aTb ) ]
> >
> > oTb := TMSTable():New( oCon, cTb )
> >
> > cls
> > @ 10, 10 SAY "Cargando informacion desde el servidor"
> > @ 12, 10 SAY "Espere hasta completar el proceso... "
> >
> > oTb:Open()
> > oTb:SetReadMemoAll( .t. )
> >
> > if oTb:RecCount() > 0
> > DbCreate( oTb:cName, oTb:Struct() )
> > DbUseArea( .t.,, oTb:cName )
> >
> > cls
> > @ 10, 10 SAY "Cargando a la DBF desde el cliente"
> > @ 12, 10 SAY "Espere hasta completar el proceso... "
> >
> > nFldCount := oTb:FieldCount()
> >
> > @ 10, 10 SAY "Ejecutando..."
> >
> > oTb:GoTop()
> >
> > @ 10, 10 SAY "Tratando registro: " + StrNum( ++i )
> >
> > DbAppend()
> >
> > FOR n := 1 TO nFldCount
> > FieldPut( n, oTb:FieldGet( n ) )
> > NEXT
> >
> > while oTb:Fetch()
> > @ 10, 10 SAY "Tratando registro: " + StrNum( ++i )
> >
> > DbAppend()
> >
> > FOR n := 1 TO nFldCount
> > FieldPut( n, oTb:FieldGet( n ) )
> > NEXT
> > end
> >
> > DbCommit()
> > DbGoTop()
> >
> > if Alert( "Se han pasado " + AllTrim( str( i ) ) + ;
> > " registros;Quieres ver la tabla?", { "Si", "No" } ) == 1
> > Browse()
> > endif
> >
> > cls
> >
> > @ 23, 00 SAY "Se termino... "
> >
> > DbCloseArea()
> > endif
> >
> > Inkey( 100 )
> >
> > oTb:Free()
> > oCon:Free()
> >
> > return( nil )
> >
> > //----------------------------------------------------------//
> >
> > Saludos
> >
> >
> > Moisés Barrio escribió:
> >
> > > Hola a todos:
> > >
> > > Uso FW 8.09, Harbour 1.0 y el siguiente código genera el error
adjunto
> > > al hacer FieldGet( 1). No se qué hago mal. Muchas gracias por la
ayuda.
> > >
> > > Un saludo,
> > >
> > > Moisés
> > >
> > >
> > >
> > > // Conexión SQL-----------------------------------------------
> > > oMySql := TMSConnect():New()
> > > IF oMySql:lInit
> > > MsgInfo( "Sistema SQL inicializado correctamente", " Motor SQL " )
> > > ENDIF
> > > Sysrefresh()
> > >
> > > IF !oMySql:Connect( cServidor, cLogin, cPass, cBaseCliente ) //
> > > servidor MYSQL
> > > MsgStop( "ERROR: No hay conexión con la Base de Datos
> > > "+AllTrim(cTablaCliente)+"."+CRLF+"La operación no ha sido
realizada.
> > > Posiblemente, no hay acceso a Internet.", " ERROR Motor SQL " )
> > > DbCloseALL()
> > > quit
> > > ENDIF
> > > // ----------------------------------------------------------
> > >
> > >
> > > // Obtengo Total Registros----------------------------------
> > > // Seleccionamos la TABLA LIBROS---------------------------
> > > oTb := TMSTable():New( oMySql, AllTrim(cTablaCliente) )
> > > if !oTb:Open() // si no se abre
> > > MsgStop( "No se puede abrir la tabla: " + cTablacliente,
> > > "Operación Cancelada" )
> > > RETURN Nil
> > > else
> > > // Contamos total de Registros
> > > nTotal := oTb:RecCount()
> > > msgalert(ntotal)
> > > endif
> > >
> > >
> > > // Pinto dialogo con barra----------------------------------
> > > DEFINE DIALOG oDlg RESOURCE "ESPERAR" TITLE OemToAnsi("Importando
> > > Datos. Por favor, espere...")
> > > REDEFINE PROGRESS oMeter ID 150 OF oDlg
> > >
> > > ACTIVATE DIALOG oDlg CENTERED;
> > > ON INIT ( oMeter:SetRange( 0, nTotal ), ;
> > > oMeter:SetPos( nActual ), ;
> > > oDlg:Hide(), ImportarDATOS( oMySql, cTablaCliente,
> > > oTb, oMeter, nTotal, oDlg ) )
> > >
> > > // Cierre de SQL
> > > oMySql:Close()
> > > oMySql:Free()
> > >
> > > RETURN NIL
> > > //----------------------------------------------------------//
> > >
> > >
> > > //----------------------------------------------------------//
> > > // IMPORTAR DATOS
> > > //
> > > //----------------------------------------------------------//
> > > FUNCTION ImportarDATOS( oMySql, cTablaCliente, oTb, oMeter,
nTotal, oDlg
> > )
> > > LOCAL cLast, lBloqueado := .F.
> > > LOCAL cActual := 1
> > > LOCAL n
> > >
> > > // Control de Tabla-------------------------------------------
> > > //oTb:Blank()
> > > if !oTb:Open() // si no se abre
> > > MsgStop( "No se puede abrir la tabla: " + cTablacliente,
> > > "Operación Cancelada" )
> > > DbCloseAll()
> > > QUIT
> > > endif
> > >
> > >
> > > // Seleccionamos Base de Datos--------------------------------
> > > SELECT("CLIENTES")
> > >
> > > // Controles de la BARRA--------------------------------------
> > > oDlg:Show()
> > > oDlg:SetFocus()
> > >
> > >
> > > // Ejecutamos la importacion----------------------------------
> > > FOR n := 1 TO nTotal
> > > APPEND BLANK
> > >
> > > MSGALERT(OTB:FIELDGET(1))
> > > * // aquí da el error, o en el primer REPLACE CLIENTES-> si lo
quito*
> > >
> > >
> > > REPLACE CLIENTES->CAMPO01 WITH oTb:FieldGet( 1 )
> > > REPLACE CLIENTES->CAMPO02 WITH oTb:FieldGet( 2 )
> > > REPLACE CLIENTES->NOMBRE WITH oTb:FieldGet( 9
> > > )+space(1)+oTb:FieldGet( 10 )+space(1)+oTb:FieldGet( 8 )
> > > REPLACE CLIENTES->NIF WITH oTb:FieldGet( 11 )
> > > REPLACE CLIENTES->DIRECCION WITH oTb:FieldGet( 17 )
> > > REPLACE CLIENTES->POBLACION WITH oTb:FieldGet( 19 )
> > > REPLACE CLIENTES->TELEFONO WITH oTb:FieldGet( 21 )
> > > REPLACE CLIENTES->BANCO WITH oTb:FieldGet( 37 )
> > > REPLACE CLIENTES->OFICINA WITH oTb:FieldGet( 38 )
> > > REPLACE CLIENTES->SUCURSAL WITH oTb:FieldGet( 39 )
> > > REPLACE CLIENTES->DC WITH oTb:FieldGet( 40 )
> > > REPLACE CLIENTES->CUENTA WITH oTb:FieldGet( 41 )
> > > REPLACE CLIENTES->DIR_BANCO WITH oTb:FieldGet( 42 )
> > > REPLACE CLIENTES->POB_BANCO WITH oTb:FieldGet( 43 )
> > > if oTb:FieldGet( 45 ) = 1 // Caja
> > > REPLACE CLIENTES->FPAGO WITH "Caja"
> > > else
> > > REPLACE CLIENTES->FPAGO WITH "Domiciliación"
> > > endif
> > >
> > > // Avanzamos registro
> > > oTb:Skip( 1 )
> > > oMeter:SetPos( cActual )
> > > cActual++
> > > Sysrefresh()
> > > n++
> > >
> > > NEXT
> > >
> > > // Ejecutamos la importacion----------------------------------
> > > oTb:Close() // Cerramos la TABLA
> > >
> > >
> > >
> >
> >
> >
>





Jue, 8 de Ene, 2009 9:13 pm

loloexpo
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

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

Hola a todos: Uso FW 8.09, Harbour 1.0 y el siguiente código genera el error adjunto al hacer FieldGet( 1). No se qué hago mal. Muchas gracias por la ayuda. ...
Moisés Barrio
iepc.programacion@...
Enviar mensaje
27 de Dic, 2008
3:09 pm

Moises: Despues de abrir la tabla, y antes de manipular ningun registro ni pedir ningun fieldget() agrega: oTb:GoTop():Read() Saludos, Daniel Puente Marchione...
Daniel Puente-Grupo P...
puenteda_ar
Sin conexión Enviar mensaje
27 de Dic, 2008
5:00 pm

Daniel, Muchas gracias, pero me devuelve el siguiente errror: Application =========== Path and name: C:\DEVELOP\PROGRAMAS\RT\ICADE\icade.exe (32 bits) Size:...
Moisés Barrio
iepc.programacion@...
Enviar mensaje
27 de Dic, 2008
5:09 pm

Perdon, para tmstable(): oTb:GoTo( n ):Read() Saludos, Daniel Puente Marchione Sistemas Puerto San Julian, Pcia. Santa Cruz ... De: Moisés Barrio Para:...
Daniel Puente-Grupo P...
puenteda_ar
Sin conexión Enviar mensaje
27 de Dic, 2008
5:48 pm

Moisés no dices qué versión de Eagle1 usas, pero aún así creo que estás abriendo la tabla dos veces: una aquí.... // Obtengo Total Registros--- ... //...
Manu
loloexpo
Sin conexión Enviar mensaje
28 de Dic, 2008
1:28 am

Hola Manu: La segunda apertura de la tabla la añadí por comprobar si se habría cerrado. La quito y sigue el error. La cuestión es que: La tabla sí tiene...
Moisés Barrio
iepc.programacion@...
Enviar mensaje
8 de Ene, 2009
9:10 pm

Este mensaje lo he visto ahora, perdona!!! Estoy seguro que el error es de la DLL de MySQL o hay que reconstruir la LIB. Para ver la versión sólo tienes...
loloexpo
Sin conexión Enviar mensaje
8 de Ene, 2009
9:13 pm
Avanzado

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