FoxPro/Visual FoxPro - Problema con grid creado en viasual foxpro

 
Vista:
sin imagen de perfil

Problema con grid creado en viasual foxpro

Publicado por Ramon (5 intervenciones) el 11/02/2017 00:36:46
Buenas noches amigos,
soy nuevo en el manejo de visual foxpro, aunque siempre he programado con foxpro 2.6 DOS, me encuentro en la fase de cambiar mis sistemas a visual foxpro.
el problema que se me presenta es que creo un formulario de consulta de deudas de los propietarios de un condominio utilizando un grid el cual lo alimento por medio de un cursor. todo va bien, pero lo que pasa que antes de mostrarme los registros de la consulta en el respectivo grid, me lanza la pantalla de consulta (browser) de dichos registros y luego que cierro dicha pantalla, aparece la información en el grid. Anexo la imagen para que tengan idea del problema. agradezco de antemano su valiosa colaboración.
pantalla-de-error
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con grid creado en viasual foxpro

Publicado por tony (1 intervención) el 11/02/2017 01:20:27
pon el codigo no somos adivinos para saber cual es el error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con grid creado en viasual foxpro

Publicado por José M. Ferrer A. (31 intervenciones) el 11/02/2017 05:53:19
Necesitas agregar al final de tu comando SQL del Query (Consulta) la instruccion INTO CURSOR <Nombre del Cursor>, que puede ser Ej.: "DeudasCond", esto evitará que se active el browse, lo otro a tomar en cuenta es que el DataSource del Grid del formulario tienes que encadenarlo al cursor generado según su nombre, es decir, en vez de "Consulta" el Nombre que hayas indicado, igual para las columnas de cada campo (FIELD). Adicional debes tener presente, que si requieres modificar la información del grid, es decir del cursor que maneja el grid, es necesario agregar también la instrucción READWRITE al final del comando SQL, para que sea de lectura y escritura, de lo contrario solo servirá para mostrar información.

Espero te ayude esta información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con grid creado en visual foxpro

Publicado por Ramon (5 intervenciones) el 11/02/2017 16:32:07
Amigo José Ferrer,
Muchas gracias por tu recomendaciones, eres muy gentil.
Aplique tus recomendaciones y no me funcionaron, no sé si estoy haciendo algo mal. Procedo a escribirte el código que coloque en el formulario para que por favor me orientes si algo está mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- en el objeto: form (frmedocta) procedimiento: INIT coloque el siguiente código:
 
    Thisform.GrdEdoCta.recordsource = ""
    CREATE CURSOR MiCursor (numero c(6),fecha d,monto n(10,2),intereses n(8,2),saldo n(10,2),;
        	montoc n(10,2),fchcanc f,deposito c(6),relacio c(4))
    THISFORM.grdEdoCta.RecordSource = "MiCursor"
    THISFORM.grdEdoCta.Refresh
 
- en el botón "estado de cuenta"  procedimiento: CLICK coloque el siguiente código:
 
    LOCAL lnTotal
   lnTotal = 0.00
   SELECT deudas
   SUM ALL saldo TO lntotal FOR apto = thisform.txtApto.Value
  THISFORM.GrdEdoCta.RecordSource = ""
  MiCursor = "SELECT Deudas.numero, Deudas.fecha, Deudas.monto, Deudas.interes,;
          Deudas.saldo, Deudas.fchcanc, Deudas.montoc, Deudas.deposito, Deudas.relacion;
         FROM condominio!deudas;
        WHERE  Deudas.apto = ALLTRIM(thisform.txtapto.value) ORDER BY Deudas.numero"
  THISFORM.GrdEdoCta.RecordSource = MiCursor
  THISFORM.txt_SdoAct.Value = lnTotal
  THISFORM.cmdHistorico.Visible = .F.
  THISFORM.cmdRegresar.Visible = .F.
  THISFORM.cmdEdoCta.Visible = .F.
  THISFORM.cmdAtras.Visible = .T.
  THISFORM.cmdAtras.SetFocus
  THISFORM.grdEdoCta.Refresh

Agradeciendo su oprtuna y desinteresada colaboración. Un gran saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema con grid creado en visual foxpro

Publicado por Leonardo Daniel A. (497 intervenciones) el 12/02/2017 06:10:53
Hola.... cuando usas sentencias SQL Select para llenar datagrids, combobox, listas. debes mandarlo a un cursor o tabla temporal si lo vas a editar

SELECT Deudas.numero, Deudas.fecha, Deudas.monto, Deudas.interes,;
Deudas.saldo, Deudas.fchcanc, Deudas.montoc, Deudas.deposito, Deudas.relacion;
FROM condominio!deudas;
WHERE Deudas.apto = ALLTRIM(thisform.txtapto.value) ORDER BY Deudas.numero ;
INTO CURSOR tmpDatos

o INTO DBF tmpDatos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema con grid creado en visual foxpro

Publicado por Fidel José (657 intervenciones) el 12/02/2017 15:52:22
Prueba con esta versión del código para el botón "Estado de Cuenta"
La estrategia está bien planteada y mal resuelta:
1) Crear el cursor en el Load o en el Init del form (antes de configurar el control grid). Ok
2) Obtener un cursor de pase con SELECT SQL (estaba incompleto)
3) Limpiar el cursor del control grid (comando ZAP) (faltaba)
4) Agregar los datos del cursor de pase (faltaba)
5) Cerrar el cursor de pase (faltaba)
6) Refresh de la interfaz (modificado)

De esta forma siempre te queda el RecordSource del control grid tal como lo presentaste la primera vez en el Init del form.

Recomendación: Hacer una clase para configurar los controles grid y enviar los datos necesarios para su configuración. Es un poco complicado atender todas las posibilidades que necesitas, pero nunca te arrepentirás del tiempo empleado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
LOCAL lnTotal,lcApto
lnTotal = 0
SELECT deudas
SUM ALL saldo TO lntotal FOR apto = thisform.txtApto.Value
lcApto = ALLTRIM(thisform.txtapto.value)
 
SELECT Deudas.numero, Deudas.fecha, Deudas.monto, Deudas.interes,;
	Deudas.saldo, Deudas.fchcanc, Deudas.montoc, Deudas.deposito, Deudas.relacion ;
	FROM condominio!deudas ;
	WHERE  Deudas.apto = m.lcApto ;
	ORDER BY Deudas.numero ;
	INTO CURSOR curPase
 
SELECT ( THISFORM.GrdEdoCta.RecordSource )
ZAP         && limpia el cursor del grid
APPEND FROM DBF("curpase")          && agrega los datos con la función DBF()
USE IN curpase  && cierra el cursor de pase
WITH thisform
	.grdEdoCta.Refresh
	.txt_SdoAct.Value = lnTotal
	.cmdHistorico.Visible = .F.
	.cmdRegresar.Visible = .F.
	.cmdEdoCta.Visible = .F.
	.cmdAtras.Visible = .T.
	.cmdAtras.SetFocus
 
ENDWITH
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con grid creado en visual foxpro

Publicado por Ramon (5 intervenciones) el 12/02/2017 17:22:55
Hola amigos, gracias a todos por su valiosa ayuda, ya no me presenta ningún error pero igual no me muestra la información en el grid,
nuevamente les dejo el código a ver que puede estar pasando. Disculpen las molestias ocasionadas. gracias

- en el objeto: form (frmedocta) procedimiento: INIT coloque el siguiente código:

Thisform.GrdEdoCta.recordsource = ""
SELECT 0
CREATE CURSOR miCursor (numero c(6),fecha d,monto n(10,2),interes n(8,2),saldo n(10,2),;
montoc n(10,2),fchcanc f,deposito c(6),relacion c(4))
THISFORM.grdEdoCta.RecordSource = "miCursor"
THISFORM.grdEdoCta.Refresh

- en el botón "estado de cuenta" procedimiento: CLICK coloque el siguiente código:

LOCAL lnTotal,lcApto
lnTotal = 0
SELECT deudas
SUM ALL saldo TO lntotal FOR apto = thisform.txtApto.Value
lcApto = ALLTRIM(thisform.txtapto.value)

SELECT Deudas.numero, Deudas.fecha, Deudas.monto, Deudas.interes,;
Deudas.saldo, Deudas.fchcanc, Deudas.montoc, Deudas.deposito, Deudas.relacion ;
FROM condominio!deudas ;
WHERE Deudas.apto = m.lcApto ;
ORDER BY Deudas.numero ;
INTO CURSOR curPase

SELECT ( THISFORM.GrdEdoCta.RecordSource )
ZAP && limpia el cursor del grid
APPEND FROM DBF("curpase") && agrega los datos con la función DBF()
USE IN curpase && cierra el cursor de pase
WITH THISFORM

.grdEdoCta.Refresh
.txt_SdoAct.Value = lnTotal
.cmdHistorico.Visible = .F.
.cmdRegresar.Visible = .F.
.cmdEdoCta.Visible = .F.
.cmdAtras.Visible = .T.
.cmdAtras.SetFocus

ENDWITH
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con grid creado en viasual foxpro

Publicado por José M. Ferrer A. (31 intervenciones) el 12/02/2017 17:06:24
Aplica esta pequeña modificación, debería funcionarte.

- en el botón "estado de cuenta" procedimiento: CLICK coloque el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LOCAL lnTotal
lnTotal = 0.00
SELECT deudas
SUM ALL saldo TO lntotal FOR apto = thisform.txtApto.Value
THISFORM.GrdEdoCta.RecordSource = ""
* -- Indicamos que el origen de datos debe asumir el alias de la tabla o cursor
THISFORM.GrdEdoCta.RecordSourceType = 1
* -- Ejercutamos la instrucción SQL para que genere el cursor o tabla de memoria
SELECT Deudas.numero, Deudas.fecha, Deudas.monto, Deudas.interes,;
      Deudas.saldo, Deudas.fchcanc, Deudas.montoc, Deudas.deposito, Deudas.relacion;
     FROM condominio!deudas;
    WHERE  Deudas.apto = ALLTRIM(thisform.txtapto.value) ORDER BY Deudas.numero INTO CURSOR MiCursor
* -- Ya generado el cursor procedmos a indicarle al control grid la fuente de los registros, en este caso es MiCursor
THISFORM.GrdEdoCta.RecordSource = "MiCursor"
THISFORM.txt_SdoAct.Value = lnTotal
THISFORM.cmdHistorico.Visible = .F.
THISFORM.cmdRegresar.Visible = .F.
THISFORM.cmdEdoCta.Visible = .F.
THISFORM.cmdAtras.Visible = .T.
THISFORM.cmdAtras.SetFocus
THISFORM.grdEdoCta.Refresh
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con grid creado en viasual foxpro

Publicado por Ramon (5 intervenciones) el 12/02/2017 17:49:37
Amigo José Ferrer, ya me funcionó de maravilla, un millón de gracias y disculpame tantas molestias. estamos a tus órdenes en Venezuela.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con grid creado en viasual foxpro

Publicado por José M. Ferrer A. (31 intervenciones) el 12/02/2017 18:54:11
Por nada amigo.
Me alegro que te sirviera, también soy de Venezuela.

Estamos a la orden.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con grid creado en viasual foxpro

Publicado por Ramon (5 intervenciones) el 12/02/2017 19:19:33
A que bueno José, yo vivo en los teques, mi celular es: 0414-3264960. estamos a tu orden
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar