Código en CLICK de Text1 Grid

Tengo el siguiente problema que aun no he podido solventar y acudo a ustedes para que por favor me ayuden, en un Grid que tengo en mi aplicación, programo el evento click de la columna es decir en el grid1.text1.click, la programación me funciona bien pero en algunos momentos creo que cuando doy Refresh me deja de hacer la programación y no se porque lo hace, esto es lo que tengo programado en el click.

wModifReg = MESSAGEBOX("Desea Modificar Registro S/N",4,"...::: Modificar :::...")
IF wModifReg = 6

SELECT "Detalle"+ALLTRIM(usuario)
thisform.pageframe1.page2.cantidad.Value = cant
thisform.pageframe1.page2.descripcion.Value = descrip
thisform.pageframe1.page2.precio.Value= precio
thisform.pageframe1.page2.uso.Value = uso
thisform.pageframe1.page2.arancel.Value = arancel

DELETE
Thisform. Pageframe1. Page2. Grid1. Refresh
ENDIF

Lo que yo busco es sacar un registro del grid modificarlo y volverlo a ingresar pero se pierde lo programado.

1
Respuesta
1

Asigna un cursor 'inexistente' en el inicio de tu pantalla, para proteger el código.

Pon en el init de tu pantalla:  thisform.grid1.recordsource='MyCursor'

Muchas gracias por el aporte pero no entiendo lo del cursos, este es el código que yo tengo en el inicio de la forma, reitero muchas gracias por su ayuda.

* Lineas a Eliminar solo para Correr la forma y no compilar *

SET DELETE ON
SET CENTURY on
PUBLIC conexion, wnuevo, DIRREPOR, nomuser, lcomando, dirip, diremp, wid_solic, usuario
* Ubicación del Proyecto

for i = 1 to alines(Setup, FileToStr("D:\Proyectos Fox\SolicMP\setup.ini"))
*Se crea un arreglo con los Datos Almacenados en el archivo Setup.ini
*La posición 1 es para el directorio del programa
*La posición 2 es para al dirección IP del servidor de Base de Datos
next

DirEmp = Setup(1)
DirIP = Setup(2)
wnuevo = 0

* conxstr = 'Driver={SQL Server};Server=IT-LAPTOP-PC' + ';Database=DBDatos;'
conxstr = 'Driver={SQL Server};Server=' + '&DirIP' + ';Database=DBDatos;Uid=sa;Pwd=1234;'
Conexion = SQLStringConnect(conxstr)
nomuser = "NZ"
usuario = "1000"
DIRREPOR = "d:\proyectos fox\solicmp\reportes\"

* Fin lineas a Eliminar **************

* Cursor Encabezado Solicitudes

TEXT TO wData noshow
select encab_solic.* from encab_solic
ORDER BY encab_solic.id_solic
ENDTEXT

lcomando = SQLEXEC(Conexion, wData)

SELECT sqlresult.* FROM sqlresult;
into CURSOR enc_solic

* Cursor Renglones Solicitudes

TEXT TO wData noshow
select renglon_solic.* from renglon_solic
ORDER BY renglon_solic.id_solic
ENDTEXT

lcomando = SQLEXEC(Conexion, wData)

SELECT sqlresult.* FROM sqlresult;
into CURSOR reg_solic

* Cursos de Reglones Privado para manejo de datos

CREATE CURSOR "Detalle"+ALLTRIM(usuario) (cant N(18,2), descrip C(40),;
precio N(18,2), uso C(40), arancel C(20), observ C(50), id_solic N(18))

* Cursor Tipo de Materiales

TEXT TO wData noshow
select * from tipmater ORDER BY tipmater
ENDTEXT

lcomando = SQLEXEC(Conexion, wData)

SELECT sqlresult.* FROM sqlresult;
into CURSOR cur_tipmater

thisform.pageframe1.page2.tipmater.RowSource = "cur_tipmater"

* Cursor Dpto.

TEXT TO wData noshow
select * from dpto ORDER BY dpto
ENDTEXT

lcomando = SQLEXEC(Conexion, wData)

SELECT sqlresult.* FROM sqlresult;
into CURSOR cur_dpto

thisform.pageframe1.page2.dpto.RowSource = "cur_dpto"

* Cursor Usuarios.

TEXT TO wData noshow
select * from usuarios ORDER BY cod_usu
ENDTEXT

lcomando = SQLEXEC(Conexion, wData)

SELECT sqlresult.* FROM sqlresult;
into CURSOR cur_usuarios

* Cargando Datos de la Solicitud

SELECT enc_solic
GO bott
wid_solic = enc_solic.id_solic
SELECT enc_solic.*, reg_solic.* FROM enc_solic, reg_solic WHERE;
enc_solic.id_solic = wid_solic;
AND reg_solic.id_solic = wid_solic;
INTO CURSOR wcur_solic

thisform.pageframe1.page2.num_solic.Value = wcur_solic.id_solic_a

SELECT cur_usuarios
LOCATE FOR ALLTRIM(cod_usu) = ALLTRIM(wcur_solic.cod_usu)
thisform.pageframe1.page2.Nombre.value = cur_usuarios.nom_usu

thisform.pageframe1.page2.fec_ingre.Value = CTOD(wcur_solic.fec_ing)
thisform.pageframe1.page2.prioridad.Value = wcur_solic.prioridad
thisform.pageframe1.page2.compraren.value = wcur_solic.comprar
thisform.pageframe1.page2.sitio.value = wcur_solic.sitio
thisform.pageframe1.page2.dpto.displayValue= wcur_solic.dpto
SELECT cur_dpto
LOCATE FOR ALLTRIM(dpto) = ALLTRIM(wcur_solic.dpto)
thisform.pageframe1.page2.NomDpto.Value = cur_dpto.desc_dpto
thisform.pageframe1.page2.tipmater.displayValue= wcur_solic.tipmater
SELECT cur_tipmater
LOCATE FOR ALLTRIM(tipmater) = ALLTRIM(cur_tipmater.tipmater)
thisform.pageframe1.page2.tipoMat.Value = cur_tipmater.desc_tipmater

thisform.pageframe1.page2.grid1.RecordSource = ALIAS("wcur_solic")
thisform.pageframe1.page2.grid1.column1.ControlSource = ALIAS("wcur_solic")+".cant"
thisform.pageframe1.page2.grid1.column2.ControlSource = ALIAS("wcur_solic")+".descrip"
thisform.pageframe1.page2.grid1.column3.ControlSource = ALIAS("wcur_solic")+".uso"
thisform.pageframe1.page2.grid1.column4.ControlSource = ALIAS("wcur_solic")+".precio"
thisform.pageframe1.page2.grid1.column5.ControlSource = ALIAS("wcur_solic")+".arancel"

IF wcur_solic.anul = "1" then
Thisform.pageframe1.page2.anulLab.Visible= .T.
else
Thisform.pageframe1.page2.anulLab.Visible= .F.
ENDIF
thisform.pageframe1.page2.observaciones.Value = wcur_solic.observa

Si ya veo.

En escencia lo que sugiero es que inicialices los grid de tú pantalla (antes de colocarles el valor rowsource), con un cursor inexistente.

Ya en varias ocasiones me ha sucedido que el grid pierde la configuración (y los códigos) si no lo inicializo con algo ficticio. Así que por eso te sugiero que antes de poner los valores rowsource en tu grid, pongas como te sugiero. Esto partiendo de tu pregunta inicial que aparentemente "se pierden" los códigos que has programado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas