Moises:
Despues de abrir la tabla, y antes de manipular ningun registro ni pedir ningun fieldget() agrega:
oTb:GoTop():Read()
Saludos,
Daniel Puente
Marchione Sistemas
Puerto San Julian, Pcia. Santa Cruz
Daniel Puente
Marchione Sistemas
Puerto San Julian, Pcia. Santa Cruz
----- Mensaje original -----De: Moisés BarrioPara: eagle1@yahoogroups.comEnviado: Sábado, 27 de Diciembre de 2008 12:09 p.m.Asunto: [eagle1] error de Harbour con FieldGet()
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 " )
ENDIFSysrefresh()
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 nTotalAPPEND BLANK
MSGALERT(OTB:FIELDGET( 1)) // aquí da el error, o en el primer REPLACE CLIENTES-> si lo quitoREPLACE 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