PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Actualizar datos....
Actualizar datos....
Iniciado por Manuel, 17,nov. 2008 17:16 - 8 respuestas
Publicado el 17,noviembre 2008 - 17:16
tengo una aplicacion en VFox con DBF, con este programa trabajan en una fabrica

estoy desarrolando una aplicacion que se alimenta de esos datos los DBF.

tengo windev 12 y estoy trabajando con Hyper File Clasica

Ya logre exportar los datos sin problema, pero ahora neceita actualizarlos.

en otras palabras borrar todos los registros de una tabla y cargarlos de otra.

como appen from en VFOX..

Gracias
Publicado el 17,noviembre 2008 - 18:52
Hola Manuel,

Para lograr este tratamiento debes hacer esto:

- Crear una conexión a la base de datos externa (HDescribeConnection)
- Crear un alias de los archivos (Halias)
- Afectar esta conexión a los archivos (HChangeConnection )
- Crear estos archivos (HCreationIfNotFound)
- Copiar el contenido de los archivos HF en los archivos nuevos (bucle con HCopyRecord).

--
Saludos
pat
http://megustawindev.free.fr
Publicado el 18,noviembre 2008 - 00:45
Hola Manuel
por favor podrias ayudarme
Como lograste importar los archivos DBF de VFP al HF clasico
por favor si puedes enviame esa informaciona mi email windev @ mansoft.com.ec

Muchas gracias
Publicado el 18,noviembre 2008 - 00:50
gracias voy a probar
Publicado el 18,noviembre 2008 - 08:47
Para el que lo necesite, os adjunto como lo he hecho yo, y me ha funcionado OK.

Como vereis, hay una barra de progresion y un grid donde muestro la tabla, esto no es imprescindible.

Un saludo
R. Rodrigo

//------------------------------------------------- CENTROGAS ---------------------------------------------------

//EDT_empresa_emp=xx
// Delete all the selected rows from a table
NbSelection = TableCount(TABLE_Centrogas,toTotal)
ACTUAL=0
PROGBAR_centrogas..MaxValue=NbSelection
PROGBAR_centrogas..MinValue=ACTUAL
HReadFirst(Centrogas,ANO)
WHILE NOT HOut
ACTUAL=ACTUAL+1
PROGBAR_centrogas..Value=ACTUAL
IF CBOX_Inicializa..Value=1 THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
ELSE
IF xx=Centrogas.empresa AND EDT_Ano_emp=Centrogas.ANO THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
END
END
HReadNext(Centrogas,ANO)
END
TableDisplay(TABLE_Centrogas)



FILE_ORI=NoSpace(EDT_Carpeta_sin)+"\Centros.DBF"
HDBOpen("Centrogas_ORI","cg",FILE_ORI)
edt_centrogas_codigo..FileLink = "Centrogas_ori.centrogas"
edt_centrogas_nombre..FileLink = "Centrogas_ori.nombre"
HReadFirst("Centrogas_ORI","centrogas")
MAXIMO = HNbRec("Centrogas_ORI")
ACTUAL=0
PROGBAR_centrogas..MaxValue=MAXIMO
PROGBAR_centrogas..MinValue=ACTUAL
STC_accion_centrogas..Caption="Convierte"
WHILE NOT H.Out
ACTUAL=ACTUAL+1
PROGBAR_centrogas..Value=ACTUAL
FileToScreen() // originales viejos
Centrogas.empresa=xx
Centrogas.ANO=EDT_Ano_emp
Centrogas.CODIGO=edt_centrogas_codigo
Centrogas.NOMBRE=edt_centrogas_nombre

HAdd(Centrogas)

HReadNext("Centrogas_ori")
END

TableDisplay(TABLE_Centrogas)
Publicado el 18,noviembre 2008 - 11:06
Veo que estas utilizando acceso directo desde windev, Tus dbf son de
bases de datos vfoxpro o son dbf libres ? yo lo probe y los dbf de una
base de datos (DBC) no eran accesibles nativamente.

Saludos
Raül Vidiella

En/na R.Rodrigo ha escrit:
Para el que lo necesite, os adjunto como lo he hecho yo, y me ha funcionado OK.

Como vereis, hay una barra de progresion y un grid donde muestro la tabla, esto no es imprescindible.

Un saludo
R. Rodrigo

//------------------------------------------------- CENTROGAS ---------------------------------------------------

//EDT_empresa_emp=xx
// Delete all the selected rows from a table
NbSelection = TableCount(TABLE_Centrogas,toTotal)
ACTUAL=0
PROGBAR_centrogas..MaxValue=NbSelection
PROGBAR_centrogas..MinValue¬TUAL
HReadFirst(Centrogas,ANO)
WHILE NOT HOut
ACTUAL¬TUAL+1
PROGBAR_centrogas..Value¬TUAL
IF CBOX_Inicializa..Value=1 THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
ELSE
IF xx=Centrogas.empresa AND EDT_Ano_emp=Centrogas.ANO THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
END
END
HReadNext(Centrogas,ANO)
END
TableDisplay(TABLE_Centrogas)



FILE_ORI=NoSpace(EDT_Carpeta_sin)+"\Centros.DBF"
HDBOpen("Centrogas_ORI","cg",FILE_ORI)
edt_centrogas_codigo..FileLink = "Centrogas_ori.centrogas"
edt_centrogas_nombre..FileLink = "Centrogas_ori.nombre"
HReadFirst("Centrogas_ORI","centrogas")
MAXIMO = HNbRec("Centrogas_ORI")
ACTUAL=0
PROGBAR_centrogas..MaxValue=MAXIMO
PROGBAR_centrogas..MinValue¬TUAL
STC_accion_centrogas..Caption="Convierte"
WHILE NOT H.Out
ACTUAL¬TUAL+1
PROGBAR_centrogas..Value¬TUAL
FileToScreen() // originales viejos
Centrogas.empresa=xx
Centrogas.ANOíT_Ano_emp
Centrogas.CODIGO=edt_centrogas_codigo
Centrogas.NOMBRE=edt_centrogas_nombre

HAdd(Centrogas)

HReadNext("Centrogas_ori")
END

TableDisplay(TABLE_Centrogas)



Publicado el 18,noviembre 2008 - 11:17
Te muestro el acceso a dbf a traves de OLEDB.


// definir datos de la conexion
Cn_VFPData is Connection
ds_VFPData is Data Source
Cn_VFPData..User = ""
Cn_VFPData..Password = ""
Cn_VFPData..Server = "localhost"
Cn_VFPData..Database = ""
Cn_VFPData..Source ="C:\basededatos.dbc"
Cn_VFPData..Provider = "VFPOLEDB.1"
Cn_VFPData..Access = hOReadWrite
Cn_VFPData..ExtendedInfo = ""

// abrir conexion a base de datos (DBC)
IF NOT HOpenConnection( Cn_VFPData ) THEN
DelayBeforeClosing(1000)
Info("No se puede conectar con la base de datos",HErrorInfo())
END

// importar datos de un dbf
sQueryString is string
sQueryString = "SELECT * from fichero_dbf "
IF NOT HExecuteSQLQuery(ds_VFPData, Cn_VFPData, hQueryWithoutCorrection,
sQueryString) THEN
info("Fallo al recuperar fichero.")
ELSE
*.- recorrer la consulta
HReadFirst(ds_VFPData)
WHILE NOT HOut(ds_VFPData)
HReadNext(ds_VFPData)
END
endi

Espero te sirva.
Raül Vidiella


En/na Manrique orellana ha escrit:

Hola Manuel
por favor podrias ayudarme
Como lograste importar los archivos DBF de VFP al HF clasico
por favor si puedes enviame esa informaciona mi email windev @ mansoft.com.ec

Muchas gracias

Publicado el 18,noviembre 2008 - 16:35
Perfecto compañeros

voy a probar y les cuento. pero deantemano muchas gracias por indicar la forma ó procedimiento para hacer esto


Gracias

Manuel
Publicado el 04,diciembre 2008 - 15:45
Ver esto:

//EDT_empresa_emp=xx
// Delete all the selected rows from a table
NbSelection = TableCount(TABLE_Centrogas,toTotal)
PROGBAR_centrogas..MaxValue=NbSelection
PROGBAR_centrogas=0
for each Centrogas ON ANO
PROGBAR_centrogas ++
IF CBOX_Inicializa=true THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas)
ELSE
IF xx=Centrogas.empresa AND EDT_Ano_emp=Centrogas.ANO THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas)
END
END
END
TableDisplay(TABLE_Centrogas)



"R.Rodrigo" <frrr@grupo3rs.com> escribió en el mensaje de noticias
news:f2f72848df9d4a5ef638bce0cbf967a1@news.pcsoft...



Para el que lo necesite, os adjunto como lo he hecho yo, y me ha
funcionado OK.

Como vereis, hay una barra de progresion y un grid donde muestro la tabla,
esto no es imprescindible.

Un saludo
R. Rodrigo

//-------------------------------------------------
CENTROGAS ---------------------------------------------------

//EDT_empresa_emp=xx
// Delete all the selected rows from a table
NbSelection = TableCount(TABLE_Centrogas,toTotal)
ACTUAL=0
PROGBAR_centrogas..MaxValue=NbSelection
PROGBAR_centrogas..MinValue¬TUAL
HReadFirst(Centrogas,ANO)
WHILE NOT HOut
ACTUAL¬TUAL+1
PROGBAR_centrogas..Value¬TUAL
IF CBOX_Inicializa..Value=1 THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
ELSE
IF xx=Centrogas.empresa AND EDT_Ano_emp=Centrogas.ANO THEN
STC_accion_centrogas..Caption="Elimina"
HDelete(Centrogas,hCurrentRecNum)
END
END
HReadNext(Centrogas,ANO)
END
TableDisplay(TABLE_Centrogas)



FILE_ORI=NoSpace(EDT_Carpeta_sin)+"\Centros.DBF"
HDBOpen("Centrogas_ORI","cg",FILE_ORI)
edt_centrogas_codigo..FileLink = "Centrogas_ori.centrogas"
edt_centrogas_nombre..FileLink = "Centrogas_ori.nombre"
HReadFirst("Centrogas_ORI","centrogas")
MAXIMO = HNbRec("Centrogas_ORI")
ACTUAL=0
PROGBAR_centrogas..MaxValue=MAXIMO
PROGBAR_centrogas..MinValue¬TUAL
STC_accion_centrogas..Caption="Convierte"
WHILE NOT H.Out
ACTUAL¬TUAL+1
PROGBAR_centrogas..Value¬TUAL
FileToScreen() // originales viejos
Centrogas.empresa=xx
Centrogas.ANOíT_Ano_emp
Centrogas.CODIGO=edt_centrogas_codigo
Centrogas.NOMBRE=edt_centrogas_nombre

HAdd(Centrogas)

HReadNext("Centrogas_ori")
END

TableDisplay(TABLE_Centrogas)