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()
oMySql := TMSConnect():New()
IF oMySql:lInit
MsgInfo( "Sistema SQL inicializado correctamente", " Motor SQL " )
ENDIF
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
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()
oMySql:Close()
oMySql:Free()
RETURN NIL
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
// IMPORTAR DATOS
//
//----------------------------------------------------------------------------//
FUNCTION ImportarDATOS( oMySql, cTablaCliente, oTb, oMeter, nTotal, oDlg )
// IMPORTAR DATOS
//
//----------------------------------------------------------------------------//
FUNCTION ImportarDATOS( oMySql, cTablaCliente, oTb, oMeter, nTotal, oDlg )
LOCAL cLast, lBloqueado := .F.
LOCAL cActual := 1
LOCAL n
LOCAL cActual := 1
LOCAL n
// Control de Tabla-------------------------------------------
//oTb:Blank()
//oTb:Blank()
if !oTb:Open() // si no se abre
MsgStop( "No se puede abrir la tabla: " + cTablacliente, "Operación Cancelada" )
DbCloseAll()
QUIT
endif
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()
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 )
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
REPLACE CLIENTES->FPAGO WITH "Caja"
else
REPLACE CLIENTES->FPAGO WITH "Domiciliación"
endif
// Avanzamos registro
oTb:Skip( 1 )
oMeter:SetPos( cActual )
cActual++
Sysrefresh()
n++
oTb:Skip( 1 )
oMeter:SetPos( cActual )
cActual++
Sysrefresh()
n++
NEXT
// Ejecutamos la importacion----------------------------------
oTb:Close() // Cerramos la TABLA