¿VFP 9 como los datos de una tabla a excel?
Hola Alonso buen día, mira te comento rápidamente, se dejo un sistemita en fp9 inconcluso el cual necesito terminar y la verdad no tengo como mucha practica en el fox, tengo conocimientos de programación, pero nunca he realizado sistemas para empresas, los que hice fueron para la escuela o proyectos, no me he podido meter mucho al código pues llevo solo dos semanas trabajando, espero me puedas ayudar y te pido que me tengas un poco de paciencia por favor.
Gracias, que tengas buen día
Gracias, que tengas buen día
1 Respuesta
Respuesta de tigrefox
1
1
tigrefox, Colaborador, Solidario y Amigo, Ingeniero de Sistemas,...
En lo que te pueda colaborar, con mucho gusto. Tengo bastante expeirencia en desarrollo de aplicaciones.
Hola buen día, te agradezco la molestia de responder a la brevedad, mira ahorita tengo una inquietud que no se como lo voy hacer, el sistema que estoy tomando esta hecho en VFP9, y necesito ponerlo en red, es decir mi maquina donde esta dejarla como servidor y otros 2 o 3 equipos máximo se conecten a ella, para capturar y se guarden los cambios en mi maquina, pero no se ni tengo la menor idea de como hacerlo, si puedes ayudarme u orientarme te lo agradecería.
Que tengas buen día gracias.
Que tengas buen día gracias.
Primero que todo, cuando terminemosel soporte, por favor no elvider finalizar ala pregunta.
1. Debes definir si vas a trabajar con base de datos o con tablas libres
2 si es con base de datos la crear y la abres con
OPENDATABASE XXXX SHARED
el shared es el que permite abrir la base de datos para ultiusuarios, y adicionalmente
SET EXCLUSIVE OFF
3. Puedes usar SQL y trabajar el begin transaction juto con l rollback o el comit
4. Si no quieres usar SQL debes usar :
FLOCK() : asegura archivo para eliminar registros o adicionar registros
RLOCK() : asegura registro para modificar el contenido de un registro
UNLOCK : para desasegurar ya sea el registro o el archivo
Código para el rlock
Use archivo
Seek dato
if found()
do while .t
if rlock()
. replace campo1 with datos * mpodificar registros
replace campo2 with otrosdatos
unlock
exit
endif
enddo
else
* no se encontro
endif
Para el Flock
use archivo
do while .t
if flock()
. Append blank o delete *modificar tabla
unlock
exit
endif
enddo
enviame tu email y te envio un proyecto básico para que aranques.
1. Debes definir si vas a trabajar con base de datos o con tablas libres
2 si es con base de datos la crear y la abres con
OPENDATABASE XXXX SHARED
el shared es el que permite abrir la base de datos para ultiusuarios, y adicionalmente
SET EXCLUSIVE OFF
3. Puedes usar SQL y trabajar el begin transaction juto con l rollback o el comit
4. Si no quieres usar SQL debes usar :
FLOCK() : asegura archivo para eliminar registros o adicionar registros
RLOCK() : asegura registro para modificar el contenido de un registro
UNLOCK : para desasegurar ya sea el registro o el archivo
Código para el rlock
Use archivo
Seek dato
if found()
do while .t
if rlock()
. replace campo1 with datos * mpodificar registros
replace campo2 with otrosdatos
unlock
exit
endif
enddo
else
* no se encontro
endif
Para el Flock
use archivo
do while .t
if flock()
. Append blank o delete *modificar tabla
unlock
exit
endif
enddo
enviame tu email y te envio un proyecto básico para que aranques.
Primero que nada una disculpa tigrefox, ahm segundo, no entiendo eso de crear una base en sql, si el sistema ya tiene su base propia y sus tablas con relaciones, esto en el mismo proyecto del VFP, es lo que me causa inquietud, realmente son muy poco los registros que se manejan y se me hace un desperdicio o para mi es mucho que tenga una base en sql, ¿no se si se pueda hacerlo con la base que ya tengo del proyecto? Y también no se como finalizar una pregunta como ponerle puntaje soy nuevo en el foro.
Esta respuesta va en dos partes pro lo larga.
Ok, entiendo su inquietud:
1. Desde visual foxpro podemos trabajar base de datos propia o conectado a otras dbms como oracle, sqlserver, jet, etc.
2. Cuando yo digo que si vas a trabajar con base de datos o con tablas libres, aunque soy consciente que hay un error en esto, tienes toda la razón y te confundí, me refiero que que puedes crear tablas .dbf ligadas a una base de datos de visual foxpro, ejemplo, datos. Dbc y a ella perteneces todas las tablas que creemos dependiendo de esta estructura, MODIFY DATABASE PRUEBA.
Puedes tener las siguientes tablas que no dependen de nada ni de nadie y puedes usarla sin ningún problema, estas son tablas libres.
Tabla1.dbf
Tabla2.dbf
Tabla3.dbf
O puedes tener
Prueba. Dbc
Tabla1.dbf
Tabla2.dbf
Tabla3.dbf
Donde PRUEBA. DBC es la estructura de la base de datos y tabla1, tabla2, tabla3 dependen de prueba. Dbc y para accesar cualquiera de estas tablas debes haber abierto PRUEBA. Dbc open database prueba
3. Ahora bien, tu puedes accesar la información contenida en las bases de datos .dbc o en cada tablas .DBF con instrucción SQL de visual foxpro o con instrucciones xBase también de Visual Foxpro.
4. Si tenemos una base de datos
Open database prueba
insert into prueba.tabla1 (t1campo1, t1campo2) values (1,2)
* Esto inserta un registro en la tabla1 de la base de datos prueba.dbc
delete from prueba.tabla2 where t2campo4=5
* Elimina un registro de la tabla2 de la base de datos prueba siempre y cuando t2campo4 = 5
update prueba!tabla3 set t3campo2=45, t3campo5=28 where t3campo1 =3
* Esto actualiza un registro de la tabla3 de la base de datos prueba siempre y cuando t3campo1 sea = 3
5 si vamos a hacer esto sin usar SQL
use tabla1
append blank
replace tcampo1 with 1
replace tcampo2 with 2
* Esto inserta un registro en la tabla1libre
use tabla2 index filecampo4 * nombre cualquiera de un indice de la tabla2 por t2campo4
seek 5
if found()
delete
endif
* Elimina un registro de la tabla2 libre siempre y cuando campo4 = 5
use tabla3 index filecampo1 * nombre cualquiera de un indice de la tabla2 por t3campo1
seek 3
if found()
replace t3campo2 with 45
replace t3campo5 with 28
endif
* Esto actualiza un registro de la tabla3 libre siempre y cuando t3campo1 sea = 3
Ok, entiendo su inquietud:
1. Desde visual foxpro podemos trabajar base de datos propia o conectado a otras dbms como oracle, sqlserver, jet, etc.
2. Cuando yo digo que si vas a trabajar con base de datos o con tablas libres, aunque soy consciente que hay un error en esto, tienes toda la razón y te confundí, me refiero que que puedes crear tablas .dbf ligadas a una base de datos de visual foxpro, ejemplo, datos. Dbc y a ella perteneces todas las tablas que creemos dependiendo de esta estructura, MODIFY DATABASE PRUEBA.
Puedes tener las siguientes tablas que no dependen de nada ni de nadie y puedes usarla sin ningún problema, estas son tablas libres.
Tabla1.dbf
Tabla2.dbf
Tabla3.dbf
O puedes tener
Prueba. Dbc
Tabla1.dbf
Tabla2.dbf
Tabla3.dbf
Donde PRUEBA. DBC es la estructura de la base de datos y tabla1, tabla2, tabla3 dependen de prueba. Dbc y para accesar cualquiera de estas tablas debes haber abierto PRUEBA. Dbc open database prueba
3. Ahora bien, tu puedes accesar la información contenida en las bases de datos .dbc o en cada tablas .DBF con instrucción SQL de visual foxpro o con instrucciones xBase también de Visual Foxpro.
4. Si tenemos una base de datos
Open database prueba
insert into prueba.tabla1 (t1campo1, t1campo2) values (1,2)
* Esto inserta un registro en la tabla1 de la base de datos prueba.dbc
delete from prueba.tabla2 where t2campo4=5
* Elimina un registro de la tabla2 de la base de datos prueba siempre y cuando t2campo4 = 5
update prueba!tabla3 set t3campo2=45, t3campo5=28 where t3campo1 =3
* Esto actualiza un registro de la tabla3 de la base de datos prueba siempre y cuando t3campo1 sea = 3
5 si vamos a hacer esto sin usar SQL
use tabla1
append blank
replace tcampo1 with 1
replace tcampo2 with 2
* Esto inserta un registro en la tabla1libre
use tabla2 index filecampo4 * nombre cualquiera de un indice de la tabla2 por t2campo4
seek 5
if found()
delete
endif
* Elimina un registro de la tabla2 libre siempre y cuando campo4 = 5
use tabla3 index filecampo1 * nombre cualquiera de un indice de la tabla2 por t3campo1
seek 3
if found()
replace t3campo2 with 45
replace t3campo5 with 28
endif
* Esto actualiza un registro de la tabla3 libre siempre y cuando t3campo1 sea = 3
Ok si entiendo, para ser más explicito de lo que quiero hacer, te comento rapido; Ya tengo mi base, mis tablas, unas independientes y otras relacionadas, ya tengo un formulario de captura donde puedo ingresar y buscar registros dentro de mi tabla, me falta checar unas cosas del código para modificar registros, de este formulario principal quiero hacer unos 2 o 3 más a lo mucho para registrar otros registros de otras tablas, y lo que quiero es poner esa misma aplicación en otra maquina en red y que desde ahí pueda capturar y consultar información solamente, y se almacene en la base del proyecto que tengo en mi maquina, las modificaciones solo yo puedo hacerlas. Pero no se si tengo que instalar el VFP en esa maquina, y como hacerle para que desde esa se conecte a la mía y pueda ingresar los datos. Si puedes proporcionarme tu mail, y te mando las pantallas del sistemita, del form y de algunos reportes que ya tengo así también de la estructura del proyecto te lo agradecería.
Buen día
Buen día
No necesitas montar VFp en cada máquina, creas un directorio en el servidor, das permisos y llamas la aplicación desde cada máquina, en este directorio debes grabar los vfp*.dll.
El código para el trabajo en red ya te lo envié, aplícalo y pruébalo.
Éxitos
El código para el trabajo en red ya te lo envié, aplícalo y pruébalo.
Éxitos
Muchas gracias disculpa mi ignorancia pero es lo que no se como hacer, haber si entendi; el directorio del server puede ser donde tengo alojado el proyecto de fox, eso de los permisos no me queda como muy claro, ¿esto lo tengo que hacer en el proecto del server o en donde? Como llamo a la aplicación desde cada Pc, ¿desde dónde hago esa consulta o en donde meto el código en cada Pc? ¿Y quiero pensar que en cada maquina debo de guardar las .dll del proyecto es correcto?
Disculpame por ser tan torpe pero la verdad no tengo nada de experiencia en eso y se me complica mucho.
Disculpame por ser tan torpe pero la verdad no tengo nada de experiencia en eso y se me complica mucho.
Nadie es torpe y la ignorancia no es un pecado es la ausencia de cierto conocimiento, y eso se cura con lo que estas haciendo, PREGUNTANDO.
Ok, Creas un directorio donde vas a montar la aplicación terminada en ejecutable, C:\sistema, ese directorio lo compartes en la red y defines los permisos, como por ejemplo, que todos lo usuarios puedan modificar los archivos contenidos en el.
Luego desde cada terminal ubicas el directorio compartido por explorer y creas el acceso directo del ejecutable, una vez creado este acceso directo le das click derecho y escoges propiedades, allí aparece dos cajas de taxto, DESTINO e INICIAR EN, destino es el directorio o equipo, ejm, \\servidor\sistema\aplicacion.exe, e iniciar es \\servidor\sistema\. \\SERVIDOR es el nombre en la red del equipo donde creaste c:\sistema, el que llamamos servidor.
Estúdialo y me avisas.
Ok, Creas un directorio donde vas a montar la aplicación terminada en ejecutable, C:\sistema, ese directorio lo compartes en la red y defines los permisos, como por ejemplo, que todos lo usuarios puedan modificar los archivos contenidos en el.
Luego desde cada terminal ubicas el directorio compartido por explorer y creas el acceso directo del ejecutable, una vez creado este acceso directo le das click derecho y escoges propiedades, allí aparece dos cajas de taxto, DESTINO e INICIAR EN, destino es el directorio o equipo, ejm, \\servidor\sistema\aplicacion.exe, e iniciar es \\servidor\sistema\. \\SERVIDOR es el nombre en la red del equipo donde creaste c:\sistema, el que llamamos servidor.
Estúdialo y me avisas.
- Compartir respuesta
- Anónimo
ahora mismo