FoxPro/Visual FoxPro - Spinner en Grid

 
Vista:

Spinner en Grid

Publicado por Cris (47 intervenciones) el 28/11/2006 20:59:30
Hola, bueno mi problema es que tengo un grid que llene con una instruccion SQL y en el recordsource de mi grid le ingrese la sentencia, hasta ahi todo bien, inserte unos Spinner a mi grid, pero me sale a cada rato el control es solo de lectura, revise todos los ReadOnly y estan todos como predeterminados o sea en False, ya no se que mas mover o modificar para habilitar el spinner de mi Grid, espero su ayuda, si necesitan mas info no duden en pedirmela

ah! y si lo soluciono antes, les dare la solucion XD
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
sin imagen de perfil

RE:Spinner en Grid

Publicado por Ernesto Hernandez (4623 intervenciones) el 29/11/2006 05:06:17
Si el control esta dentro de una columna revisa el ReadOnly de esa columna completa o prueba mandando en el Init del grid

Form1.Grid1.SetAll("ReadOnly", .F., "Column")
algo asi prueba con los text tambien

Suerte
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

RE:Spinner en Grid

Publicado por Cris (47 intervenciones) el 29/11/2006 13:40:17
Ufff he probado de todo pero aun no funciona, explico nuevamente a ver si soy mas claro

Tengo un Grid que se llama grdListPend (listados pendientes) este grid es para mostrar solicitudes que se realizan a las Bodegas, donde me muestra
En la 1 columna el correlativo,
En la 2 columna el codigo del articulo,
En la 3 columna el nombre del articulo
En la 4 columna la cantidad solicitada

mi grid tiene 5 columnas y esta es la instruccion que tengo para llenar el grid, lo hace correctamente

lcSql = "Select HfSolicitud.Corr, HfSolicitud.Arti,HfArti.Desc, HfSolicitud.Cantidad, 0 as NewInt " +;
" From HfSolicitud, HfArti " +;
" Where HfSolicitud.Corr = lcNDoc And " +;
" HFSolicitud.Arti = HfArti.Codigo And " +;
" HfSolicitud.Bo_De = '0001' And " +;
" HfSolicitud.Bo_Or = Alltrim(ThisForm.txtBodRecep.Value) And " +;
" HfSolicitud.Estado = '1' Into Cursor grdListPend "

ThisForm.grdListPend.RecordSource = lcSql

si se fijan en el Select el ultimo campo es 0 as NewInt, esto es para que la 5 columna quede con valores 0 y no NULL, ya que cuando insertaba el spinner no tenia problemas, pero al ejectuar y hacer un click sobre el control este me reclamaba el Value, la 5 columna el usuario debera manipularla solo esta columna donde por ejemplo
Correl Codigo Articulo Nom Articulo Cantidad Solicitada Cantidad Entregada
0001 00000001 Aspirinas 100 en esta parte el usuario debera ingresar la cantidad a entregar y eso no lo puedo hacer ya que me sale el mensaje, el contro es solo de lectura, anteriormente ya habia revisado todos los READONLY que esten en False, necesito ayuda por favor para esto me tiene complicado, tengo una semana para entregar este trabajo de echo ya tengo 2 dias menos
De antemano muchas gracias
Yo
Cristopher
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

RE:Spinner en Grid

Publicado por Antonio R. Moquete Mejia (207 intervenciones) el 30/11/2006 15:22:52
lcSql = "Select HfSolicitud.Corr, HfSolicitud.Arti,HfArti.Desc, HfSolicitud.Cantidad, 0 as NewInt " +;
" From HfSolicitud, HfArti " +;
" Where HfSolicitud.Corr = lcNDoc And " +;
" HFSolicitud.Arti = HfArti.Codigo And " +;
" HfSolicitud.Bo_De = '0001' And " +;
" HfSolicitud.Bo_Or = Alltrim(ThisForm.txtBodRecep.Value) And " +;
" HfSolicitud.Estado = '1' Into Cursor grdListPend "

Create tabla c:\lcSql2.dbf free(Corr n(10,0), Arti c(10), Desc C(30), cantidad n(10,2), NewInt n(10,2))

If !used('lcSql2')
use c:\lcSql2'.dbf exclu
endif
select clSql2
append from lcSql

**------esto es para que no se vea en blanco el grid
ThisForm.grdListPend.RecordSource = 'lcSql2'
ThisForm.grdListPend.recordsourcetype=0
ThisForm.grdListPend.Refresh()

Att.
Antonio R. Moquete Mejia
Sto. Dgo. Rep. Dom.
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

RE:Spinner en Grid

Publicado por sergio (737 intervenciones) el 29/11/2006 13:41:34
Fijate si el cursor que tenes es actualizable
si es un cursor sql de fox es no actualizable por lo tanto siempre te va a dar que es de solo lectura
para hacerlo actualizable

haz el select fuera de la grid

select ......
y a continuacio
use dbf() again nuevocursor in alias 0
select nuevocursor
y trabaja dinamicamente la grid
thisform.grid1.recordsourcetype = 1
thisform.grid1,recordsource = 'nuevocursor'
y demas instrucciones
y asi lo vas a poder hacer
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

RE:Spinner en Grid

Publicado por Cris (47 intervenciones) el 29/11/2006 14:10:04
sobre tu ejemplo no lo entiendo del todo ya que en lo que deje anteriormente en ningun momento abro una tabla con Use, lo que hago es crear el cursor mediante una instruccion SQL

lcSql = "Select HfSolicitud.Corr, HfSolicitud.Arti,HfArti.Desc, HfSolicitud.Cantidad, 0 as NewInt " +;
" From HfSolicitud, HfArti " +;
" Where HfSolicitud.Corr = lcNDoc And " +;
" HFSolicitud.Arti = HfArti.Codigo And " +;
" HfSolicitud.Bo_De = '0001' And " +;
" HfSolicitud.Bo_Or = Alltrim(ThisForm.txtBodRecep.Value) And " +;
" HfSolicitud.Estado = '1' Into Cursor grdListPend "

ThisForm.grdListPend.RecordSource = lcSql

Me dices que puedo hacer un cursor dinamico, como lo hago para que sea dinamico en mi instruccion.

Espero esto solucione mi problema
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

RE:Spinner en Grid

Publicado por sergio (737 intervenciones) el 29/11/2006 15:26:17
ejecutas el cursor en vex de mandarlo a una variable para que esta la coloques en el recordrsource. ejecuta el sql directamente y cuando termmines de ejecutarlo comviertelo en actualizable
como te dije anteriormente

select ..........................
use dbf() AGAIN NUEVOCURSOR IN ALIAS 0
SELECT NUEVOCURSOR
RECORDSORCETYPE = 1
RECORDSOURCE = 'NUEVOCURSOR'
Y DEMAS PROPIEDADES QUE NECESITES PARA LA GRID
THISFORM.GRID1.REFRESH()
ETC ETC ETC
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

RE:Spinner en Grid

Publicado por Antonio R. Moquete Mejia (207 intervenciones) el 30/11/2006 15:15:07
Saludos,

Cris, lo que te comenta sergio, es la realidad, mira estas creando un cursor con esa sentencia de sql, por eso no puedes esperar que sea modificable,

si quieres entonces que se modifique eso tienes que introducir esos datos en una tabla *.dbf

y al grid ponle en el recorsoruce el nuevo nombre de la tabla que llenas con ese cursor que hiciste.

cursor = a la sentencia de sql que le enviaste.

PD:
Si no lo entiendes me dejas saber para hacerte el codigo.

Att.
Antonio
STo. Dgo. Rep. Dom.
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

RE:Spinner en Grid

Publicado por Cris (47 intervenciones) el 30/11/2006 15:36:32
Muchas gracias por la preocupacion se agradece enormemente, lo solucione ayer con lo que me dijo Sergio, claro estaba pasando la sentencia a cursor y mejor la pase a un DBF y ahi pude hacerlo modificable, pero ahora tengo otro problema

El problema es que paso la consulta a una tabla temporal, cuando desocupo esta tabla debo borrarla por un asunto obvio, pero no me deja borrarla por que me dice que el archivo esta en uso

Primero tengo un combobox donde selecciono la bodega solicitante
y este es el codigo espero se entienda, en el evento Click del combobox de nombre cboBodRecep
-----------------------------------------------------------------
Local SwAbre as Boolean
ThisForm.cboListPend.Clear
ThisForm.txtBodRecep.Value = ThisForm.cboBodRecep.Value
lcCodBodRecep = ThisForm.cboBodRecep.Value

Select corr,ano_solici,fecha_sol;
From HfSolicitud;
Where HfSolicitud.Bo_or = lcCodBodRecep And;
HfSolicitud.Bo_De = '0001' And;
HfSolicitud.Estado = '1' And;
HfSolicitud.Ano_Solici = Year(Date());
Into Cursor ListPend

lcCorrelat = -1
SwAbre = .F.
Selec ListPend
Do While .NOT. EoF()
If ListPend.Corr <> lcCorrelat Then
ThisForm.cboListPend.AddListItem("Listado Nro " + Alltrim(Str(ListPend.Corr)) + " Con Fecha " + DtoC(ListPend.Fecha_Sol))
lcCorrelat = ListPend.Corr
SwAbre = .T.
EndIf

Skip
EndDO
If SwAbre = .T. then
ThisForm.cboListPend.Enabled = .T.
Else
Messagebox("Este Servicio No tiene Solicitudes Pendientes")
EndIf

-----------------------------------------------------------------
Funciona si ningun problema
luego habilito otro combobox que me almacenara las solicitudes que tiene pendiente el servicio seleccionado el combobox se llama cbolistPend, en el evento click tengo lo sgte

------------------------------------------------------------------

Local lcNDoc As Integer
Local lcSql as String
Local lcTablaAux as String
Public pcConsSQL

ThisForm.txtNDoc.Value = SubStr(ThisForm.cboListPend.Value,13,4)
lcNDoc = Val(ThisForm.txtNDoc.Value)

lcTablaAux = Sys(3)
pcConsSQL = lcTablaAux
set step on
Select HfSolicitud.Corr, HfSolicitud.Arti,HfArti.Desc, HfSolicitud.Cantidad, 0000000000 as NewInt ;
From HfSolicitud, HfArti;
Where HfSolicitud.Corr = lcNDoc And;
HFSolicitud.Arti = HfArti.Codigo And;
HfSolicitud.Bo_De = '0001' And;
HfSolicitud.Bo_Or = Alltrim(ThisForm.txtBodRecep.Value) And;
HfSolicitud.Estado = '1' Into Table (pcConsSQL)

USE (pcConsSQL + ".Dbf") AGAIN ALIAS CurList IN 0
Selec CurList
ThisForm.grdListPend.RecordSource = 'CurList'
This.Enabled=.F.
ThisForm.cmdOtroList.Enabled = .T.

------------------------------------------------------------------
Hasta aca ningun problema pero tengo un boton que se llama cmdOtroList, el cual deberia limpiar el Grid, desbloquear el cboListPend y borrar la tabla temporal, para que cree una nueva pero es ahi donde me dice que el archivo esta en uso, he probado el Use In, el Use, el close all ¬¬" y nada funciona, con el close all me permite borrar la tabla temporal, pero me aparece este mensaje
No se puede tener acceso a la tabla seleccionada, lo malo es que no se a que evento entra que hace esto

Gracias
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

RE:Spinner en Grid

Publicado por Cris (47 intervenciones) el 30/11/2006 15:50:00
5 minutos despues de haber escrito esto lo solucione, puse close tables y pude eliminar la tabla temporal sin ningun problema y no me afecta en ninguna parte de mi programa afortunadamente

Saludos nuevamente, asi es la informatica o no? jejeje

cmdOtroList, evento Click

ThisForm.cmdOtroList.Enabled = .F.
Thisform.grdListPend.Recordsource=''
Local lcRuta as String

lcRuta = "D:\Sistema\Hph2001\"

ThisForm.grdListPend.RecordSource = ''
*Set step on
Selec CurList
Use

If pcConsSql <> " " Then
Close Tables
Erase (pcConsSql + ".DBF")
pcConsSql = ""
EndIf
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

RE:Spinner en Grid

Publicado por KEVIN HARNOLLD VECHARA (41 intervenciones) el 15/03/2007 18:16:07
mira la solucion para la instrucion que estabas realizando es muy sencilla, efectivamente un cursor no puede ser modificable tal cual como lo tienes alli, pero si al final de .la instruccion le agregas READWRITE este te permitira agregar y modificar informacion en tu cursor.

espero te sirva.

Not a solo funciona para VF7 Ó >s
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