COMO SABER SI UNA TABLA ESTA READ/ONLY

887 views
Skip to first unread message

Carlos Gonzalez

unread,
Oct 17, 2016, 2:50:25 PM10/17/16
to Comunidad de Visual Foxpro en Español
Buenas tardes amigos, tengo mi aplicación FoxPro con tablas nativas y funcionaba perfectamente, ahora hice una modificación agregare un nuevo form y me muestra el mensaje de que no se puede actualizar el cursor XXXXX por que es de solo lectura.
 Por favor ayúdenme estoy algo desesperado por esto, anteriormente funcionaba bien, No tengo mucha experiencia en FoxPro.
Auto Generated Inline Image 1

Carlos Hidalgo

unread,
Oct 17, 2016, 3:10:53 PM10/17/16
to publice...@googlegroups.com

Revisa tu proyecto.  Ve si las tablas en diseñador de proyectos estan excluidas.  Click derecho sobre la tabla y Excluir.  Asi solucione un problema igual al tuyo.

Carlos Gonzalez

unread,
Oct 17, 2016, 4:26:17 PM10/17/16
to Comunidad de Visual Foxpro en Español
Mira amigo todas las tablas y base de datos están exclude, alguno otra sugerencia?
Auto Generated Inline Image 1

Carlos Alfaro

unread,
Oct 17, 2016, 4:29:58 PM10/17/16
to publice...@googlegroups.com

Tambien te puede afectar si estas accediendo via red o esta en una carpeta protegida por Windows.

image001.png

Carlos Gonzalez

unread,
Oct 17, 2016, 4:41:17 PM10/17/16
to Comunidad de Visual Foxpro en Español, calf...@yahoo.com.ar
Estoy ejecutando en modo local, si ejecuto el form solo si realiza los insert sin problema, pero cuando lo ejecuto desde el ,.exe es donde muestra el error.

Antonio Meza

unread,
Oct 17, 2016, 4:47:29 PM10/17/16
to Comunidad de Visual Foxpro en Español
La tabla la tienes agregada en el dataenvieronment? checa si no la moviste por error la propiedad de solo lectura.

saludos

Carlos Gonzalez

unread,
Oct 17, 2016, 4:54:06 PM10/17/16
to Comunidad de Visual Foxpro en Español
No la tengo agregada en el Dataenviroment. Me percate que la carpeta tiene esta propiedad  la capeta donde tengo el proyecto.

Auto Generated Inline Image 1
Auto Generated Inline Image 2

Carlos Hidalgo

unread,
Oct 17, 2016, 5:57:17 PM10/17/16
to publice...@googlegroups.com

Si estan excluidas todas.  Bien.
A la hora de cargar el cursor en el form hazlo asi Into Cursor Micursor Readwrite.. 
Vuelve a generar el exe.
Eso deberia funcionar

Fidel Charny

unread,
Oct 17, 2016, 6:14:18 PM10/17/16
to Comunidad de Visual Foxpro en Español
La carpeta que utilizas no es recomendable para alojar tablas. Pero si quieries utilizarla, debe ir a la ficha seguridad y con el botón "Editar" darle permisos de control total al usuario del equipo.
Es muy probable que los usuarios finales no quieran que hagas esta modificación en sus equipos.
Te recomiendo este artículo.

http://fdbozzo.blogspot.com.es/2014/01/crear-un-proyecto-foxpro-por-donde.html

Carlos Gonzalez

unread,
Oct 17, 2016, 6:24:20 PM10/17/16
to Comunidad de Visual Foxpro en Español
No uso cursor amigo caho los datos y hag oeste código:

**VALIDAR LOS CAMPOS NO ESTEN VACIOS **

FOR EACH oControl IN Thisform.Controls

IF !EMPTY(oControl.Comment) AND EMPTY(oControl.Value)

MESSAGEBOX("Debe llenar todos los campos" + oControl.Comment, 48, "Mensaje del sistema")

oControl.Setfocus()

RETURN

ENDIF

ENDFOR

**OBTENER VARIABLE DE CENTRO OPERATIVO.

IF(THISFORM.CBcsucursal.Value = "Amores")

vCo = "A"

ENDIF

IF(THISFORM.CBcsucursal.Value = "Cancún")

vCo = "C"

ENDIF

IF(THISFORM.CBcsucursal.Value = "Direccion Duraznos")

vCo = "P"

ENDIF

IF(THISFORM.CBcsucursal.Value = "Presa Solís")

vCo = "P"

ENDIF

IF(THISFORM.CBcsucursal.Value = "Presa Solís Gayosso")

vCo = "G"

ENDIF

IF(THISFORM.CBcsucursal.Value = "Querétaro")

vCo = "Q"

ENDIF

 

INSERT INTO nominas (idnomina,descri_nom,cenope,idgpo,estatus,fecha_baja) VALUES (;

ALLTRIM(THISFORM.txtnomina.Value),;

ALLTRIM(THISFORM.txtnomina_nom.Value),;

ALLTRIM(THISFORM.cbcsucursal.value),;

THISFORM.txtgpo.Value,;

"ACTIVA",;

"")

MESSAGEBOX ("¡Nomina Agregada!")

thisform.txtgpo.Value = ""

thisform.txtNomina.Value = ""

thisform.txtnomina_nom.Value = ""

thisform.cbcsucursal.Value = ""

thisform.Cbg.Value = ""

HernanCano

unread,
Oct 18, 2016, 12:35:49 AM10/18/16
to Comunidad de Visual Foxpro en Español
Carlos:

Estás mostrando código donde se "insertan" los registros al DBF/cursor NOMINAS.

Pero todavía no sabemos cómo se abre NOMINAS: si mediante USE, si mediante SELECT * FROM, si mediante DataEnvironment,....

Si dices que en ambiente de programación "funciona bien", pero en el .EXE dice "de sólo lectura", es muy probable que NOMINAS.DBF esté agregada ("Included") al proyecto... pero muestras imagenes donde se muestra que no.....
Entonces ¿el Environment?... Dices que tampoco...

Considero que sólo falta determinar cómo lo abres: ¿con USE? ¿con qué código? Sólo dices que "cachas los datos"...
¿Nos puedes mostrar el código en el Load y en el Init del formulario? ¿las propiedades del form? ¿O nos adjuntas el form?

Carlos Lima

unread,
Oct 18, 2016, 6:08:54 AM10/18/16
to Comunidad de Visual Foxpro en Español
Bom dia Carlos.
Isso ja me aconteceu. O ficheiro copiado para a pasta esta só de escrita. Experimeta alterar as propriedades do ficheiro ou recria o ficheiro a partir do visual foxpro.
boa sorte.

Carlos Gonzalez

unread,
Oct 18, 2016, 11:29:58 AM10/18/16
to Comunidad de Visual Foxpro en Español
No uso use ni abro la tabla porque si le pongo
USE nominas AGAN IN 0 ó
USE NOMINAS SHARED

Me marca error que el archivo ya esta abierto. No abro la tabla explícitamente, solo tengo ese código.

HernanCano

unread,
Oct 19, 2016, 1:56:16 AM10/19/16
to Comunidad de Visual Foxpro en Español
Carlos:
>>> ... sólo tengo ese código...

¿Cómo así? ¿El programa lo hiciste tú o no?
¿Apenas estás haciendo una tarea...?

1.
Por lo que dices, parece que estás usando DataEnvironment en un formulario. Revisa lo que te dicen del DataEnvironment.

2.
¿El .EXE lo estás ejecutando en el mismo computador donde se compiló? ¿O el error te aparece en un computador del "cliente" que te compró la app?

3.
¿Estás "obteniendo" el .EXE a partir de un "instalador"?

4.
Las instrucciones que mencionas (( "USE nominas AGAN IN 0" ó "USE NOMINAS SHARED" )) no pueden dar el error que mencionas si estás haciendo las cosas bien.

5.
Justo antes del INSERT prueba con lo sgte:


IF(THISFORM.CBcsucursal.Value = "Querétaro")
   vCo = "Q"
ENDIF

** Verificando posible inconsistencia
if !used('NOMINAS')
   =MessageBox('NOMINAS no está en uso. Vamos a intentar corregir.')
   use NOMINAS in 0 shared
endif
if IsReadOnly('NOMINAS')
   =MessageBox('NOMINAS está abierto de sólo lectura. Vamos a intentar corregir.')
   use in NOMINAS
   use NOMINAS in 0 shared
   
   **
   if IsReadOnly('NOMINAS')
      =MessageBox('NOMINAS sigue abierto de sólo lectura. No se pudo corregir.')
   endif
   **
endif
**

INSERT INTO nominas (idnomina,descri_nom,cenope,idgpo,estatus,fecha_baja) VALUES (;
  ALLTRIM(THISFORM.txtnomina.Value),;
  ALLTRIM(THISFORM.txtnomina_nom.Value),;
  ALLTRIM(THISFORM.cbcsucursal.value),;
  THISFORM.txtgpo.Value,;
  "ACTIVA",;
  "")
  
**

Y nos cuentas....

Germán Fabricio Valdez

unread,
Oct 19, 2016, 4:31:21 PM10/19/16
to Comunidad de Visual Foxpro en Español
tenes puesto el set exclusive off
si trabajas con sesiones privadas lo tenes que repetir en cada formulario
Reply all
Reply to author
Forward
0 new messages