In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

duplicar base datos

Foro público de Xailer en español
PILO
Posts: 583
Joined: Fri Jul 06, 2007 5:18 pm

duplicar base datos

Postby PILO » Sun Oct 12, 2008 5:22 pm

PRIVATE contadormio := 0, CONTADOR := 0, CONTAANIMAL := 0, CONTCAMBIO := .F.
PRIVATE CCODIGO, creararchivo := .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES
localizo donde estoy trabajando
if curdrive() = "" // si esta en puesto de red
RCAMINO := "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD := curDrive()+ ":"
RCAMINO := RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES := "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " +Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 := RCAMINO + "EXPLTMP" //creo una base de datos temporal para copiar la que tengo ahora
ARCHIVO3 := RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:= ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A.
ERASE (ARCHIVOA)
END IF
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base maestra para la actualizacion
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de como hacerlo
con los dataset.
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
--
PILO
Posts: 583
Joined: Fri Jul 06, 2007 5:18 pm

duplicar base datos

Postby PILO » Wed Oct 15, 2008 4:12 pm

Alquien me puede hechar una mano.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio := 0, CONTADOR := 0, CONTAANIMAL := 0, CONTCAMBIO := .F.
PRIVATE CCODIGO, creararchivo := .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES
localizo donde estoy trabajando
if curdrive() = "" // si esta en puesto de red
RCAMINO := "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD := curDrive()+ ":"
RCAMINO := RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES := "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " +Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 := RCAMINO + "EXPLTMP" //creo una base de datos temporal para copiar la que tengo ahora
ARCHIVO3 := RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:= ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A.
ERASE (ARCHIVOA)
END IF
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base maestra para la actualizacion
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de como hacerlo
con los dataset.
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
--
zeasoftware
Posts: 1831
Joined: Tue Oct 11, 2005 9:53 am

duplicar base datos

Postby zeasoftware » Wed Oct 15, 2008 5:39 pm

Tendrias que hacer todo el proceso que hace el appendFrom, en la clase TDataSet, y validar los valores, leer los campos, comparar los tipos, anexarlos y reemplazarlos.
Yo cree uno parecido pero para ingresar datos desde Excel, y le puse AppendFromXLS, me funciona perfecto, despues de varios problemitas.
otra puedes crear el metodo AppendFrom y de el llamar a :
( ::cAlias )->( __dbApp( (::oEditBtn1:value + cDBF), { },,,,, .F., ) )
No se si Harbour lo traiga documentado, al menos Clipper nunca lo documento en las ayudas que tengo, pero no es mas que el resultado del comando APPEND FROM...
Espero te sirva.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com
--
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

duplicar base datos

Postby jrcpoli » Wed Oct 15, 2008 7:39 pm

This is a multi-part message in MIME format.
------=_NextPart_000_00AC_01C92EFD.CE434B10
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_00AD_01C92EFD.CE434B10"
------=_NextPart_001_00AD_01C92EFD.CE434B10
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Saludos:
Te adjunto al correo un prg que contiene codigo que puede ser de tu =
interes, pero esta escrito para trabajar con tres bases de datos que =
contiene:
DBNOMBRE :=3D Contiene los nombres de las bases de datos a utilizar =
en la aplicaci=F3n.
CAMPOS :=3D Contiene todos los campos y sus dimensiones y tipo de =
todas las bases de datos contenida en DBNOMBRE
INDICES :=3D Contiene todos los indices de las bases de datos =
contenidas en DBNOMBRE
Con estas tres bases de datos consigo, que al entrar en la =
aplicaci=F3n pueda revisar que todas las bases de datos existen y sus =
indices y reconstruir aquello que necesito, tambien lo empleo en las =
copias de las bases de datos en actualizaciones de las mismas, para ello =
creo un directorio al que copio las bases de datos en uso y luego creo =
las nuevas, en el directorio que corresponda y por ultimo copio los =
datos de la base de datos vieja que esta en el directorio creado a la =
base de datos nueva que est=E1 en el directorio de uso de la =
aplicaci=F3n.
Espero que este codigo te pueda servir para tus propositos, =
cualquier aclaraci=F3n quedo a tu disposici=F3n.
Jos=E9 Ram=F3n Castro.
"PILO" <srmpilo@hotmail.com> escribi=F3 en el mensaje de noticias =
news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio :=3D 0, CONTADOR :=3D 0, CONTAANIMAL :=3D 0, =
CONTCAMBIO :=3D .F.
PRIVATE CCODIGO, creararchivo :=3D .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, =
NOMBRES
localizo donde estoy trabajando
if curdrive() =3D "" // si esta en puesto de red
RCAMINO :=3D "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD :=3D curDrive()+ ":"
RCAMINO :=3D RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES :=3D "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O =
ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO :=3D RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO :=3D RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " =
+Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando =
dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con =
password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 :=3D RCAMINO + "EXPLTMP" //creo una base de datos =
temporal para copiar la que tengo ahora
ARCHIVO3 :=3D RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:=3D ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el =
archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A. =20
ERASE (ARCHIVOA)
END IF
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base =
maestra para la actualizacion
DESTINO :=3D RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO :=3D RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el =
trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a =
la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de =
como hacerlo
con los dataset.=20
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
------=_NextPart_001_00AD_01C92EFD.CE434B10
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.6001.18099" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Saludos:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Te adjunto al correo =
un prg que=20
contiene codigo que puede ser deÂtu interes, pero esta escrito para =
trabajar con tres bases de datos que contiene:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ DBNOMBRE :=3D =
Contiene los nombres=20
de las bases de datos a utilizar en la aplicaci=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ CAMPOSÂ:=3D =
Contiene todos=20
los campos y sus dimensiones y tipo de todas las bases de datos =
contenida en=20
DBNOMBRE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ INDICES :=3D =
Contiene todos los=20
indices de las bases de datos contenidas en DBNOMBRE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Con estas tres bases =
de datos=20
consigo, que al entrar en la aplicaci=F3n pueda revisar que todas las =
bases de=20
datos existen y sus indices y reconstruir aquello que necesito, tambien =
lo=20
empleo en las copias de las bases de datos en actualizaciones de las =
mismas,=20
para ello creo un directorio al que copio las bases de datos en uso y =
luego creo=20
las nuevas, en el directorio que corresponda y por ultimo copio los =
datos de la=20
base de datos vieja que esta en el directorio creado a la base de datos =
nueva=20
que est=E1 en el directorio de uso de la aplicaci=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Espero que este =
codigo te pueda=20
servir para tus propositos, cualquier aclaraci=F3n quedo aÂtu=20
disposici=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Jos=E9 Ram=F3n Castro.</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"PILO" <<A=20
href=3D"mailto:srmpilo@hotmail.com">srmpilo@hotmail.com</A>> =
escribi=F3 en el=20
mensaje de noticias <A=20
=
href=3D"news:48f21772$1@ozsrv2.ozlan.local">news:48f21772$1@ozsrv2.ozlan.=
local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ PRIVATE contadormio :=3D =
0, CONTADOR=20
:=3D 0, CONTAANIMAL :=3D 0, CONTCAMBIO :=3D .F.<BR>ÂÂ =
PRIVATE CCODIGO,=20
creararchivo :=3D .f.<BR>ÂÂ PRIVATE ARCHIVOA , ARCHIVO2 , =
ARCHIVO3 ,=20
ARCHIVO3A , ARCHIVO5, NOMBRES<BR><FONT color=3D#ff0000>localizo donde =
estoy=20
trabajando</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ if curdrive() =3D "" // =
si esta en=20
puesto de red<BR>ÂÂÂÂÂ RCAMINO :=3D "" + =
CURDIR() +=20
""<BR>ÂÂÂÂÂ SET PATH TO=20
&RCAMINO.<BR>ÂÂ else<BR>ÂÂÂÂÂ =
RUNIDAD=20
:=3D curDrive()+ ":"<BR>ÂÂÂÂÂ RCAMINO :=3D =
RUNIDAD + ""=20
+ CURDIR() + ""<BR>ÂÂÂÂÂ SET DEFA TO=20
&RCAMINO.<BR>ÂÂÂÂÂ SET PATH TO=20
&RCAMINO.<BR>ÂÂ end if</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ NOMBRES :=3D "NOMBRE DE =
LA BASEDEDATOS=20
QUE QUIERO CREAR O ACTUALIZAR"<BR><FONT color=3D#ff0000>Compruebo si =
exite el=20
archivo, sino exite lo copio</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ IF=20
!FILE(ARCHIVO)<BR>ÂÂÂÂÂ ORIGENÂ =
:=3DÂ RCAMINO=20
+ "BASEDATO"+NOMBRES+".cdx"<BR>ÂÂÂÂÂ DESTINO =
:=3DÂ RCAMINO + NOMBRES+".cdx"<BR>ÂÂÂÂÂ =
COPY FILE=20
&ORIGEN. TO &DESTINO.<BR>ÂÂÂÂÂ =
ORIGENÂ=20
:=3DÂ RCAMINO +=20
"BASEDATO"+NOMBRES+".DBF"<BR>ÂÂÂÂÂ DESTINO =
:=3DÂ=20
RCAMINO + NOMBRES+".DBF"<BR>ÂÂÂÂÂ COPY FILE=20
&ORIGEN. TO &DESTINO.<BR>ÂÂÂÂÂ =
MsgSave( "Ha=20
copiado la base de datos nueva "+ NOMBRES + " " =
+Time())<BR>ÂÂ=20
else</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>Hasta lo =
anterior=20
bien,Âpero quiero hacer lo de abajo,Âper utilizando dataset=20
enÂvez de</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>utilizar el =
use, y sobre todo=20
que las bases de datos estaran con passwordÂen un=20
futuro</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>alguien me =
puede ayudar un=20
poco. gracias</FONT><BR>ÂÂÂÂÂ archivo2 :=3D =
RCAMINO +=20
"EXPLTMP" //<FONT color=3D#ff0000>creo una base deÂdatos temporal =
para=20
copiar la que tengo ahora</FONT><BR>ÂÂÂÂÂ =
ARCHIVO3 :=3D=20
RCAMINO + "EXPLTMP.DBF"<BR>ÂÂÂÂÂ ARCHIVO5:=3D =
ARCHIVO3<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVO3)<BR> ÂÂÂÂÂÂ ÂÂ =
ERASE=20
(ARCHIVO5)<BR>ÂÂÂÂÂ END=20
IF<BR>ÂÂÂÂÂ COPY FILE &ARCHIVO. TO =
&ARCHIVO3.=20
<FONT color=3D#ff0000>//copioÂla base de datosÂen el archivo =
temporal</FONT><BR>ÂÂÂÂÂ ERASE=20
(ARCHIVO)<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVOA)<BR> ÂÂÂÂÂÂ ÂÂ =
COPY FILE=20
&ARCHIVOA. TO &ARCHIVO3A.Â<FONT=20
=
color=3D#ff0000>Â</FONT><BR> ÂÂÂÂÂÂ &nbs=
p;Â=20
ERASE (ARCHIVOA)<BR>ÂÂÂÂÂ END=20
IF<BR>ÂÂÂÂÂ ORIGENÂ :=3DÂ RCAMINO + =
"BASEDATO"+NOMBRES+".cdx" <FONT color=3D#ff0000>//baseÂmaestra =
para la=20
actualizacion</FONT><BR>ÂÂÂÂÂ DESTINO =
:=3DÂ=20
RCAMINO + NOMBRES+".cdx"<BR>ÂÂÂÂÂ COPY FILE=20
&ORIGEN. TO &DESTINO.<BR>ÂÂÂÂÂ =
ORIGENÂ=20
:=3DÂ RCAMINO +=20
"BASEDATO"+NOMBRES+".DBF"<BR>ÂÂÂÂÂ DESTINO =
:=3DÂ=20
RCAMINO + NOMBRES+".DBF"<BR>ÂÂÂÂÂ COPY FILE=20
&ORIGEN. TO &DESTINO. <FONT color=3D#ff0000>// =
copioÂla=20
original para el trabajo</FONT><BR>ÂÂÂÂÂ =
select=20
10<BR>ÂÂÂÂÂ USE &NOMBRES.=20
EXCLUSIVE<BR>ÂÂÂÂÂ APPEND FROM =
&ARCHIVO2.Â=20
<FONT color=3D#ff0000>// actualizo los datos de la temporal a la=20
nueva,</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>en esta parte =
es lo que=20
quiero hacer y me gustaria saber una ayuda de como =
hacerlo</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>con los =
dataset.=20
</FONT><BR>ÂÂÂÂÂ=20
reindex<BR>ÂÂÂÂÂ CLOSE=20
10<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVO3)<BR> ÂÂÂÂÂÂ ÂÂ =
ERASE=20
(ARCHIVO5)<BR>ÂÂÂÂÂ END IF<BR>ÂÂ =
END=20
IF<BR><FONT color=3D#ff0000>Gracias de antemano al que me=20
ayude.</FONT></DIV></BLOCKQUOTE></FONT></BODY></HTML>
------=_NextPart_001_00AD_01C92EFD.CE434B10--
------=_NextPart_000_00AC_01C92EFD.CE434B10
Content-Type: application/x-zip-compressed;
name="UpdateDBF.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="UpdateDBF.zip"
UEsDBBQAAAAIALeYTzn465aTVw4AAOtCAAAOAAAARm9ybVVwZGF0ZS5wcmfl G9tu20b22QHyDxMt
EEi2Ksdpd1Fw18VSFOWolSVVlNsAaRCMqLHNhCJVXlw7bT62j33Yh0V+YM9c yBlySInKHVgBceSZ
M3Muc+4zPj68fw8dolkU3hE3CQ1khYGbRnHIhoeee00iGB2G0fpis8IJ6W2i KzY3ILEbeRvXexsY
5QG+IPVx5IVoRZAbbjxMvyxxTGL6BbYKY0QChN0kxb73GrteGJCY7WSmSRgZ 6Psw/gvN8fptgCwc
J1GIZqHvBZ6gjbjXGI0CDxYa6OQfx48eHz9+9OjbfJIhPA9X3qXnYk7VybfV UAsSrb2AARW3Ojy+
f+/+vb95geunANd6ij2fRD33uqWOrrwIhBfd0XEKb41Nx0ELKTQ0nE/P+QCd RwhZ0/PZdGJPFigc
rfEVOSmPjvGS+NroWRSmm354q02ck3VYC/24PGFdE/fVMt9GX/F1eQIU5Coi cdzHUe2ib7Ys0kjo
J0F/vTkR4hiYCxP5FokiHKHRZLRAvUVPzkw3VDumP1RMhQOcYCdMI5eogw5X jMLQJFwvgZzCmIXX
mzAurVx5LgVjo+f24sl0gKyIwDnSA2x31HE6YvlhTNoodEiwIlEX/dtnI0gD BJoSjyq7hNaBnOvw
t5ppITPL99xXNSAWtbQ+tbKMTkl/9GK1vGwzE6TfusgdeBGDrQD1glUd6P17 9mTAdLxoHIqTuL1c
M0s4Pv7qg37onlsknwkeaRbIGDxkP8dTyxyjQBk5PESOl6ufcYoWUcpXjIbI MMQEG8jX8GViCWBF
TA9Jkk0Op3MU0L3GJGjDJoqeGljAAqGLKTpBzsKeoa+4XZVwMBpqlj8Lnhv+ dEMoK/KzBZiLq6OA
w0GOhlV4J/bThc4wc/JJlHqc5RVsTW1HR0sZn3i+nMstEn4rz0nT1OdyE61Y J201n5MUS+b473N7
cTGfCA0BcHmun0BPKwx/h5IeHnI7RMRHJQ/382jxBE3739vWQhf6wlrdypF2 x+COSx664UKEDyBc
UehWr5VJqojbXEb0jDEL2DRCeuzwdPzyYBn2wfJS6FsBda7Iba6w6PSUenFV E8WEARND6t519TyU
LEzwmjD6IR5Yo2nPmY1a+azvXOOIrEpblQRVlFyOoqE0hLrCVxiNi1mNGEV4 A26aZTXVUhN7fBax
DfqT6Xl/bvcG/eHHERw3N2qTn8C8aMhsaljc+7vzNMEmO6HEC5n8zE3+q0Gj HU2Ho7vSGh5aGcv1
a9ARavVNx3Z+aZUsOlxvILIsMfo1VTWH3HpxQoIs4gxHY7tdovBIVfVOLvaC jkhbzLVCqktpQR71
+LYvnJEjtAuRmJF3je9QGmA1QX+rRJoDQPlARSk30sIRPYh9gk9ZWrGXiUgI DAcJgdIiS+ZyGQwh
O2/LczpqHTIN76Dj4+IGNx55ieNemVKeRhs/YT8lxmnL9gE1rFoDCQTkkvzJ /SAOVrSsiTfpX8za
r/ES9A5O31t6MKNJrdc6subj4dE/BT75aTl0dQCbJKA7GBaXfInkFIqoANBf gizLmx7QT8sGStEm
Cl2y8tYeCZIQ+TBAS5vEi/6UJEVM9YKU3MB/5V0K+BlSgFbx0iEQpLfCiNA5 lcYtjM5SPyZsrRek
OKKB54B/FFjhbt3Eu8EqvYwoDl0+MlnLGD77SlZC77dB2gFe+rmrK1HQREXt sWMr4+fxlZOEm3bL
jqIwQhgCBgElyWKGlGcLHalBk/vkri4vRH0L9bPGlYU31AMUvL6RVUQ5Bw3s TfrkukCRMSZHSuwN
sZ9gUHB0yTsDaHQ+m9uONYKN+mO7iyZT5NhodmEPbGRDsLtYmHPKs8ZhC41N ZM7GI8sEtzHptbpV
HG9nV+dVZbRZQvjxI5Rate0bpbD32uEeaN8I1Tg68aV0XqxkGUJh7oJa+2rq r/Q532Z+lco4PxtZ
Y43xa0j4s8lH6p7DlAR8nY6PFhleEFbN5SVpxRwGHujg72+UQTA1xlfFEDCk jjpQ2LiJMuIVo/cT
7EJ04MGR+dcIfB/8WOKXND7QgICp5yI0Z1+GyVvq1hUvJvZh64OQrtikBLyo y6oQuuhSNs3uKBiF
Wae04mJ7RsQPX7I9IxJg2I4ZAFevSp8maxxlsKAWfj+N74S/1AriqpDZhXDl smAXb7C/CsGLb4m7
1MfDXnMBLPLlYgymMFLDjFNV6Y+4pk7HA6qsBxQVnPE5fgXYCmDZebY6//ru EYJwD6F7JTTeCwUn
PTQO4WBAHgzpgWnfYL+dG0ZbUkEZOGx1uuj3PzDl7Q80tCNAoYKwiWfDFxPz 3H7eecN4ZQ6GMX1A
f2YKmaOokxE0C7ixnJ7QjsDYnrTpWjZ3IEwFNlJW0+lnbMnzjAYGnNkOAOek VgGXUi3WnyV+5tbZ
2YQ0vocJ/CYlyXAA9B07cUFZN0PK6C10DoQC9KnQq45ePwTJY+0hlCVfwCYc UqbScqbg/A8E05Io
nhBxogxDbaNpdgHMUoP3iUuDEk3apJGX87e73ENCmTe/sEWOX5O49MzJoJet qGq/mCDHO56UweZB
XoZqbGRrGqqgjonlJ4In4hd7uTL8FoaN4BzfAjKpv/WAXsAigob581qC/K6T zIoCSjRbXl+28MPT
Mj9qTCR3Suq9SL5cFn8yBHaqc1OJrr83kmIzQo2Gtb0Ih/iX3WLl381pVEls 0LHY3rqozbx1/rd1
LeSnUArX7ieRvqe8WbzaLew9Jc31/v9L0NIBQdJFpbzh5khLZBpNeLu8xl5P FHt9tBWQOS2WTKqW
YMwJ9EnTAE5m12ovENntVoY8CnKiMQloIDSytNKHfxG58uhFZ1wEHEzRz0/A L6AHKol2OATqdh+c
CHVCjAJHFuPL0FkaXJbHGUkYraumKGdhQNkq+0ERn9jN738xGE55bY7VGMKd r7laTchvTXFWscnw
hVnIzDu0Pme/HruDb8gwCtftXCINiTiDiqBMxHYmefXXlEnzBgfcJtJgNwJ6 ds4rb7P/7kD+rMri
mhmdd3R0f7cPAM3eYjXyho0rEpwb/L/k1VwNs1kroBogm32Hhk+e1ip5ZMWn dHuT3U/Rmd1rhDeI
NKOhX7KevZOlkG31GqE6CpQgZBSQnGzbzdiy2zRaQeAahm4at/P7hA+YSkr3 XQMiHXeBMOm5t2ef
SM8/dT8tHW8BhR1ewu7bG9fhEotmgag+i4mCXCFbLxS1WtZCp8Ycjxfz0Xnx cAajOeQS0/lo2qHN
nF9a1aRILfS4Fsop2UYBnNVI+IG+gPqg2Hjc+TpAJaXWb811v6Vi5y6r0WY+ Ft5pRfIM4XGjPD53
URKBdEslA5FmjddLj+sx1K3Q6l3pqb68L2U3F3Gh8Nt6ZVKYtVeeVOKadbk5 60AXmwGLKnWc/Jh6
CZWg3lnqorvs2kCo8PZmVUWraVHTahL0fqoerP4oplHbFbTZ5Le3je8GMwOo b1hqMwG0xVKfXvqw
wXeJAocf23t/YgdInXJJ/NQJ+n4SeetaJ1gsoNtSrnQ3gLOemJMzu63g6XTQ g9qMXW6l7HSKHt/f
nUBVoj83f9iNXN9Rv1uaZE1jWtRTN1yUaA/uWSSa/M5F/7Sqr2n2uJCBT6O7 qAaXUpL3JpUpG3qH
7G2bXup2FkNXA0aZkKv0dA8tzU9HD9X0Ap11e/J95S51sZjtwpp2OxtDLFAX GWMw750DsONs8p7w
XY6IB/aI1TbvnCMAjsH0S7j62y6lJrGIt3jLp3Qxm9lzuWeno6xgD/RcOlx1 FzYOXewX482CX2FF
tEbObcEy4aWuQzWNv1WhTwHoO7yaN09iL/k2gLXGuP6wXbQ3UPJp3+d5AsUZ /MAPoDJS9QAsn9xk
9wbMfYvUXAEphGZBZasu1hoOIa/aRa2QGtMRelEK5UVw1cg7VLpyvbiOeMA6 TQ39DbBEs/G74rRp
DgZtqZhwpZNRwfG/YHx2oPG5GM2m/LeKRxHGeDo547MAOrAt/h292U6c7ilk jq+vKJpcIaDKGVWu
fWtumwtbCJ7zp/LaAtFag6faIep6atjBSibszFw+k8sCtfyELouvoEjLSXJ2 IUnn6qYSfFWecn18
w/fTs+6fCJTCVU8SAjZYMSNOk+5X71LlkNdFLxt4WCWrz9tEv6biiRQJmM/N KnexUbXv3dfpMmSf
6eEpfSdk2Z/c7da54AYeWFDc2taMUN/6iYZAv9yTgJ5Sg7YpaF2DiwrZ49pC lexUCPtC2IfmdLoJ
4Tr+toBH/tmP4S7ILX8abkbutQed8/8w+YBm8beFMb1TLD9vrKJiazErVfsj RLMPEMtEoRAVy1dB
M2pRd15YVHJhFRk9J03m8PkW2uWv3KrDqc58VlXRmD2u0JMJ+Rnac9NR9915 F7CtzJJqn67hVpJh
pi6IVrwR2mBQ+0A8s4n84sWEYIT23ZrkEmnAc4ny5U3BNSLMa+H6hAMA1YRD nkO3NAam3tGzDglk
P53NORAyLqAFx5MQx6Kx+s1Ondpe2cg0pbSwadaSYxCmprufqrvI/NEFH2Rv LprffcpWKgOUFyU7
M53D6pSn/NQmTyfFw2G12hgN2Z9WyUPuoO8KDf0d2Zysf/OaurRY/u1H0XVx pxCz7qlwivRFOFtU
DLh5erDffb+kGSTT+LK/EJEbVtyl2KtBNQiuKmzpT9+yJzzikBq5HvjInI/R JRc/Q0EXnTzXHZxc
UDpkda/yMjWBrMDzWMOjppUVC75+3oA3iFuWKV5Y6658jDkOemnAPAxi4oZ+ fOZn6jpsbNcyRd88
F5rC40h5+u8wLfdr0pHjH3CB9lM0naCHUiAL8ww9VARa13ykGvFQORTK5o8X 9j4UcDlZmpyG7yun
4Rcsp31QN1Wkxb4C2qFIi88pIKFIGX+jydk+xJRElsIVWsh06H1FNvySRfYO sgJw6cDKMV+POMUg
n89W9mY/dpPjf1BLAwQUAAAACABBolM4KWq4kx0DAABoDAAADgAAAEZvcm1V cGRhdGUueGZtzVVb
b9owFH6v1P9g5WGiUlSRC+Ui7YGksLIBQU26PZvgFq/BjuzQ29/eH5gvCYGF QmmZVEtE9vHBzvd9
53wZ9aKr4BL4DMEM9Slb1M6AP+yGIYjk6iadifjpyekJACBcpoh11lNVuNMJ UebRJZnxGnCcpgls
yzFBo2GbwLWbYC3LTzAiWYhfUA00XNcETttZ7ccRespA5yswfEriJeMUdONs CRP8AmP8hxh5Hu1T
ovIiOamd6TcSJxqjEISQcBAihm8NE7RMUBfvUK+v7iAeZTPEwuw5QfKIKb8c dIfBt3w7mUAmXnAQ
UyJ3z/vnxZ1FyOh2B34wnnSHRvGfEZ3BRKVH50XMF6cghmab4YD4CeVInSMJ VCtjtTkgOMMSbplR
hsq0cE4fVwlykW8VPJzlcv0aRFcg8L73/Egi+MboMvXok62oK1aCvjF6rAnK klvFkhrritqCQqtt
m2JyIVRtlVlrigVpjClBHMwQgP+KpkbBrdSs5FaNHYp2mUBfUVKNIkkHeuPL HHYVuT9H8f2UPlnq
Cr1aId+gJj+9SoIl8buCiGZLPAoOKjSs6pWBBHIwhVxTIpqI8nPNxV463s1I hZSSlyopXka8Raop
0fP9peBaF6bocFtQIKvCqW+thS++eGVMlpD9R/Gph7MFTLm6ceIFP1Z3qS7D 8b3ayVGqgLGzcqoM
DRbwDmmC1HQ/P9aFZEY2ifi5azlJBKdhRtMCexlnwq9SxU1pFWpUrephHIx7 JQETLIqNIU0AvkOU
WIciHMIpSjRCNd2PsFXXfeCKx4b+e91btkEfx3PERCccqTAsXRnNt9jCK25o HeiGUuKmlNiStmi5
WxkYIcLhb8SPBPND5jdCC6pBytkW07NeMz1xr4LrtsWkLS4/ikFVWqHc+gmT pa7nTae8RnAWkOQ5
75B32V2B1jlQb1sWfEPaXqvxytdPQo7n+IECREDKaIw4rXwHj1XyH6qFCaN3 DHHuQaZLYi2wpTKc
XZWhDKApm6B5pMo4WEv3HVo64rFTy4hmMJHy5aJ+iiZe08l+g3DupxDuuhfd XI+VHqcnfwFQSwEC
FAAUAAAACAC3mE85+OuWk1cOAADrQgAADgAAAAAAAAAAACAAAAAAAAAARm9y bVVwZGF0ZS5wcmdQ
SwECFAAUAAAACABBolM4KWq4kx0DAABoDAAADgAAAAAAAAAAACAAAACDDgAA Rm9ybVVwZGF0ZS54
Zm1QSwUGAAAAAAIAAgB4AAAAzBEAAAAA
------=_NextPart_000_00AC_01C92EFD.CE434B10--

Attached files UpdateDBF.zip (4.6 KB)Â
José Ramón Castro.
Paco V
Posts: 380
Joined: Thu Oct 27, 2005 9:08 am

duplicar base datos

Postby Paco V » Wed Oct 15, 2008 8:06 pm

Solo te falta agregar las bases de datos DBNOMBRE, CAMPOS e INDICES, para dejarnos todo hecho.
Saludos:
Paco V
"José Ramón Castro" <jrcpoli@terra.es> escribió en el mensaje news:48f62ce6@ozsrv2.ozlan.local...
Saludos:
Te adjunto al correo un prg que contiene codigo que puede ser de tu interes, pero esta escrito para trabajar con tres bases de datos que contiene:
DBNOMBRE := Contiene los nombres de las bases de datos a utilizar en la aplicación.
CAMPOS := Contiene todos los campos y sus dimensiones y tipo de todas las bases de datos contenida en DBNOMBRE
INDICES := Contiene todos los indices de las bases de datos contenidas en DBNOMBRE
Con estas tres bases de datos consigo, que al entrar en la aplicación pueda revisar que todas las bases de datos existen y sus indices y reconstruir aquello que necesito, tambien lo empleo en las copias de las bases de datos en actualizaciones de las mismas, para ello creo un directorio al que copio las bases de datos en uso y luego creo las nuevas, en el directorio que corresponda y por ultimo copio los datos de la base de datos vieja que esta en el directorio creado a la base de datos nueva que está en el directorio de uso de la aplicación.
Espero que este codigo te pueda servir para tus propositos, cualquier aclaración quedo a tu disposición.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio := 0, CONTADOR := 0, CONTAANIMAL := 0, CONTCAMBIO := .F.
PRIVATE CCODIGO, creararchivo := .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES
localizo donde estoy trabajando
if curdrive() = "" // si esta en puesto de red
RCAMINO := "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD := curDrive()+ ":"
RCAMINO := RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES := "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " +Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 := RCAMINO + "EXPLTMP" //creo una base de datos temporal para copiar la que tengo ahora
ARCHIVO3 := RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:= ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A.
ERASE (ARCHIVOA)
END IF
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base maestra para la actualizacion
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de como hacerlo
con los dataset.
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
--
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

duplicar base datos

Postby jrcpoli » Wed Oct 15, 2008 8:32 pm

This is a multi-part message in MIME format.
------=_NextPart_000_012A_01C92F05.1A0EA880
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_012B_01C92F05.1A0EA880"
------=_NextPart_001_012B_01C92F05.1A0EA880
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Saludos:
Adem=E1s de esas tres bases de datos empleo otra con una extensi=F3n =
diferente de "DBF" con extensi=F3n "SPI" que solo contiene un campo =
logico que es el miro para ver si existe una nueva versi=F3n de las =
bases de datos. De todas formas como veo que es de tu interes te adjunto =
las bases de datos que pides con datos para que veas como las uso.
Jos=E9 Ram=F3n Castro.=20
"Paco V." <ssi@ono.com> escribi=F3 en el mensaje de noticias =
news:48f63141$1@ozsrv2.ozlan.local...
Solo te falta agregar las bases de datos DBNOMBRE, CAMPOS e INDICES, =
para dejarnos todo hecho.
Saludos:
Paco V=20
"Jos=E9 Ram=F3n Castro" <jrcpoli@terra.es> escribi=F3 en el mensaje =
news:48f62ce6@ozsrv2.ozlan.local...
Saludos:
Te adjunto al correo un prg que contiene codigo que puede ser de =
tu interes, pero esta escrito para trabajar con tres bases de datos que =
contiene:
DBNOMBRE :=3D Contiene los nombres de las bases de datos a =
utilizar en la aplicaci=F3n.
CAMPOS :=3D Contiene todos los campos y sus dimensiones y tipo =
de todas las bases de datos contenida en DBNOMBRE
INDICES :=3D Contiene todos los indices de las bases de datos =
contenidas en DBNOMBRE
Con estas tres bases de datos consigo, que al entrar en la =
aplicaci=F3n pueda revisar que todas las bases de datos existen y sus =
indices y reconstruir aquello que necesito, tambien lo empleo en las =
copias de las bases de datos en actualizaciones de las mismas, para ello =
creo un directorio al que copio las bases de datos en uso y luego creo =
las nuevas, en el directorio que corresponda y por ultimo copio los =
datos de la base de datos vieja que esta en el directorio creado a la =
base de datos nueva que est=E1 en el directorio de uso de la =
aplicaci=F3n.
Espero que este codigo te pueda servir para tus propositos, =
cualquier aclaraci=F3n quedo a tu disposici=F3n.
Jos=E9 Ram=F3n Castro.
"PILO" <srmpilo@hotmail.com> escribi=F3 en el mensaje de noticias =
news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio :=3D 0, CONTADOR :=3D 0, CONTAANIMAL :=3D =
0, CONTCAMBIO :=3D .F.
PRIVATE CCODIGO, creararchivo :=3D .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, =
NOMBRES
localizo donde estoy trabajando
if curdrive() =3D "" // si esta en puesto de red
RCAMINO :=3D "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD :=3D curDrive()+ ":"
RCAMINO :=3D RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES :=3D "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O =
ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO :=3D RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO :=3D RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " =
+Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per =
utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con =
password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 :=3D RCAMINO + "EXPLTMP" //creo una base de datos =
temporal para copiar la que tengo ahora
ARCHIVO3 :=3D RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:=3D ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos =
en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A. =20
ERASE (ARCHIVOA)
END IF
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base =
maestra para la actualizacion
DESTINO :=3D RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN :=3D RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO :=3D RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para =
el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la =
temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda =
de como hacerlo
con los dataset.=20
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
------=_NextPart_001_012B_01C92F05.1A0EA880
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.6001.18099" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Saludos:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Adem=E1s de esas =
tres bases de=20
datos empleo otra con una extensi=F3n diferente de "DBF" con extensi=F3n =
"SPI" que=20
solo contiene un campo logico que es el miro para ver si existeÂuna =
nueva=20
versi=F3n de las bases de datos. DeÂtodas formas como veo =
queÂes de tu=20
interes teÂadjunto las bases de datos que pides con datos para que =
veas=20
como las uso.</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Jos=E9 Ram=F3n =
Castro.</FONT>Â</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Paco V." <<A href=3D"mailto:ssi@ono.com">ssi@ono.com</A>> =
escribi=F3=20
en el mensaje de noticias <A=20
=
href=3D"news:48f63141$1@ozsrv2.ozlan.local">news:48f63141$1@ozsrv2.ozlan.=
local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Solo te falta agregar las bases de=20
datosÂDBNOMBRE, CAMPOSÂe INDICES,Âpara dejarnos=20
todoÂhecho.</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Saludos:</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Paco V</FONT>Â</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Jos=E9 Ram=F3n Castro" <<A=20
href=3D"mailto:jrcpoli@terra.es">jrcpoli@terra.es</A>> escribi=F3 =
en el=20
mensaje <A=20
=
href=3D"news:48f62ce6@ozsrv2.ozlan.local">news:48f62ce6@ozsrv2.ozlan.loca=
l</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Saludos:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Te adjunto al =
correo un prg=20
que contiene codigo que puede ser deÂtu interes, pero esta =
escrito para=20
trabajar con tres bases de datos que contiene:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ DBNOMBRE :=3D =
Contiene los=20
nombres de las bases de datos a utilizar en la =
aplicaci=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ CAMPOSÂ:=3D =
Contiene=20
todos los campos y sus dimensiones y tipo de todas las bases de =
datos=20
contenida en DBNOMBRE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ INDICES :=3D =
Contiene todos=20
los indices de las bases de datos contenidas en =
DBNOMBRE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Con estas tres =
bases de=20
datos consigo, que al entrar en la aplicaci=F3n pueda revisar que =
todas las=20
bases de datos existen y sus indices y reconstruir aquello que =
necesito,=20
tambien lo empleo en las copias de las bases de datos en =
actualizaciones de=20
las mismas, para ello creo un directorio al que copio las bases de =
datos en=20
uso y luego creo las nuevas, en el directorio que corresponda y por =
ultimo=20
copio los datos de la base de datos vieja que esta en el directorio =
creado a=20
la base de datos nueva que est=E1 en el directorio de uso de la=20
aplicaci=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂ Espero que este =
codigo te=20
pueda servir para tus propositos, cualquier aclaraci=F3n quedo =
aÂtu=20
disposici=F3n.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Jos=E9 Ram=F3n Castro.</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"PILO" <<A=20
href=3D"mailto:srmpilo@hotmail.com">srmpilo@hotmail.com</A>> =
escribi=F3 en=20
el mensaje de noticias <A=20
=
href=3D"news:48f21772$1@ozsrv2.ozlan.local">news:48f21772$1@ozsrv2.ozlan.=
local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ PRIVATE contadormio =
:=3D 0,=20
CONTADOR :=3D 0, CONTAANIMAL :=3D 0, CONTCAMBIO :=3D =
..F.<BR>ÂÂ PRIVATE=20
CCODIGO, creararchivo :=3D .f.<BR>ÂÂ PRIVATE ARCHIVOA , =
ARCHIVO2 ,=20
ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES<BR><FONT =
color=3D#ff0000>localizo=20
donde estoy trabajando</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ if curdrive() =3D =
"" // si esta=20
en puesto de red<BR>ÂÂÂÂÂ RCAMINO :=3D =
"" +=20
CURDIR() + ""<BR>ÂÂÂÂÂ SET PATH TO=20
&RCAMINO.<BR>ÂÂ =
else<BR>ÂÂÂÂÂ=20
RUNIDAD :=3D curDrive()+ ":"<BR>ÂÂÂÂÂ =
RCAMINO :=3D=20
RUNIDAD + "" + CURDIR() + ""<BR>ÂÂÂÂÂ =
SET DEFA=20
TO &RCAMINO.<BR>ÂÂÂÂÂ SET PATH TO=20
&RCAMINO.<BR>ÂÂ end if</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ NOMBRES :=3D "NOMBRE =
DE LA=20
BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"<BR><FONT=20
color=3D#ff0000>Compruebo si exite el archivo, sino exite lo=20
copio</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂ IF=20
!FILE(ARCHIVO)<BR>ÂÂÂÂÂ ORIGENÂ =
:=3DÂ=20
RCAMINO + =
"BASEDATO"+NOMBRES+".cdx"<BR>ÂÂÂÂÂ=20
DESTINO :=3DÂ RCAMINO +=20
NOMBRES+".cdx"<BR>ÂÂÂÂÂ COPY FILE =
&ORIGEN. TO=20
&DESTINO.<BR>ÂÂÂÂÂ ORIGENÂ =
:=3DÂ=20
RCAMINO + =
"BASEDATO"+NOMBRES+".DBF"<BR>ÂÂÂÂÂ=20
DESTINO :=3DÂ RCAMINO +=20
NOMBRES+".DBF"<BR>ÂÂÂÂÂ COPY FILE =
&ORIGEN. TO=20
&DESTINO.<BR>ÂÂÂÂÂ MsgSave( "Ha =
copiado la=20
base de datos nueva "+ NOMBRES + " " +Time())<BR>ÂÂ=20
else</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>Hasta lo =
anterior=20
bien,Âpero quiero hacer lo de abajo,Âper utilizando =
dataset=20
enÂvez de</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>utilizar el =
use, y sobre=20
todo que las bases de datos estaran con passwordÂen un=20
futuro</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>alguien me =
puede ayudar=20
un poco. gracias</FONT><BR>ÂÂÂÂÂ archivo2 =
:=3D=20
RCAMINO + "EXPLTMP" //<FONT color=3D#ff0000>creo una base =
deÂdatos=20
temporal para copiar la que tengo=20
ahora</FONT><BR>ÂÂÂÂÂ ARCHIVO3 :=3D =
RCAMINO +=20
"EXPLTMP.DBF"<BR>ÂÂÂÂÂ ARCHIVO5:=3D=20
ARCHIVO3<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVO3)<BR> ÂÂÂÂÂÂ ÂÂ =
ERASE=20
(ARCHIVO5)<BR>ÂÂÂÂÂ END=20
IF<BR>ÂÂÂÂÂ COPY FILE &ARCHIVO. TO=20
&ARCHIVO3. <FONT color=3D#ff0000>//copioÂla base de =
datosÂen=20
el archivo temporal</FONT><BR>ÂÂÂÂÂ ERASE =
(ARCHIVO)<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVOA)<BR> ÂÂÂÂÂÂ ÂÂ =
COPY=20
FILE &ARCHIVOA. TO &ARCHIVO3A.Â<FONT=20
=
color=3D#ff0000>Â</FONT><BR> ÂÂÂÂÂÂ &nbs=
p;Â=20
ERASE (ARCHIVOA)<BR>ÂÂÂÂÂ END=20
IF<BR>ÂÂÂÂÂ ORIGENÂ :=3DÂ =
RCAMINO +=20
"BASEDATO"+NOMBRES+".cdx" <FONT =
color=3D#ff0000>//baseÂmaestra para la=20
actualizacion</FONT><BR>ÂÂÂÂÂ DESTINO =
:=3DÂ=20
RCAMINO + NOMBRES+".cdx"<BR>ÂÂÂÂÂ COPY =
FILE=20
&ORIGEN. TO &DESTINO.<BR>ÂÂÂÂÂ=20
ORIGENÂ :=3DÂ RCAMINO +=20
"BASEDATO"+NOMBRES+".DBF"<BR>ÂÂÂÂÂ =
DESTINO=20
:=3DÂ RCAMINO + =
NOMBRES+".DBF"<BR>ÂÂÂÂÂ COPY=20
FILE &ORIGEN. TO &DESTINO. <FONT color=3D#ff0000>//=20
copioÂla original para el=20
trabajo</FONT><BR>ÂÂÂÂÂ select=20
10<BR>ÂÂÂÂÂ USE &NOMBRES.=20
EXCLUSIVE<BR>ÂÂÂÂÂ APPEND FROM=20
&ARCHIVO2. <FONT color=3D#ff0000>// actualizo los datos =
de la=20
temporal a la nueva,</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>en esta =
parte es lo que=20
quiero hacer y me gustaria saber una ayuda de como=20
hacerlo</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT color=3D#ff0000>con los =
dataset.=20
</FONT><BR>ÂÂÂÂÂ=20
reindex<BR>ÂÂÂÂÂ CLOSE=20
10<BR>ÂÂÂÂÂ IF=20
FILE(ARCHIVO3)<BR> ÂÂÂÂÂÂ ÂÂ =
ERASE=20
(ARCHIVO5)<BR>ÂÂÂÂÂ END =
IF<BR>ÂÂ END=20
IF<BR><FONT color=3D#ff0000>Gracias de antemano al que me=20
=
ayude.</FONT></DIV></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></FONT></BODY><=
/HTML>
------=_NextPart_001_012B_01C92F05.1A0EA880--
------=_NextPart_000_012A_01C92F05.1A0EA880
Content-Type: application/x-zip-compressed;
name="Bases.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Bases.zip"
UEsDBBQAAAAIAMuLwjjcKVrkswYAAAAYAAAKAAAAQ0FNUE9TLmNkeO1YZ5QU 5Ras+kBEHHLOOTU5
s8SdnRm2FoeZYWaXK6gk9TMjqGNGQdusGDDnnBHMOSfMijmCOWcxI29mWYHz frxz3p8XgDqdzu3u
0+d01a263aiNaswvrPWwitiCzQJEkeotdG/uqFXQwNoarOTatUDDho1q166F OqXYgk0ZseikTDqH
BhsqEczcYgibCZqA1duqTCaR7ZVKTyrLJmbEyyb0xhZsTnCYUO3/aAasxgb/ 74tMP1h/2ADYQNgg
2GDYENhQ2DCUDodGQCOhEmgUNBoaA42FxkHjoVIoCpVBMSgOJaAJUDkkqAKa CG0HJaFJUAr6i2Vr
KTjRyTnVcqrttJVTHaetneo6pTErAz8ZPgufg6+Er4KfAm+YvT38VPhp8DvA 7wi/ExZORzgD4UyE
sxDORrgzwl0Q7orQVy+7I9wD4Z4I90K4N8J9EM5BuC/CuQjnIdwP4f4ID0CY R3ggwoMQHozwEMw7
FPnDUHY4NB86AjoSWgAthI6CjoZC6BjoWOg46HjoBOhE6CToZOgUaBF0KnQa dDp0BrQYOhM6Czob
Ogc6FzoPOh+6ALoQugi6GLoEuhS6DLocugK6EroKuhq6BroWug66HroB2Rth S2A3wZYiswyGeEWu
MpqKVaUqs1MLu2wumk6ms8mqskI5l0jl0rlsNpGN5mLRskSscBBNVSST0ZzD YhS5R6OiFjbwfzMy
t2DmrfC3wd8Ofwf8nfB3wd8Nfw/8vfD3wd8P/wD8g/APwT8M/wgmPwp7DPY4 7AnYk7DlsKdgT8Oe
gT0Lew72POwF2IuwbZy9hPIV0MvQK9Cr0GvQ69Ab0JvQW9Db0DvQu9B70Epo FfQ+9AH0IfQR9DH0
CfQp9Bn0OfQF9CX0FfQ19A30LfQdMt/DfoD9CPsJthr2M+wX2K+w32C/w/6A /QlbA/sLtrbw/mik
OVotWm3aVrQ6tK1pdWnbsFM9BtsyiDCoz6ABg4YMGjFozKAJg6YMmjFozqAF g5YMWjFozaANg7YM
2jFoz6ADg44MOjHozKALg64MujHozqAHg54MejHozSBg0IdBXwb9GPRnMICl A6lB1GBqCDWUGkYN
p0ZQI6kSahQ1mhpDjaXGUeOpUipKlRU6CcmiEuLpQRWpeMWUinhVNDkhES8w HkulYonCqUSsqIoa
vRB11s9/xXqnGhQU4YtfhDWX/V1bVhDL+gesq7GsODkkk4nyaDyaq6ktKgoq ky5LRgu31tRWAC0w
LZ0qXLS+tqaYQVvw34NDskhfkRr8uFH/x1gapxLUBKqcElVBTaS2o5LUJCrF 8jSVoSZTWSpHVVJV
1BTKqO2pqdQ0agdqR2onajo1g5pJzaJmUztTu1C7Up7ajdqd2oPak9qL2pva h5pD7UvNpeZR+1H7
UwdQeepA6iDqYJYfQh1KHUYdTs2njqCOpBZQCxk9ijqaCqljqGOp46jjqROo E6mTqJOpU6hF1Kks
PY11T2fkDEYWM3ImI2cxcjYj5zByLiPnMXI+MxfQLqRdRLuYdglnXkp/Gf3l LLuCupK6irqauoa6
lrqOup66gbqRWkLdRC2lllE3U7dQt1K3UbdTd1B3UndRd1P3UPdS91H3Uw9Q D1IPUQ9Tj1CPUo9R
j1NPcNiTLFnOkqdY8jRLnmHJsyx5jiXPs+QFRl+kXuKsFfTVrZYsdGo6FatM TMok05MSqVgmWpFL
5FK5qkSyMlpZaP6aLh0y+O8edphSzX2x/5dvxP/LnPkK/av0r9G/Tv8G/Zv0 b9G/Tf8O/bv079Gv
pF9F/z79B/Qf0n9E/zH9J/Sf0n9G/znnfsH8l8x/xfzXzH/D/LfMf8f898z/ wDyRcbBasNqwrWB1
YFvD6hZyAVYPti0sAqsPawBrCGsEawxrAmsKawZrDmsBawlrBWsNawNrC2sH aw/rAOsI6wTrDOsC
6wrrBusO6wHrCesF6w0LYH0KucDMT7TVtJ9pv9B+pf1G+532B+f+yfwa5rGJ oNpxK2PVI8A6IeSy
iWR64jp3dphetPlqD1iyEf+7YcEmOS3Vc6XbOkWc6js1cGro1MipsVMTp6ZO zZyaO7VwaunUyqm1
Uxuntk7tnNo7LcXk4qT1/4R16R2PVsYTuYryfxoOi3nvMKcY1dUx7Dfi/9/1 xg6utKNTJ6fOTl2c
ujp1c+ru1MOpp1Mvp95OgVMfp75O/Zz6Ow1wGug0yGmw0xBXPtRpmNNwpxFO I51KnEY5jXYa4zTW
aZzTeKdSp6hTmVPMKe6UcJrgVO70v+zM+I/gX/n/4HQ2XvzbM2jjIKhJgn8A UEsDBBQAAAAIAMuL
wjguNlY4IgsAAD4+AAAKAAAAQ0FNUE9TLkRiZn2b25KjuhWGe8+uSqVSyRPk hkcwYHfPXMogu5lg
cAHuzOwbnjVvFh1Av7V+yX2F/XlJS9I6aAn1n3//27frt7e3/739+03+/fHn 29sw3s6TXtvz5a2x
3/0z+oXna6Nu99Hzfwi+dPfxmf8heD8O140P9vM3wVvdbNhylv9XMT90v6i5 MH/bsxqGsSm+HyI0
PG56GlfzoSmOMTK/dyCBLrr5VKs2T61tkNGcQv3qP5kGq0OMPgNiDdeLbguv RkXKr03/OFtUS6m/
xkF5qZPQcL0/9Gz6Yg0/A4IakFKTapNSO2IptajJrJWeSkY3NVhSvZCqslL1 C6k6K3V8IXXMSp1e
SJ2yUu8vpN6zUh8s1XZqXm9qaj6HoiK0GU4CzebbplPFUHyw2dxVP5oupW0Y kcU4ZqeHQVrUl+6G
RVtGUq2eu+ugmm60hs1oNT0WaanV9uj6YtT0as5I9XqZyLAnfe3G0Bej0Bej 0BejV33dH6ZBGRzs
l6N7dEgNXd9vqBs6syK998odYVH856asGDXj0CSk+q5ZzcSLBjluBMRxIyCO GzGa9a+x2BosY9SM
/TgVQapRZ2vLyjfYqGkyH6xhx8gnESdVH2Jk88Ok+/GnCZWiwaZpH6PvqxRS Rp8vnUZm5bUbF6tx
nx76vKH3GPlJ2lJAjMzk6n3IFdC2KNp5Hjf4OU7GY72GHzGyK/yY5tE3yFJ6 l2I07Yg1tE450PTe
xlb1XavaojkeWA1jiKMY8uZ67Ta9dSXncPzq7JgZXZztOvmUAXhDjDQkwxYa rnq+K7uYfVFKdBmH
diyS6OpYEv0cv/Sg5w3pYTb+uxu21bFr7VLGyOq9qrO3jRjdVWefBAqbih1V MRo2/7foIyB2vYDY
9QT67O5G9WDzNrNvaDR5aHBPJh5uKKjhPgnEasRID+5Ta6NoJRr0ycY8AQXl b3cTXrel3N2NYxSQ
MJvjIUbGdB/LaH6gmpNAem4e7biaLlmqu+xPpUBtN+nG+hD3dR/PvfKofkLS HWRfY7veRzMFvVmv
GC2615fRu96PNFpveXQJCH2ZyDvayMHKq2s3qPW/+uwRT5T5iqUmk32N5Sya UDt0q8eYQ2h4cawl
DW9mnnrHMsobxn2ZNexmO/FFUg2Hi6QanqXVcCytBpkNZ9iAOI1KdJ0e93GT 2v0Xvmw8dpMCQq70
tcOeLBRtD4Ag5WgdS5lnEwPWX/ZHZVkl0O8UuqhmMSr+x/ryex2hxzy6jryb B0S+DERzKNGsbW+E
MIcC0czHyO6hTbLUfdmUiTl0+w1GbXftjLeWLkZlGqzyDVa5BivRIG3agfZQ aWK7onEhVwqEatT8
YEu+LFW9kqpIqlHL1RKfAhjZL2K0eSUCrEDW6bq+G70vA3GABUKAjREFWCAK sGm03iJEURSIoqiY
XrV0y6MNQ2ZkWtwmitHVJt80uu3+xWi2hU/ssPqXsl7ufLn+HiF7xmLFvIaE vIq7hoyuu4aMbruG
jOa0hr+TGo7nWU9fbg1OQkO32TALGezQFF3T730fNTdd5/cbMZq729kE1ZSU rfLUftoTkNzOlafD
7qRcmgHxaQ8Qu7m2sXFObHt2RCngeAiIM1FAnIkE2ksOuz8MiE6xgHhcO+JN 4ElI9fpqgPlE6K6n
ttuRbNAf8wm0x0PH0g0GxA2a0r3INOhYukGgfZgFlbdAVAYGRKt8DCjamW8G AITTg1iKy4qA5MFC
8REQ7+cDorICUs8FgtAwmI17imdjL1QLQs/HR1uoBIKbeyQ1NA469g5hyIM4 7y1LIDrvBaLzXiB2
ByCOAEDIywKRwwKJsv34A4iCA5Coiap3II4ALKXuuu+jvkSxf3yaDZF8q4No 0Cmueisl0GwsanV2
OjxP736M2QxlajZuerZIrjKdYwPROTZQdPg5R3NIR9xAdMQtpW5qmbo2JbUh ltqf18Um+jRq8miK
0Ra+3EHWuuRRk0eTRbvtcU4B2s3GUrfKAVEBDkQFOBAV4EBUgANxAQ4UmWiE uAAPiAvwNFpveXR5
RlyAB0QFeHqizFeEUIA/Iy7AgbgAB+ICnJU3jPtCAU4IBXhSDc/SajgWIy7A u6Htvrr2oXp6rwdE
cR4IcZ4QxXkg2vYA0dE9EGUHIGQHQuR6QJQCgEScj5FZ/a5BZAPyedlTmkME WJYKSEi5YL71Nkjl
EWC5QY+4wRBg/0pJzTtrUuOaV2PXjFSrezXY8txszITy1veMe42FQGLTHqOl 0zfzPvvLSBbf6wh9
mTOAxp20CxS2Pa2pVuIGRXZIo0aiPZibDJBFXoosytKikGjbi171MGWQ3WNL JN5/CTWs2DbkMkYm
iDZmP2e2uL1EONN2qO/cprDcsrl3S7vKMbJv9LpLUAOI3ByI3BxIuDkQb6SB +HweCMGBEIIDIREB
gPi4D4izORDFDSDyFCDvKX7IAlEEAKJABESBCIj8C4i8EohcD0i4nlwvfens yKzU6QmRYQMJh02j
hhAcNo9YCg5LCA5LCA4boSrvRJW46JJGs0R5J6roogtQ3kSrvM1XeeutoppI qMFXIIAo6wFR1gMK
qS0p5ZGUoqsdhLapihDdxACimxhAdLUDKO9EFd3fSCHbbNQg3d8AovsbQHx/ gxH3xfc3GHFfdH8D
iO4sAdGdpYxUlZWqX0jVWanjC6ljVur0QuqUlXp/IfWelfqIpfKhss6n0Tof Uup8SKlloj8B5W2+
zkeAOu8OdT7R15zoceBp/kwpo/2L+KE8ANH5IRDdIgCi4z4gupYARBcMYrRn ZTe9QHQFAoguGADR
RHGDE4/raQMz9T+bSsyhe5lmOuM5RDaPx0WvCYAW8z0tChAtChAtChAtChAt ChAtChAtChDNPBDN
PJCY+WFzqfhcdIgR6mWByGGB2GGBOJvbKTVlGl+QC4jfgAPhwCRcJHNubTY7 fBQMxEfBQBiyRLxp
B8KmXSAaF/flbSDqi47ugci/gCgQSamp2y/I1dzXNM7zOBmLYuT2sKbBJyna zwPxfh4IW6ykVEAp
KTVl+gqIpXB6ECN5egDEJQyQOFgA2sul1bRoy4r3GOFgIUKUboC48AmIqhsg Ud2UT+5AeRmIygog
KiuAqKwAimMvqzGNxqDUtFX0QNERQUCLmQVyIiCREI9PiLIeEDkREDkREDkR EDkREDsREK+XKbm3
K5PuOSQpIHl7tjpsh+H7O1+3zn5HFBCH5YDkmXkJKX4XEBAHcyAqzWLU+MtH 2xUjRr8J7VeM7r7p
ZzXoTgUQ3alIo1vcIN+pCIjvVATEFyfS6BqpQRcnMmhOq/Gb1OCQElB09ZdX uX34945ieukmRozc
v/I8DPYz729tF/xyHIh2lUC80wPia+H+Mdjh5piNlPq8+xrbvq+UaNVfqn+Y sTDakwMQxrVdJ8e4
gPwl9E2NxZ9d8pCBeNMOhCpAIq4CgCjoAcmgxxpO3Fdiq28de07ddQTiKytA HFI2Q5kp6AWESooR
GRsQhcoYXZ7jIVD0epGkECoF4ntfQPBlgcRbzqIGEr78dAWCF8X8Ui0ulcT7 3gjRDhaIanMgCilA
8sj04xiQ3G+8Q4pqByBKUkCUboDEQasYFw5as0hK0Y4IKNoRkRR2RDHiPVtA 5JWQov08EB34A9El
eaeV1akk2wAi2wAi2wAi2wCStvHjCMS2AYT/hbHJ96kvMhsgMhsgMhsgMhug yGyySEqR2QCx2TCy
n2IkzKY81AGx2QREZgNEZgOUN5sqbzZV3myqvNnwsTNQ3myqvNlUebPhtxVA ebPh9w5AebOpIrPJ
IimVN5sqbzZV3myqvNlUebOp8mZT5c2mYrP5P1BLAwQUAAAACABXdcI4oCDy LEEBAAAADAAADAAA
AERCTk9NQlJFLmNkeO2UW07CQBSG/0pFRRTE+x3e9BGM7z1zoamZzgwzrYm+ CK4Al+AO3YCJO8EC
RvZA+yUzOTm3nOSc/AixoF68Bn4CVJSCAPNVV+suO7XiBmZ/fAezGdBqtcOw hnoXFeuLYNqkzEk0
Vr4mxpUglIQOgsWfWyvd3fIW3gQb3qOiTNTQ+9f/L6z0P4DdQFQDCzHZxHsd n1v42AbbgbtF1MBo
F+MmRnuI92Fb6LYRHSDuID4EHWH7GLaLqIf4BONTsDM8noMuMLnE9Ar2GvYG U6wZr0aTz7jU3nif
S5WRd1KZJ8MUcUWaG80zmVplUqm5pcRLPzBOcEptXy8rMukzJWMS5B8GKvEZ CdNPtEieE5GTGkoh
HXGtuSxCkquc+SKp6C0oE9Inca4z96J57jwZZdw8oZhjMZNzRa3nxCQvDNKJ UuR/AVBLAwQUAAAA
CABXdcI4UlxZasIBAABXBwAADAAAAERCTk9NQlJFLkRiZp2UTU7lMAzHM4M0 msXMjgOUCyAB4gBu
YiAotaskRYINd+HkOP1K3qN5r5BN/0r8S23H9sXfP7+vlFIf6l4dr18XShF3 rcd30z4onfb+Hdn0
nnsONrKazi+Pzo31qCN7y9vn/1UDZJ2D0MhadQ+Ou3mvhYCiDpeGFjV6ONDO hgiGQx3yXuzCgUZq
0DUeHT+3SG+WHo8gpDBemfXBqkDiSci6COlETG5oS50NTkHs2Jcawx6I9OAD lJqi2J2GBor+NUkJ
xopFmbtKIkx6EtKlthDOuIdF9Cl5CbRasLRfhWhMdKExF8QZiApofihfd+8B jVSOLrVlOpM9S8a+
WDOAa9ZSyHvb0OL/TaHPt8ZseFtCYUAXd0B3JfQkX+lc8c7gNuTwEYxcu+od /bQYRkn2CkXs+uuR
2S4jmgKY9NChZ/EpR/U1plykpU6QjJd5zGxA89tgqtj1nebKmCKtQymGL9D1 GNo25IBS8y1anFua
kUNtsPTcOtCzln4UyzURtcedHmNpSJgZJ5/xAMPWn9bkZr1jsMQ8IcfA2Y/V sw7OzT+9McndWe+a
exKHwWDHq0AP3eDAL7mvQuyNhq6/+Ql0+x3oE1BLAwQUAAAACADRjsM4lx70 HoQCAAAAFAAACwAA
AElORElDRVMuY2R47ZfpVtRAEIW/DChuV3DfFXcQVMiwumeSAIOZZExmUHAB xX1/T1/AXx4fwHfA
zkyYgP/1HJm5P9LdN9WdrlO3qzp0A/vhtGl28dOig7aARRrqTrjbHV1GA2sZ flhra9Db29fd3cX2
ETrYwiiHXtn1E/a2GNNd6SSENsF5rMazXq368UAYVUrLXmlmcCipxQNR7Pnh shHIsD08MkgHWxgF
LjXyP33wnTz/74LdaA8S2ot64SWFV+g16sM6gPah/egg1iF0GB1BR9ExrOPo BIWT6BQ6jc6gfnQW
nUPn0QUKF9EldBm9gbfoHfqKBrCu0nMNriNTeEaRjYpoDI2jCTQJU2ga3UA3 6bmFbmPdQXfRPeSg
EnKRh3w0A7NoLvWv6pQTP+lvYtQOk7of1JxsOD01OTE+VrQDf9bxnCSzsZtt ypeTmuNFo02iaZvm
zYWyV3eChvGM7/mx42YLhs0mnRY2uHzQWtRzap6flGdbRD2sxYt/7Ch063Hi ZBuKgijuX3ehsd96
yXTzJf0wiVo+Fu049uN1b1yn5LtmmE92wnIQmNdNpsAFTOwbGvi1If5lmKdw HwWowrYQRVhV9AAr
RgmqoTpaQA/RI7QIS+gxeoKsVFbqQt1oG9qOetAOtBM9hWdoGa2g5/ACrSLa CEV7KQqdZGP0am4e
v1wBTaEmuVnsB9F8a15mFZUCx22pOzBCi0I3G9X8SjVTRBBV/HV+04mwLbpa 9z9vk1TNZgfSf8LM
PmfnUsFs8qJo2FXYQwf/G0z+T4PcCN63DefflP0raAgN/4XM/B4+oI/oEz2f 0Zc0V28lbD4yRdte
75ibletUqqP/tBqF5prf+ogpFq4pH/l57qCt8RtQSwMEFAAAAAgA0Y7DOBKf H32DBQAAMSwAAAsA
AABJTkRJQ0VTLkRiZrWaTZKrNhCAnUxVKovkDixnCi+CwOOZJRbCTykMLoRf JdmwyAVy5dzktSQE
koCxQKCV2gI+1C2pf/DLr7+8/Hc4HP4//Huw208vh0NZ3S5tdslBxPy336xr qjojZUvLDC7l8s/G
qLyfD8/dT/661/p4bo0/Soor2S3EO1njGWGYwO1z478H7EGKJmWBaJGQWlw8 LkGQNRV7zQn+lrbs
LSxaeWVYPm7yAreW5yYCSUROsmAeIYadm42IJeKfqkznEXLYtdmIBLRA6koK aVlWLQvFT9AJ1jUb
cdKVrJQeerFsxDuomdQpplUJCK50v+dPIM66mqXSfRk24oNbVwoz5na38wzi U0r8xYNA63s0QKQl
LYp+60l1DOYWo4vfXG+NhUCsAlMzbUVVJQ69WDYiHq0ov+dPIJKpfeFHsRGn 8aL1AwgETi8Eg3Kk
uZUkETitaxDCgsJxjekqBqwouJlxA0vEPS2qWzcnsVzDoPSZA8zCQsS6LXi/ TV39gussEvyN3tUg
77d0gWtwmgXCFSiqe3HZ55DQQ2mAUKoZ7+6FHtQRgXgsURMp8L4/w0bE+r5Y 6EHnzG0hkmv9uFc9
gktex+wE4qSfUQtDjVmEWDd1b24hdStV9L1XbTMgxubu+p5NIEr8qFk6vWj5 aODVNMTcLDgl8Gi5
hYj1MxX6bZl6TkKfxRcuyUtjNuLECG6U9ctWStsixtGg3/MnEGecNuRa1cIY 0L+2BV398Glzf0wc
IJ7zsGfxOT4GPQkS8Sib+u/ed9M+MIb+4iB5QlEWAhWkqdU0RN8bYiNiTeJe lGFKA79mIxJGbxc4
F4Ug+xv4i4yyJlXGjHRJ2Xl1aqHMTfgZ0YdqkweIVy6TWwg0XrR+gDFiHPz7 EgSixISpeyIlGWEz
xGjrA+cBUUrEIBm5XrjeBYK5O9WMosGtIhALMXas/hRAQCWKfqfZIy36YlE6 lXc/7ndSvypzvwWu
LdcRQ8bqgAj7jcma+vU7KeDGLM2OH8f4zUQ0GmJIYZwRcPVSRDLsi6cIbqbp 53+JONWEPeAJWfV0
Fs8fPo14F0mQi7lD16zcNvdZXttmdLMaCCAKyrhiIrn1dFu4avsJojERSF9R rmtmGSLW94Xryl+G
SMb+wg+gI5C0xdJ98TxxHsyNBq/H3HY3n6NDeZsjCnJNs+650bh64Jvs2Qi0 S5nFQMSDSxocq9fO
GyES+VApgdmJr5rGiFMNq/PPblD0vRk24t2uqoUrykNfI87bl7xsxEfvL4zy Y798QyI2UXinOM3c
ZmYjPoWiIJgyK5yGysJl+wUQpR50RHwzyx82/FxlIJAu8fNPfbWQjhRmw/uL KIDgGR3pg39aUohc
CyGovl9rFGLXYpEysJyFksyweYjLuCTNHjq6dhuBxI6W7mlAeGX3uYWI5QEy QjBSUyJAdcUY1GHc
m5pFQ273TlGDJJ/re4zYCKS/pMerW4giLbmaRymMGHHdw+6InRZtdSn6AmCk P3Z5djq5oiwEgsCl
lb90AeeKNPgLhEph1C/qJPKjaIghGhxmwSU/gIbYtSxvIN7lEb3lVxgbcd7l E4mB+Oi23uCS2jtU
xKrj6fjHsoBc3xf6wRdEu0SDBgLtEjYbiHj7aNBWVDK4pEFRS8Oa0Swa/fNk tH3A2fSIPW3RIfb8
Utwh9vxSPCSQw77YcncrxL7f9QxEvMtJq7K7HQ8QA4F2SScNRKzike2CHEBk aQN/y6NXqSglqcMc
VySn+Hg+JivPcmgmAnVSNBeZr8IaiLiTkPnnpdCvKgx/nsTp7d4V7pRkKerT +Y2fIpCUoh4h3Co7
voNfDVciGxMRd4gY+nMZq0528eg9oquqKWkPRSFdUWgXRSFdUUhISzUyhzAX bdJJ3BYb1cyD5gdQ
SwMEFAAAAAgA65u+OIVOliUyAAAARAAAAAoAAABJTklDSU8uc3BpZcpBCgAQ EEDRz6RsXMDCXaTU
lFjMAdz/FrLlL39PYigOqHi+BHRq07VNjXGXe0ii5wNQSwECFAAUAAAACADL i8I43Cla5LMGAAAA
GAAACgAAAAAAAAAAACAAAAAAAAAAQ0FNUE9TLmNkeFBLAQIUABQAAAAIAMuL wjguNlY4IgsAAD4+
AAAKAAAAAAAAAAAAIAAAANsGAABDQU1QT1MuRGJmUEsBAhQAFAAAAAgAV3XC OKAg8ixBAQAAAAwA
AAwAAAAAAAAAAAAgAAAAJRIAAERCTk9NQlJFLmNkeFBLAQIUABQAAAAIAFd1 wjhSXFlqwgEAAFcH
AAAMAAAAAAAAAAAAIAAAAJATAABEQk5PTUJSRS5EYmZQSwECFAAUAAAACADR jsM4lx70HoQCAAAA
FAAACwAAAAAAAAAAACAAAAB8FQAASU5ESUNFUy5jZHhQSwECFAAUAAAACADR jsM4Ep8ffYMFAAAx
LAAACwAAAAAAAAAAACAAAAApGAAASU5ESUNFUy5EYmZQSwECFAAUAAAACADr m744hU6WJTIAAABE
AAAACgAAAAAAAAAAACAAAADVHQAASU5JQ0lPLnNwaVBLBQYAAAAABwAHAI4B AAAvHgAAAAA=
------=_NextPart_000_012A_01C92F05.1A0EA880--

Attached files Bases.zip (8 KB)Â
José Ramón Castro.
PILO
Posts: 583
Joined: Fri Jul 06, 2007 5:18 pm

duplicar base datos

Postby PILO » Sun Oct 19, 2008 8:24 pm

Hola Jose ramon cuando compilo me da este error
Enlazando actualizarbases.exe...
C:BCC55Binilink32 -Gn -Tpe -x -aa @make.tmp
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_DIRMAKE' referenced from C:XAILERSAMPLESDEOTROSACTULAIZARBASESOBJFORMUPDATE.OBJ
0 Warnings, 1 Errors
me falta algo
"José Ramón Castro" <jrcpoli@terra.es> escribió en el mensaje news:48f62ce6@ozsrv2.ozlan.local...
Saludos:
Te adjunto al correo un prg que contiene codigo que puede ser de tu interes, pero esta escrito para trabajar con tres bases de datos que contiene:
DBNOMBRE := Contiene los nombres de las bases de datos a utilizar en la aplicación.
CAMPOS := Contiene todos los campos y sus dimensiones y tipo de todas las bases de datos contenida en DBNOMBRE
INDICES := Contiene todos los indices de las bases de datos contenidas en DBNOMBRE
Con estas tres bases de datos consigo, que al entrar en la aplicación pueda revisar que todas las bases de datos existen y sus indices y reconstruir aquello que necesito, tambien lo empleo en las copias de las bases de datos en actualizaciones de las mismas, para ello creo un directorio al que copio las bases de datos en uso y luego creo las nuevas, en el directorio que corresponda y por ultimo copio los datos de la base de datos vieja que esta en el directorio creado a la base de datos nueva que está en el directorio de uso de la aplicación.
Espero que este codigo te pueda servir para tus propositos, cualquier aclaración quedo a tu disposición.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio := 0, CONTADOR := 0, CONTAANIMAL := 0, CONTCAMBIO := .F.
PRIVATE CCODIGO, creararchivo := .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES
localizo donde estoy trabajando
if curdrive() = "" // si esta en puesto de red
RCAMINO := "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD := curDrive()+ ":"
RCAMINO := RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES := "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " +Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 := RCAMINO + "EXPLTMP" //creo una base de datos temporal para copiar la que tengo ahora
ARCHIVO3 := RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:= ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A.
ERASE (ARCHIVOA)
END IF
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base maestra para la actualizacion
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de como hacerlo
con los dataset.
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
--
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

duplicar base datos

Postby jrcpoli » Mon Oct 20, 2008 2:34 pm

Saludos:
Incluye la libreria ct.lib de xHabour correspondiente a la versión que utilice tu versión de Xailer.
Sino la encuentras dime la versión de Xailer y procuraré mandartela a tu privado.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:48fb7b63@ozsrv2.ozlan.local...
Hola Jose ramon cuando compilo me da este error
Enlazando actualizarbases.exe...
C:BCC55Binilink32 -Gn -Tpe -x -aa @make.tmp
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_DIRMAKE' referenced from C:XAILERSAMPLESDEOTROSACTULAIZARBASESOBJFORMUPDATE.OBJ
0 Warnings, 1 Errors
me falta algo
"José Ramón Castro" <jrcpoli@terra.es> escribió en el mensaje news:48f62ce6@ozsrv2.ozlan.local...
Saludos:
Te adjunto al correo un prg que contiene codigo que puede ser de tu interes, pero esta escrito para trabajar con tres bases de datos que contiene:
DBNOMBRE := Contiene los nombres de las bases de datos a utilizar en la aplicación.
CAMPOS := Contiene todos los campos y sus dimensiones y tipo de todas las bases de datos contenida en DBNOMBRE
INDICES := Contiene todos los indices de las bases de datos contenidas en DBNOMBRE
Con estas tres bases de datos consigo, que al entrar en la aplicación pueda revisar que todas las bases de datos existen y sus indices y reconstruir aquello que necesito, tambien lo empleo en las copias de las bases de datos en actualizaciones de las mismas, para ello creo un directorio al que copio las bases de datos en uso y luego creo las nuevas, en el directorio que corresponda y por ultimo copio los datos de la base de datos vieja que esta en el directorio creado a la base de datos nueva que está en el directorio de uso de la aplicación.
Espero que este codigo te pueda servir para tus propositos, cualquier aclaración quedo a tu disposición.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:48f21772$1@ozsrv2.ozlan.local...
PRIVATE contadormio := 0, CONTADOR := 0, CONTAANIMAL := 0, CONTCAMBIO := .F.
PRIVATE CCODIGO, creararchivo := .f.
PRIVATE ARCHIVOA , ARCHIVO2 , ARCHIVO3 , ARCHIVO3A , ARCHIVO5, NOMBRES
localizo donde estoy trabajando
if curdrive() = "" // si esta en puesto de red
RCAMINO := "" + CURDIR() + ""
SET PATH TO &RCAMINO.
else
RUNIDAD := curDrive()+ ":"
RCAMINO := RUNIDAD + "" + CURDIR() + ""
SET DEFA TO &RCAMINO.
SET PATH TO &RCAMINO.
end if
NOMBRES := "NOMBRE DE LA BASEDEDATOS QUE QUIERO CREAR O ACTUALIZAR"
Compruebo si exite el archivo, sino exite lo copio
IF !FILE(ARCHIVO)
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx"
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO.
MsgSave( "Ha copiado la base de datos nueva "+ NOMBRES + " " +Time())
else
Hasta lo anterior bien, pero quiero hacer lo de abajo, per utilizando dataset en vez de
utilizar el use, y sobre todo que las bases de datos estaran con password en un futuro
alguien me puede ayudar un poco. gracias
archivo2 := RCAMINO + "EXPLTMP" //creo una base de datos temporal para copiar la que tengo ahora
ARCHIVO3 := RCAMINO + "EXPLTMP.DBF"
ARCHIVO5:= ARCHIVO3
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
COPY FILE &ARCHIVO. TO &ARCHIVO3. //copio la base de datos en el archivo temporal
ERASE (ARCHIVO)
IF FILE(ARCHIVOA)
COPY FILE &ARCHIVOA. TO &ARCHIVO3A.
ERASE (ARCHIVOA)
END IF
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".cdx" //base maestra para la actualizacion
DESTINO := RCAMINO + NOMBRES+".cdx"
COPY FILE &ORIGEN. TO &DESTINO.
ORIGEN := RCAMINO + "BASEDATO"+NOMBRES+".DBF"
DESTINO := RCAMINO + NOMBRES+".DBF"
COPY FILE &ORIGEN. TO &DESTINO. // copio la original para el trabajo
select 10
USE &NOMBRES. EXCLUSIVE
APPEND FROM &ARCHIVO2. // actualizo los datos de la temporal a la nueva,
en esta parte es lo que quiero hacer y me gustaria saber una ayuda de como hacerlo
con los dataset.
reindex
CLOSE 10
IF FILE(ARCHIVO3)
ERASE (ARCHIVO5)
END IF
END IF
Gracias de antemano al que me ayude.
--
José Ramón Castro.
PILO
Posts: 583
Joined: Fri Jul 06, 2007 5:18 pm

duplicar base datos

Postby PILO » Wed Nov 12, 2008 12:03 pm

Hola Jose, he utilizado tu metodo y funciona bien, pero tengo un probleme y espero que me puedas ayudar
Utilizo una dbf con password, y la quiero copiar, como hago para que se copie el dato original en la segunda
dbf, sin que se pierda el valor y el password
Yo lo tengo asi y me lodeja encriptado tanto si pongo el password como sino lo pongo,
quiero que la base de datos que copio mantega los datos con la encryptacion
// PARA LAS NUEVAS ACTUALIZACION
LOCAL cDirBases := ""
LOCAL cUnidadOld := ""
LOCAL lExiste := .F.
LOCAL nLazo := 0
LOCAL cFuente := ""
LOCAL cDestino := ""
LOCAL bases_dbf := ""
LOCAL aDir := {}
LOCAL oDSBases
LOCAL oDSBasesOld
LOCAL oStruct
LOCAL i
cUnidadOld:=RCAMINO+"BASESOLD"
// FIN NUEVA ACTUALIZACION
cFuente :=RCAMINO+NOMBRES+".dbf"
cDestino:=cUnidadOld+NOMBRES+".dbf"
** Existe la base de datos en el directorio de copia
IF FILE( cDestino )
*
** Base de datos en el directorio de copia
WITH OBJECT oDSBasesOld := TDbfDataSet():Create(Self, ::oBaseDatos, cDestino)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Base de datos en el directorio BASES
WITH OBJECT oDSBases := TDbfDataSet():Create(Self, ::oBaseDatos, cFuente)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Inicializamos el progreso barra 1
::oProgressBar1:nValue := 0
::oProgressBar1:nMax := oDSBasesOld:RecCount()
::oProgressBar1:nMin := 0
*
i := 1
** Recorremos los registros
DO WHILE !oDSBasesOld:EoF()
*
** Copiamos el registro viejo
oStruct := oDSBasesOld:GetRecord()
*
** Ponemos la base de datos nueva en añadir
oDSBases:FastAddNew()
*
** Copiamos el registro nuevo con los datos del viejo
oDSBases:SaveFrom( oStruct )
*
** Grabamos el registro
oDSBases:FastUpdate()
*
** Avanzamos un registro
oDSBasesOld:Skip()
*
** Avanzamos el Progreso barra 1
::oProgressBar1:nValue := i++
*
END DO
*
** Cerramos las dos bases
oDSBasesOld:Close()
oDSBases:Close()
MsgSave( "Ha actualizado base de datos "+ NOMBRES + " " +Time())
*
ENDIF
Sin el password o con el password me da los datos encryptados, pero diferentes
como puedo hacer para que me los copie bien, me puedes ayudar.
gracias.
--
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

duplicar base datos

Postby jrcpoli » Wed Nov 12, 2008 3:12 pm

Saludos:
Lo primero decirte que no he utilizado nunca datos encriptados, por lo tanto la rutina que te pasé no lo contenpla, pero así­ y todo lo que puedes mirar es que DataSource le pasas a la TdbfDataSet en la variable ::oBaseDatos, creo que la clave del password debe de estar definido en él, y esa parte no la veo, además no veo como creas la base de datos en el directorio, si la creas con DBCREATE.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:491ab7ff@ozsrv2.ozlan.local...
Hola Jose, he utilizado tu metodo y funciona bien, pero tengo un probleme y espero que me puedas ayudar
Utilizo una dbf con password, y la quiero copiar, como hago para que se copie el dato original en la segunda
dbf, sin que se pierda el valor y el password
Yo lo tengo asi y me lodeja encriptado tanto si pongo el password como sino lo pongo,
quiero que la base de datos que copio mantega los datos con la encryptacion
// PARA LAS NUEVAS ACTUALIZACION
LOCAL cDirBases := ""
LOCAL cUnidadOld := ""
LOCAL lExiste := .F.
LOCAL nLazo := 0
LOCAL cFuente := ""
LOCAL cDestino := ""
LOCAL bases_dbf := ""
LOCAL aDir := {}
LOCAL oDSBases
LOCAL oDSBasesOld
LOCAL oStruct
LOCAL i
cUnidadOld:=RCAMINO+"BASESOLD"
// FIN NUEVA ACTUALIZACION
cFuente :=RCAMINO+NOMBRES+".dbf"
cDestino:=cUnidadOld+NOMBRES+".dbf"
** Existe la base de datos en el directorio de copia
IF FILE( cDestino )
*
** Base de datos en el directorio de copia
WITH OBJECT oDSBasesOld := TDbfDataSet():Create(Self, ::oBaseDatos, cDestino)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Base de datos en el directorio BASES
WITH OBJECT oDSBases := TDbfDataSet():Create(Self, ::oBaseDatos, cFuente)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Inicializamos el progreso barra 1
::oProgressBar1:nValue := 0
::oProgressBar1:nMax := oDSBasesOld:RecCount()
::oProgressBar1:nMin := 0
*
i := 1
** Recorremos los registros
DO WHILE !oDSBasesOld:EoF()
*
** Copiamos el registro viejo
oStruct := oDSBasesOld:GetRecord()
*
** Ponemos la base de datos nueva en añadir
oDSBases:FastAddNew()
*
** Copiamos el registro nuevo con los datos del viejo
oDSBases:SaveFrom( oStruct )
*
** Grabamos el registro
oDSBases:FastUpdate()
*
** Avanzamos un registro
oDSBasesOld:Skip()
*
** Avanzamos el Progreso barra 1
::oProgressBar1:nValue := i++
*
END DO
*
** Cerramos las dos bases
oDSBasesOld:Close()
oDSBases:Close()
MsgSave( "Ha actualizado base de datos "+ NOMBRES + " " +Time())
*
ENDIF
Sin el password o con el password me da los datos encryptados, pero diferentes
como puedo hacer para que me los copie bien, me puedes ayudar.
gracias.
--
José Ramón Castro.
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

duplicar base datos

Postby jrcpoli » Wed Nov 12, 2008 5:47 pm

Saludos:
Pensando posteriormente otra cosa que puedes hacer es utilizar AddNew y Update en sustitución de FastAddNew y FastUpdate, ya que estas dos últimas no tienen en cuenta algunas caracterisiticas de los DataSet.
** Recorremos los registros
DO WHILE !oDSBasesOld:EoF()
*
** Copiamos el registro viejo
oStruct := oDSBasesOld:GetRecord()
*
** Ponemos la base de datos nueva en añadir
oDSBases:AddNew()
*
** Copiamos el registro nuevo con los datos del viejo
oDSBases:SaveFrom( oStruct )
*
** Grabamos el registro
oDSBases:Update()
*
** Avanzamos un registro
oDSBasesOld:Skip()
*
** Avanzamos el Progreso barra 1
::oProgressBar1:nValue := i++
*
END DO
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias news:491ab7ff@ozsrv2.ozlan.local...
Hola Jose, he utilizado tu metodo y funciona bien, pero tengo un probleme y espero que me puedas ayudar
Utilizo una dbf con password, y la quiero copiar, como hago para que se copie el dato original en la segunda
dbf, sin que se pierda el valor y el password
Yo lo tengo asi y me lodeja encriptado tanto si pongo el password como sino lo pongo,
quiero que la base de datos que copio mantega los datos con la encryptacion
// PARA LAS NUEVAS ACTUALIZACION
LOCAL cDirBases := ""
LOCAL cUnidadOld := ""
LOCAL lExiste := .F.
LOCAL nLazo := 0
LOCAL cFuente := ""
LOCAL cDestino := ""
LOCAL bases_dbf := ""
LOCAL aDir := {}
LOCAL oDSBases
LOCAL oDSBasesOld
LOCAL oStruct
LOCAL i
cUnidadOld:=RCAMINO+"BASESOLD"
// FIN NUEVA ACTUALIZACION
cFuente :=RCAMINO+NOMBRES+".dbf"
cDestino:=cUnidadOld+NOMBRES+".dbf"
** Existe la base de datos en el directorio de copia
IF FILE( cDestino )
*
** Base de datos en el directorio de copia
WITH OBJECT oDSBasesOld := TDbfDataSet():Create(Self, ::oBaseDatos, cDestino)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Base de datos en el directorio BASES
WITH OBJECT oDSBases := TDbfDataSet():Create(Self, ::oBaseDatos, cFuente)
IF (:lOpen == .T.)
:lOpen := .F.
ENDIF
* Si tiene clave utilizo lo del password para abrilo
if oClaves
:cPassword := cENCRIPTA
end if
:lShared := .F.
:lOpen := .T.
*
END
*
** Inicializamos el progreso barra 1
::oProgressBar1:nValue := 0
::oProgressBar1:nMax := oDSBasesOld:RecCount()
::oProgressBar1:nMin := 0
*
i := 1
** Recorremos los registros
DO WHILE !oDSBasesOld:EoF()
*
** Copiamos el registro viejo
oStruct := oDSBasesOld:GetRecord()
*
** Ponemos la base de datos nueva en añadir
oDSBases:FastAddNew()
*
** Copiamos el registro nuevo con los datos del viejo
oDSBases:SaveFrom( oStruct )
*
** Grabamos el registro
oDSBases:FastUpdate()
*
** Avanzamos un registro
oDSBasesOld:Skip()
*
** Avanzamos el Progreso barra 1
::oProgressBar1:nValue := i++
*
END DO
*
** Cerramos las dos bases
oDSBasesOld:Close()
oDSBases:Close()
MsgSave( "Ha actualizado base de datos "+ NOMBRES + " " +Time())
*
ENDIF
Sin el password o con el password me da los datos encryptados, pero diferentes
como puedo hacer para que me los copie bien, me puedes ayudar.
gracias.
--
José Ramón Castro.

Return to “Spanish”