Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los mensajes
Necesito hacer un filtro como veis en la pantalla adjunta es decir, en la
zona de filtrado
hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
boton de
"buscar condiciones" se va al metodo siguiente:
METHOD filtrobase( oSender, oCbZona) CLASS TForm1
local variables := space(0)
local control := .f.
MsgInfo( oCbZona)
IF !oCbZona = "00.-"
VARIABLES := "::oDataSet:ZONA = "+ oCbZona
MsgInfo( "filtrado realizado" )
end if
SET FILTER TO &VARIABLE
::oBrw:Refresh()
RETURN Nil
la variable oCbZona es la del primer campo de la imagen zona,
cuando lo muestro me da un nulo y quiero que sea la que esta arriba
en la del formulario que es la que e asignado cVarName
me podeis explicar mo hacer esto
Attached files
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
necesito hacer un filtro como se hace
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
necesito hacer un filtro como se hace
Pilo,
Te conteste en privado a esta misma pregunta. Supongo que no la has
recibido.
Te comentaba que si utilices DataControls no debes manejar los comandos
directamente, y si los usas no incluyas entonces referencias al objeto
DataSet.
Me explico, puedes hacer que el DataSet haga completamente el fitrado:
::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
Puedes sustutuir si lo prefieres los corchetes por comillas simples
O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER de
Clipper:
PRIVATE cVarZona
.....
SET FILTER TO Zona == cVarZona
Un saludo,
"PILO" <srmpilo@hotmail.com> escribió en el mensaje
news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> mensajes
> Necesito hacer un filtro como veis en la pantalla adjunta es decir, en la
> zona de filtrado
> hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> boton de
> "buscar condiciones" se va al metodo siguiente:
>
> METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> local variables := space(0)
> local control := .f.
> MsgInfo( oCbZona)
>
> IF !oCbZona = "00.-"
> VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> MsgInfo( "filtrado realizado" )
> end if
> SET FILTER TO &VARIABLE
>
> ::oBrw:Refresh()
>
> RETURN Nil
> la variable oCbZona es la del primer campo de la imagen zona,
> cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> en la del formulario que es la que e asignado cVarName
> me podeis explicar mo hacer esto
>
>
>
>
>
Te conteste en privado a esta misma pregunta. Supongo que no la has
recibido.
Te comentaba que si utilices DataControls no debes manejar los comandos
directamente, y si los usas no incluyas entonces referencias al objeto
DataSet.
Me explico, puedes hacer que el DataSet haga completamente el fitrado:
::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
Puedes sustutuir si lo prefieres los corchetes por comillas simples
O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER de
Clipper:
PRIVATE cVarZona
.....
SET FILTER TO Zona == cVarZona
Un saludo,
"PILO" <srmpilo@hotmail.com> escribió en el mensaje
news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> mensajes
> Necesito hacer un filtro como veis en la pantalla adjunta es decir, en la
> zona de filtrado
> hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> boton de
> "buscar condiciones" se va al metodo siguiente:
>
> METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> local variables := space(0)
> local control := .f.
> MsgInfo( oCbZona)
>
> IF !oCbZona = "00.-"
> VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> MsgInfo( "filtrado realizado" )
> end if
> SET FILTER TO &VARIABLE
>
> ::oBrw:Refresh()
>
> RETURN Nil
> la variable oCbZona es la del primer campo de la imagen zona,
> cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> en la del formulario que es la que e asignado cVarName
> me podeis explicar mo hacer esto
>
>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
necesito hacer un filtro como se hace
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> Te conteste en privado a esta misma pregunta. Supongo que no la has
> recibido.
>
> Te comentaba que si utilices DataControls no debes manejar los comandos
> directamente, y si los usas no incluyas entonces referencias al objeto
> DataSet.
>
> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>
> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>
> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>
> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
de
> Clipper:
>
> PRIVATE cVarZona
Donde tengo que poner esta variable ya que en el:
CLASS TForm1 FROM TForm
COMPONENT oCbZona
la tengo definida en componentes en el Tcombobox en el cVarName:
Perdonar por la ingonracia.
> ....
> SET FILTER TO Zona == cVarZona
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> > mensajes
> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
la
> > zona de filtrado
> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> > boton de
> > "buscar condiciones" se va al metodo siguiente:
> >
> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo( oCbZona)
> >
> > IF !oCbZona = "00.-"
> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> > ::oBrw:Refresh()
> >
> > RETURN Nil
> > la variable oCbZona es la del primer campo de la imagen zona,
> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> > en la del formulario que es la que e asignado cVarName
> > me podeis explicar mo hacer esto
> >
> >
> >
> >
> >
>
>
news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> Te conteste en privado a esta misma pregunta. Supongo que no la has
> recibido.
>
> Te comentaba que si utilices DataControls no debes manejar los comandos
> directamente, y si los usas no incluyas entonces referencias al objeto
> DataSet.
>
> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>
> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>
> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>
> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
de
> Clipper:
>
> PRIVATE cVarZona
Donde tengo que poner esta variable ya que en el:
CLASS TForm1 FROM TForm
COMPONENT oCbZona
la tengo definida en componentes en el Tcombobox en el cVarName:
Perdonar por la ingonracia.
> ....
> SET FILTER TO Zona == cVarZona
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> > mensajes
> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
la
> > zona de filtrado
> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> > boton de
> > "buscar condiciones" se va al metodo siguiente:
> >
> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo( oCbZona)
> >
> > IF !oCbZona = "00.-"
> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> > ::oBrw:Refresh()
> >
> > RETURN Nil
> > la variable oCbZona es la del primer campo de la imagen zona,
> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> > en la del formulario que es la que e asignado cVarName
> > me podeis explicar mo hacer esto
> >
> >
> >
> >
> >
>
>
necesito hacer un filtro como se hace
Haciendo la siguiente prueba en programación
CLASS TForm1 FROM TForm
COMPONENT oDataSource
COMPONENT oDataSet
COMPONENT oBrw
COMPONENT oReBar1
COMPONENT oGrupoCaja1
COMPONENT oStatusBar1
COMPONENT oCbZona
COMPONENT oLabel1
COMPONENT oLabel2
COMPONENT oLabel3
COMPONENT oLabel4
COMPONENT oLabel5
COMPONENT oLabel6
COMPONENT oCbTipo
COMPONENT oEPoblacion
COMPONENT oMPrecioeuro
COMPONENT oMPreciopts
COMPONENT oBtnBmp1
COMPONENT oLabel7
COMPONENT oMPrecioeuro2
COMPONENT oMPreciopts2
COMPONENT oLabel8
COMPONENT oLabel9
PRIVATE oCbZona
PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
DATA aTags, oGrupoCaja1
METHOD CreateForm()
METHOD FormInitialize( oSender )
METHOD Filtrobase(oSender ,oGrupoCaja1)
METHOD SetTag( Value )
METHOD Filter()
METHOD AddNew()
METHOD Edit()
METHOD Delete()
METHOD Report()
METHOD BrwSeek( oSender, cSeek )
METHOD BrwChange( oSender, lBookMarkChanged )
ENDCLASS
#include "Form1.xfm"
//---------------------------------------------------------- ----------------
----
METHOD FormInitialize( oSender ) CLASS TForm1
LOCAL oSortMenu
LOCAL aTags
LOCAL nFor
set date italian
MENU ::oMenu
MENUITEM "&File"
MENU
MENUITEM "&Append"
MENUITEM "&Edit"
MENUITEM "&Delete"
SEPARATOR
MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
SEPARATOR
MENUITEM "&Exit" ACTION ::Close()
ENDMENU
MENUITEM "&Help"
MENU
MENUITEM "About..." ;
ACTION ShellAbout( Application:Handle, Application:cTitle,
;
"Copyright Xailer 2003-2004" )
ENDMENU
ENDMENU
oSortMenu := TMenu():Create( Self, .t. )
::aTags := ::oDataSet:GetTags()
::oDataSet:OrdSetFocus("")
FOR nFor := 1 to len( ::aTags )
WITH OBJECT TMenuItem():New( oSortMenu )
:cText := "Order by " + ::aTags[ nFor ]
:Cargo := nFor
:OnClick := {|o| ::nTag := o:Cargo }
:Create()
END
NEXT
WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
:lList := .t.
:lAutoSize := .t.
:Create()
::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
::nTag++ }, oSortMenu )
::nTag := 1
WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
Filter", {|| ::Filter() } )
:lChecked := .f.
END
:AddSeparator()
:AddButton( "", "BMP_FIRST",,, "First record", {|| ::oBrw:GoTop() } )
:AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
::oBrw:GoUp() } )
:AddButton( "", "BMP_NEXT",,, "Next record ", {|| ::oBrw:GoDown() } )
:AddButton( "", "BMP_LAST",,, "Last record", {|| ::oBrw:GoBottom() } )
:AddSeparator()
:AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
:AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
:AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
:AddSeparator()
:AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
:AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
END
WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
:oControl := ::oToolBar
:Create()
END
WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
:oBitmap := "lupa16"
:OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
:nMaxLength := 100
:Create()
END
WITH OBJECT TRebarBand():New( ::oRebar1 )
:cText := "Búsqueda:"
:oControl := ::oEdiBusqueda
:Create()
END
RETURN Nil
//---------------------------------------------------------- ----------------
----
METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
local variables := space(0)
local control := .f.
MsgInfo(oCbZona) //linea 150
IF !oCbZona = "00.-"
SET FILTER TO &("Zona == '" + oCbZona + "'")
MsgInfo( "filtrado realizado" )
end if
SET FILTER TO &VARIABLE
me da el error siguiente
***************************** Registro de errores
*****************************
Fecha: 01-09-05
Hora: 09:56:09
Memoria libre: 74328
Area actual: 1
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 0.99.4 Pre-release 4
Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Professional 5.01.2600
----------------------- Información detallada del
error -----------------------
Subsistema: BASE
Código de error: 1003
Estado: .F.
Descripción: Variable does not exist
Operación: OCBZONA
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TFORM1:FILTROBASE (150)
TBTNBMP:ONCLICK (0)
TBTNBMP:CLICK (98)
(b)XCONTROL (136)
TBTNBMP:COMMAND (0)
TGROUPBOX:WMCOMMAND (233)
RUNFORM (0)
TAPPLICATION:RUN (189)
TFORM0:ENTRAR (47)
TBUTTON:ONCLICK (0)
TBUTTON:CLICK (98)
TBUTTON:WMKEYDOWN (158)
RUNFORM (0)
TAPPLICATION:RUN (189)
MAIN (16)
------------------ Información detallada de áreas de
trabajo ------------------
Area: 1
Alias: PROPIEDA
Registro: 3
Filtro:
Relación:
Orden del índice: 1
Clave activa: 1
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> Te conteste en privado a esta misma pregunta. Supongo que no la has
> recibido.
>
> Te comentaba que si utilices DataControls no debes manejar los comandos
> directamente, y si los usas no incluyas entonces referencias al objeto
> DataSet.
>
> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>
> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>
> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>
> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
de
> Clipper:
>
> PRIVATE cVarZona
> ....
> SET FILTER TO Zona == cVarZona
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> > mensajes
> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
la
> > zona de filtrado
> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> > boton de
> > "buscar condiciones" se va al metodo siguiente:
> >
> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo( oCbZona)
> >
> > IF !oCbZona = "00.-"
> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> > ::oBrw:Refresh()
> >
> > RETURN Nil
> > la variable oCbZona es la del primer campo de la imagen zona,
> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> > en la del formulario que es la que e asignado cVarName
> > me podeis explicar mo hacer esto
> >
> >
> >
> >
> >
>
>
CLASS TForm1 FROM TForm
COMPONENT oDataSource
COMPONENT oDataSet
COMPONENT oBrw
COMPONENT oReBar1
COMPONENT oGrupoCaja1
COMPONENT oStatusBar1
COMPONENT oCbZona
COMPONENT oLabel1
COMPONENT oLabel2
COMPONENT oLabel3
COMPONENT oLabel4
COMPONENT oLabel5
COMPONENT oLabel6
COMPONENT oCbTipo
COMPONENT oEPoblacion
COMPONENT oMPrecioeuro
COMPONENT oMPreciopts
COMPONENT oBtnBmp1
COMPONENT oLabel7
COMPONENT oMPrecioeuro2
COMPONENT oMPreciopts2
COMPONENT oLabel8
COMPONENT oLabel9
PRIVATE oCbZona
PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
DATA aTags, oGrupoCaja1
METHOD CreateForm()
METHOD FormInitialize( oSender )
METHOD Filtrobase(oSender ,oGrupoCaja1)
METHOD SetTag( Value )
METHOD Filter()
METHOD AddNew()
METHOD Edit()
METHOD Delete()
METHOD Report()
METHOD BrwSeek( oSender, cSeek )
METHOD BrwChange( oSender, lBookMarkChanged )
ENDCLASS
#include "Form1.xfm"
//---------------------------------------------------------- ----------------
----
METHOD FormInitialize( oSender ) CLASS TForm1
LOCAL oSortMenu
LOCAL aTags
LOCAL nFor
set date italian
MENU ::oMenu
MENUITEM "&File"
MENU
MENUITEM "&Append"
MENUITEM "&Edit"
MENUITEM "&Delete"
SEPARATOR
MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
SEPARATOR
MENUITEM "&Exit" ACTION ::Close()
ENDMENU
MENUITEM "&Help"
MENU
MENUITEM "About..." ;
ACTION ShellAbout( Application:Handle, Application:cTitle,
;
"Copyright Xailer 2003-2004" )
ENDMENU
ENDMENU
oSortMenu := TMenu():Create( Self, .t. )
::aTags := ::oDataSet:GetTags()
::oDataSet:OrdSetFocus("")
FOR nFor := 1 to len( ::aTags )
WITH OBJECT TMenuItem():New( oSortMenu )
:cText := "Order by " + ::aTags[ nFor ]
:Cargo := nFor
:OnClick := {|o| ::nTag := o:Cargo }
:Create()
END
NEXT
WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
:lList := .t.
:lAutoSize := .t.
:Create()
::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
::nTag++ }, oSortMenu )
::nTag := 1
WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
Filter", {|| ::Filter() } )
:lChecked := .f.
END
:AddSeparator()
:AddButton( "", "BMP_FIRST",,, "First record", {|| ::oBrw:GoTop() } )
:AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
::oBrw:GoUp() } )
:AddButton( "", "BMP_NEXT",,, "Next record ", {|| ::oBrw:GoDown() } )
:AddButton( "", "BMP_LAST",,, "Last record", {|| ::oBrw:GoBottom() } )
:AddSeparator()
:AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
:AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
:AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
:AddSeparator()
:AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
:AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
END
WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
:oControl := ::oToolBar
:Create()
END
WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
:oBitmap := "lupa16"
:OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
:nMaxLength := 100
:Create()
END
WITH OBJECT TRebarBand():New( ::oRebar1 )
:cText := "Búsqueda:"
:oControl := ::oEdiBusqueda
:Create()
END
RETURN Nil
//---------------------------------------------------------- ----------------
----
METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
local variables := space(0)
local control := .f.
MsgInfo(oCbZona) //linea 150
IF !oCbZona = "00.-"
SET FILTER TO &("Zona == '" + oCbZona + "'")
MsgInfo( "filtrado realizado" )
end if
SET FILTER TO &VARIABLE
me da el error siguiente
***************************** Registro de errores
*****************************
Fecha: 01-09-05
Hora: 09:56:09
Memoria libre: 74328
Area actual: 1
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 0.99.4 Pre-release 4
Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Professional 5.01.2600
----------------------- Información detallada del
error -----------------------
Subsistema: BASE
Código de error: 1003
Estado: .F.
Descripción: Variable does not exist
Operación: OCBZONA
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TFORM1:FILTROBASE (150)
TBTNBMP:ONCLICK (0)
TBTNBMP:CLICK (98)
(b)XCONTROL (136)
TBTNBMP:COMMAND (0)
TGROUPBOX:WMCOMMAND (233)
RUNFORM (0)
TAPPLICATION:RUN (189)
TFORM0:ENTRAR (47)
TBUTTON:ONCLICK (0)
TBUTTON:CLICK (98)
TBUTTON:WMKEYDOWN (158)
RUNFORM (0)
TAPPLICATION:RUN (189)
MAIN (16)
------------------ Información detallada de áreas de
trabajo ------------------
Area: 1
Alias: PROPIEDA
Registro: 3
Filtro:
Relación:
Orden del índice: 1
Clave activa: 1
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> Te conteste en privado a esta misma pregunta. Supongo que no la has
> recibido.
>
> Te comentaba que si utilices DataControls no debes manejar los comandos
> directamente, y si los usas no incluyas entonces referencias al objeto
> DataSet.
>
> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>
> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>
> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>
> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
de
> Clipper:
>
> PRIVATE cVarZona
> ....
> SET FILTER TO Zona == cVarZona
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> > mensajes
> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
la
> > zona de filtrado
> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso el
> > boton de
> > "buscar condiciones" se va al metodo siguiente:
> >
> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo( oCbZona)
> >
> > IF !oCbZona = "00.-"
> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> > ::oBrw:Refresh()
> >
> > RETURN Nil
> > la variable oCbZona es la del primer campo de la imagen zona,
> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> > en la del formulario que es la que e asignado cVarName
> > me podeis explicar mo hacer esto
> >
> >
> >
> >
> >
>
>
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
necesito hacer un filtro como se hace
Pilo,
El error es claro:
> Descripción: Variable does not exist
> Operación: OCBZONA
No existe la variable OCBZONA o ya no está en ámbito. Dicha variable la
estás utilizando en una expresión SET FILTER, por lo tanto NECESARIAMENTE
debe ser creada como PUBLIC o PRIVATE, y si es PRIVATE, mucho OJO si queda
fuera de ámbito, que es muy normal que ocurra.
Un saludo,
"PILO" <srmpilo@hotmail.com> escribió en el mensaje
news:4316b4c8$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Haciendo la siguiente prueba en programación
>
> CLASS TForm1 FROM TForm
>
> COMPONENT oDataSource
> COMPONENT oDataSet
> COMPONENT oBrw
> COMPONENT oReBar1
> COMPONENT oGrupoCaja1
> COMPONENT oStatusBar1
> COMPONENT oCbZona
> COMPONENT oLabel1
> COMPONENT oLabel2
> COMPONENT oLabel3
> COMPONENT oLabel4
> COMPONENT oLabel5
> COMPONENT oLabel6
> COMPONENT oCbTipo
> COMPONENT oEPoblacion
> COMPONENT oMPrecioeuro
> COMPONENT oMPreciopts
> COMPONENT oBtnBmp1
> COMPONENT oLabel7
> COMPONENT oMPrecioeuro2
> COMPONENT oMPreciopts2
> COMPONENT oLabel8
> COMPONENT oLabel9
>
> PRIVATE oCbZona
>
> PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
>
> DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
> DATA aTags, oGrupoCaja1
>
> METHOD CreateForm()
> METHOD FormInitialize( oSender )
> METHOD Filtrobase(oSender ,oGrupoCaja1)
> METHOD SetTag( Value )
> METHOD Filter()
> METHOD AddNew()
> METHOD Edit()
> METHOD Delete()
> METHOD Report()
> METHOD BrwSeek( oSender, cSeek )
> METHOD BrwChange( oSender, lBookMarkChanged )
>
> ENDCLASS
>
> #include "Form1.xfm"
> //---------------------------------------------------------- ----------------
> ----
>
> METHOD FormInitialize( oSender ) CLASS TForm1
>
> LOCAL oSortMenu
> LOCAL aTags
> LOCAL nFor
>
> set date italian
>
> MENU ::oMenu
> MENUITEM "&File"
> MENU
> MENUITEM "&Append"
> MENUITEM "&Edit"
> MENUITEM "&Delete"
> SEPARATOR
> MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
> SEPARATOR
> MENUITEM "&Exit" ACTION ::Close()
> ENDMENU
> MENUITEM "&Help"
> MENU
> MENUITEM "About..." ;
> ACTION ShellAbout( Application:Handle,
> Application:cTitle,
> ;
> "Copyright Xailer 2003-2004" )
> ENDMENU
> ENDMENU
>
> oSortMenu := TMenu():Create( Self, .t. )
>
> ::aTags := ::oDataSet:GetTags()
> ::oDataSet:OrdSetFocus("")
>
> FOR nFor := 1 to len( ::aTags )
> WITH OBJECT TMenuItem():New( oSortMenu )
> :cText := "Order by " + ::aTags[ nFor ]
> :Cargo := nFor
> :OnClick := {|o| ::nTag := o:Cargo }
> :Create()
> END
> NEXT
>
> WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
> :lList := .t.
> :lAutoSize := .t.
> :Create()
> ::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
> ::nTag++ }, oSortMenu )
> ::nTag := 1
> WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
> Filter", {|| ::Filter() } )
> :lChecked := .f.
> END
> :AddSeparator()
> :AddButton( "", "BMP_FIRST",,, "First record", {|| ::oBrw:GoTop() } )
> :AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
> ::oBrw:GoUp() } )
> :AddButton( "", "BMP_NEXT",,, "Next record ", {|| ::oBrw:GoDown() } )
> :AddButton( "", "BMP_LAST",,, "Last record", {||
> ::oBrw:GoBottom() } )
> :AddSeparator()
> :AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
> :AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
> :AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
> :AddSeparator()
> :AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
> :AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
> END
>
> WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
> :oControl := ::oToolBar
> :Create()
> END
>
> WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
> :oBitmap := "lupa16"
> :OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
> :nMaxLength := 100
> :Create()
> END
>
> WITH OBJECT TRebarBand():New( ::oRebar1 )
> :cText := "Búsqueda:"
> :oControl := ::oEdiBusqueda
> :Create()
> END
>
> RETURN Nil
>
> //---------------------------------------------------------- ----------------
> ----
> METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
> local variables := space(0)
> local control := .f.
> MsgInfo(oCbZona) //linea 150
>
>
> IF !oCbZona = "00.-"
> SET FILTER TO &("Zona == '" + oCbZona + "'")
> MsgInfo( "filtrado realizado" )
> end if
> SET FILTER TO &VARIABLE
>
>
> me da el error siguiente
> ***************************** Registro de errores
> *****************************
>
> Fecha: 01-09-05
> Hora: 09:56:09
> Memoria libre: 74328
> Area actual: 1
>
> ------------------------- Información del
> compilador --------------------------
>
> Versión Xailer: Xailer 0.99.4 Pre-release 4
> Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
> Compilador C/C++: Borland C++ 5.5.1
> Plataforma: Windows XP Professional 5.01.2600
>
> ----------------------- Información detallada del
> error -----------------------
>
> Subsistema: BASE
> Código de error: 1003
> Estado: .F.
> Descripción: Variable does not exist
> Operación: OCBZONA
> Argumentos:
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TFORM1:FILTROBASE (150)
> TBTNBMP:ONCLICK (0)
> TBTNBMP:CLICK (98)
> (b)XCONTROL (136)
> TBTNBMP:COMMAND (0)
> TGROUPBOX:WMCOMMAND (233)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> TFORM0:ENTRAR (47)
> TBUTTON:ONCLICK (0)
> TBUTTON:CLICK (98)
> TBUTTON:WMKEYDOWN (158)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> MAIN (16)
>
> ------------------ Información detallada de áreas de
> trabajo ------------------
>
> Area: 1
> Alias: PROPIEDA
> Registro: 3
> Filtro:
> Relación:
> Orden del índice: 1
> Clave activa: 1
>
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Pilo,
>>
>> Te conteste en privado a esta misma pregunta. Supongo que no la has
>> recibido.
>>
>> Te comentaba que si utilices DataControls no debes manejar los comandos
>> directamente, y si los usas no incluyas entonces referencias al objeto
>> DataSet.
>>
>> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>>
>> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>>
>> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>>
>> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
> de
>> Clipper:
>>
>> PRIVATE cVarZona
>> ....
>> SET FILTER TO Zona == cVarZona
>>
>> Un saludo,
>>
>> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
>> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
>> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
>> > mensajes
>> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
> la
>> > zona de filtrado
>> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso
>> > el
>> > boton de
>> > "buscar condiciones" se va al metodo siguiente:
>> >
>> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
>> > local variables := space(0)
>> > local control := .f.
>> > MsgInfo( oCbZona)
>> >
>> > IF !oCbZona = "00.-"
>> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
>> > MsgInfo( "filtrado realizado" )
>> > end if
>> > SET FILTER TO &VARIABLE
>> >
>> > ::oBrw:Refresh()
>> >
>> > RETURN Nil
>> > la variable oCbZona es la del primer campo de la imagen zona,
>> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
>> > en la del formulario que es la que e asignado cVarName
>> > me podeis explicar mo hacer esto
>> >
>> >
>> >
>> >
>> >
>>
>>
>
>
El error es claro:
> Descripción: Variable does not exist
> Operación: OCBZONA
No existe la variable OCBZONA o ya no está en ámbito. Dicha variable la
estás utilizando en una expresión SET FILTER, por lo tanto NECESARIAMENTE
debe ser creada como PUBLIC o PRIVATE, y si es PRIVATE, mucho OJO si queda
fuera de ámbito, que es muy normal que ocurra.
Un saludo,
"PILO" <srmpilo@hotmail.com> escribió en el mensaje
news:4316b4c8$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Haciendo la siguiente prueba en programación
>
> CLASS TForm1 FROM TForm
>
> COMPONENT oDataSource
> COMPONENT oDataSet
> COMPONENT oBrw
> COMPONENT oReBar1
> COMPONENT oGrupoCaja1
> COMPONENT oStatusBar1
> COMPONENT oCbZona
> COMPONENT oLabel1
> COMPONENT oLabel2
> COMPONENT oLabel3
> COMPONENT oLabel4
> COMPONENT oLabel5
> COMPONENT oLabel6
> COMPONENT oCbTipo
> COMPONENT oEPoblacion
> COMPONENT oMPrecioeuro
> COMPONENT oMPreciopts
> COMPONENT oBtnBmp1
> COMPONENT oLabel7
> COMPONENT oMPrecioeuro2
> COMPONENT oMPreciopts2
> COMPONENT oLabel8
> COMPONENT oLabel9
>
> PRIVATE oCbZona
>
> PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
>
> DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
> DATA aTags, oGrupoCaja1
>
> METHOD CreateForm()
> METHOD FormInitialize( oSender )
> METHOD Filtrobase(oSender ,oGrupoCaja1)
> METHOD SetTag( Value )
> METHOD Filter()
> METHOD AddNew()
> METHOD Edit()
> METHOD Delete()
> METHOD Report()
> METHOD BrwSeek( oSender, cSeek )
> METHOD BrwChange( oSender, lBookMarkChanged )
>
> ENDCLASS
>
> #include "Form1.xfm"
> //---------------------------------------------------------- ----------------
> ----
>
> METHOD FormInitialize( oSender ) CLASS TForm1
>
> LOCAL oSortMenu
> LOCAL aTags
> LOCAL nFor
>
> set date italian
>
> MENU ::oMenu
> MENUITEM "&File"
> MENU
> MENUITEM "&Append"
> MENUITEM "&Edit"
> MENUITEM "&Delete"
> SEPARATOR
> MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
> SEPARATOR
> MENUITEM "&Exit" ACTION ::Close()
> ENDMENU
> MENUITEM "&Help"
> MENU
> MENUITEM "About..." ;
> ACTION ShellAbout( Application:Handle,
> Application:cTitle,
> ;
> "Copyright Xailer 2003-2004" )
> ENDMENU
> ENDMENU
>
> oSortMenu := TMenu():Create( Self, .t. )
>
> ::aTags := ::oDataSet:GetTags()
> ::oDataSet:OrdSetFocus("")
>
> FOR nFor := 1 to len( ::aTags )
> WITH OBJECT TMenuItem():New( oSortMenu )
> :cText := "Order by " + ::aTags[ nFor ]
> :Cargo := nFor
> :OnClick := {|o| ::nTag := o:Cargo }
> :Create()
> END
> NEXT
>
> WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
> :lList := .t.
> :lAutoSize := .t.
> :Create()
> ::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
> ::nTag++ }, oSortMenu )
> ::nTag := 1
> WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
> Filter", {|| ::Filter() } )
> :lChecked := .f.
> END
> :AddSeparator()
> :AddButton( "", "BMP_FIRST",,, "First record", {|| ::oBrw:GoTop() } )
> :AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
> ::oBrw:GoUp() } )
> :AddButton( "", "BMP_NEXT",,, "Next record ", {|| ::oBrw:GoDown() } )
> :AddButton( "", "BMP_LAST",,, "Last record", {||
> ::oBrw:GoBottom() } )
> :AddSeparator()
> :AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
> :AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
> :AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
> :AddSeparator()
> :AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
> :AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
> END
>
> WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
> :oControl := ::oToolBar
> :Create()
> END
>
> WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
> :oBitmap := "lupa16"
> :OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
> :nMaxLength := 100
> :Create()
> END
>
> WITH OBJECT TRebarBand():New( ::oRebar1 )
> :cText := "Búsqueda:"
> :oControl := ::oEdiBusqueda
> :Create()
> END
>
> RETURN Nil
>
> //---------------------------------------------------------- ----------------
> ----
> METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
> local variables := space(0)
> local control := .f.
> MsgInfo(oCbZona) //linea 150
>
>
> IF !oCbZona = "00.-"
> SET FILTER TO &("Zona == '" + oCbZona + "'")
> MsgInfo( "filtrado realizado" )
> end if
> SET FILTER TO &VARIABLE
>
>
> me da el error siguiente
> ***************************** Registro de errores
> *****************************
>
> Fecha: 01-09-05
> Hora: 09:56:09
> Memoria libre: 74328
> Area actual: 1
>
> ------------------------- Información del
> compilador --------------------------
>
> Versión Xailer: Xailer 0.99.4 Pre-release 4
> Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
> Compilador C/C++: Borland C++ 5.5.1
> Plataforma: Windows XP Professional 5.01.2600
>
> ----------------------- Información detallada del
> error -----------------------
>
> Subsistema: BASE
> Código de error: 1003
> Estado: .F.
> Descripción: Variable does not exist
> Operación: OCBZONA
> Argumentos:
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TFORM1:FILTROBASE (150)
> TBTNBMP:ONCLICK (0)
> TBTNBMP:CLICK (98)
> (b)XCONTROL (136)
> TBTNBMP:COMMAND (0)
> TGROUPBOX:WMCOMMAND (233)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> TFORM0:ENTRAR (47)
> TBUTTON:ONCLICK (0)
> TBUTTON:CLICK (98)
> TBUTTON:WMKEYDOWN (158)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> MAIN (16)
>
> ------------------ Información detallada de áreas de
> trabajo ------------------
>
> Area: 1
> Alias: PROPIEDA
> Registro: 3
> Filtro:
> Relación:
> Orden del índice: 1
> Clave activa: 1
>
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Pilo,
>>
>> Te conteste en privado a esta misma pregunta. Supongo que no la has
>> recibido.
>>
>> Te comentaba que si utilices DataControls no debes manejar los comandos
>> directamente, y si los usas no incluyas entonces referencias al objeto
>> DataSet.
>>
>> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
>>
>> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
>>
>> Puedes sustutuir si lo prefieres los corchetes por comillas simples
>>
>> O por el contrario olvidarte del DataSet y utilizar el comando SET FILTER
> de
>> Clipper:
>>
>> PRIVATE cVarZona
>> ....
>> SET FILTER TO Zona == cVarZona
>>
>> Un saludo,
>>
>> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
>> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
>> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
>> > mensajes
>> > Necesito hacer un filtro como veis en la pantalla adjunta es decir, en
> la
>> > zona de filtrado
>> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso
>> > el
>> > boton de
>> > "buscar condiciones" se va al metodo siguiente:
>> >
>> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
>> > local variables := space(0)
>> > local control := .f.
>> > MsgInfo( oCbZona)
>> >
>> > IF !oCbZona = "00.-"
>> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
>> > MsgInfo( "filtrado realizado" )
>> > end if
>> > SET FILTER TO &VARIABLE
>> >
>> > ::oBrw:Refresh()
>> >
>> > RETURN Nil
>> > la variable oCbZona es la del primer campo de la imagen zona,
>> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
>> > en la del formulario que es la que e asignado cVarName
>> > me podeis explicar mo hacer esto
>> >
>> >
>> >
>> >
>> >
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
necesito hacer un filtro como se hace
COMPONENT oCbZona
Esta es la variable que utilizo y esta en cVarName de tcombobox, y es la que
quiero que el valor que tenga cuando pulso
el bonto que tengo dentro del grupo, la pueda filtrar para hacer filtros con
mas de una condicion,
Eso es lo que necesito, ya que no tengo ni idea de como hacerlo me puedes
poner un ejemplo como puedo utiizar esa variable en
otros metodos o eventos, del control correspondiente, con un ejemplo ya
organizo todos
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:4316b627$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> El error es claro:
>
> > Descripción: Variable does not exist
> > Operación: OCBZONA
>
> No existe la variable OCBZONA o ya no está en ámbito. Dicha variable la
> estás utilizando en una expresión SET FILTER, por lo tanto NECESARIAMENTE
> debe ser creada como PUBLIC o PRIVATE, y si es PRIVATE, mucho OJO si queda
> fuera de ámbito, que es muy normal que ocurra.
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:4316b4c8$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> > Haciendo la siguiente prueba en programación
> >
> > CLASS TForm1 FROM TForm
> >
> > COMPONENT oDataSource
> > COMPONENT oDataSet
> > COMPONENT oBrw
> > COMPONENT oReBar1
> > COMPONENT oGrupoCaja1
> > COMPONENT oStatusBar1
> > COMPONENT oCbZona
> > COMPONENT oLabel1
> > COMPONENT oLabel2
> > COMPONENT oLabel3
> > COMPONENT oLabel4
> > COMPONENT oLabel5
> > COMPONENT oLabel6
> > COMPONENT oCbTipo
> > COMPONENT oEPoblacion
> > COMPONENT oMPrecioeuro
> > COMPONENT oMPreciopts
> > COMPONENT oBtnBmp1
> > COMPONENT oLabel7
> > COMPONENT oMPrecioeuro2
> > COMPONENT oMPreciopts2
> > COMPONENT oLabel8
> > COMPONENT oLabel9
> >
> > PRIVATE oCbZona
> >
> > PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
> >
> > DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
> > DATA aTags, oGrupoCaja1
> >
> > METHOD CreateForm()
> > METHOD FormInitialize( oSender )
> > METHOD Filtrobase(oSender ,oGrupoCaja1)
> > METHOD SetTag( Value )
> > METHOD Filter()
> > METHOD AddNew()
> > METHOD Edit()
> > METHOD Delete()
> > METHOD Report()
> > METHOD BrwSeek( oSender, cSeek )
> > METHOD BrwChange( oSender, lBookMarkChanged )
> >
> > ENDCLASS
> >
> > #include "Form1.xfm"
> >
//---------------------------------------------------------- ----------------
> > ----
> >
> > METHOD FormInitialize( oSender ) CLASS TForm1
> >
> > LOCAL oSortMenu
> > LOCAL aTags
> > LOCAL nFor
> >
> > set date italian
> >
> > MENU ::oMenu
> > MENUITEM "&File"
> > MENU
> > MENUITEM "&Append"
> > MENUITEM "&Edit"
> > MENUITEM "&Delete"
> > SEPARATOR
> > MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
> > SEPARATOR
> > MENUITEM "&Exit" ACTION ::Close()
> > ENDMENU
> > MENUITEM "&Help"
> > MENU
> > MENUITEM "About..." ;
> > ACTION ShellAbout( Application:Handle,
> > Application:cTitle,
> > ;
> > "Copyright Xailer 2003-2004" )
> > ENDMENU
> > ENDMENU
> >
> > oSortMenu := TMenu():Create( Self, .t. )
> >
> > ::aTags := ::oDataSet:GetTags()
> > ::oDataSet:OrdSetFocus("")
> >
> > FOR nFor := 1 to len( ::aTags )
> > WITH OBJECT TMenuItem():New( oSortMenu )
> > :cText := "Order by " + ::aTags[ nFor ]
> > :Cargo := nFor
> > :OnClick := {|o| ::nTag := o:Cargo }
> > :Create()
> > END
> > NEXT
> >
> > WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
> > :lList := .t.
> > :lAutoSize := .t.
> > :Create()
> > ::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
> > ::nTag++ }, oSortMenu )
> > ::nTag := 1
> > WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
> > Filter", {|| ::Filter() } )
> > :lChecked := .f.
> > END
> > :AddSeparator()
> > :AddButton( "", "BMP_FIRST",,, "First record", {||
::oBrw:GoTop() } )
> > :AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
> > ::oBrw:GoUp() } )
> > :AddButton( "", "BMP_NEXT",,, "Next record ", {||
::oBrw:GoDown() } )
> > :AddButton( "", "BMP_LAST",,, "Last record", {||
> > ::oBrw:GoBottom() } )
> > :AddSeparator()
> > :AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
> > :AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
> > :AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
> > :AddSeparator()
> > :AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
> > :AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
> > END
> >
> > WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
> > :oControl := ::oToolBar
> > :Create()
> > END
> >
> > WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
> > :oBitmap := "lupa16"
> > :OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
> > :nMaxLength := 100
> > :Create()
> > END
> >
> > WITH OBJECT TRebarBand():New( ::oRebar1 )
> > :cText := "Búsqueda:"
> > :oControl := ::oEdiBusqueda
> > :Create()
> > END
> >
> > RETURN Nil
> >
> >
//---------------------------------------------------------- ----------------
> > ----
> > METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo(oCbZona) //linea 150
> >
> >
> > IF !oCbZona = "00.-"
> > SET FILTER TO &("Zona == '" + oCbZona + "'")
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> >
> > me da el error siguiente
> > ***************************** Registro de errores
> > *****************************
> >
> > Fecha: 01-09-05
> > Hora: 09:56:09
> > Memoria libre: 74328
> > Area actual: 1
> >
> > ------------------------- Información del
> > compilador --------------------------
> >
> > Versión Xailer: Xailer 0.99.4 Pre-release 4
> > Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
> > Compilador C/C++: Borland C++ 5.5.1
> > Plataforma: Windows XP Professional 5.01.2600
> >
> > ----------------------- Información detallada del
> > error -----------------------
> >
> > Subsistema: BASE
> > Código de error: 1003
> > Estado: .F.
> > Descripción: Variable does not exist
> > Operación: OCBZONA
> > Argumentos:
> > Fichero:
> > Código error SO: 0
> >
> > Pila de llamadas:
> > TFORM1:FILTROBASE (150)
> > TBTNBMP:ONCLICK (0)
> > TBTNBMP:CLICK (98)
> > (b)XCONTROL (136)
> > TBTNBMP:COMMAND (0)
> > TGROUPBOX:WMCOMMAND (233)
> > RUNFORM (0)
> > TAPPLICATION:RUN (189)
> > TFORM0:ENTRAR (47)
> > TBUTTON:ONCLICK (0)
> > TBUTTON:CLICK (98)
> > TBUTTON:WMKEYDOWN (158)
> > RUNFORM (0)
> > TAPPLICATION:RUN (189)
> > MAIN (16)
> >
> > ------------------ Información detallada de áreas de
> > trabajo ------------------
> >
> > Area: 1
> > Alias: PROPIEDA
> > Registro: 3
> > Filtro:
> > Relación:
> > Orden del índice: 1
> > Clave activa: 1
> >
> >
> >
> > "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
mensaje
> > news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> >> Pilo,
> >>
> >> Te conteste en privado a esta misma pregunta. Supongo que no la has
> >> recibido.
> >>
> >> Te comentaba que si utilices DataControls no debes manejar los comandos
> >> directamente, y si los usas no incluyas entonces referencias al objeto
> >> DataSet.
> >>
> >> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
> >>
> >> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
> >>
> >> Puedes sustutuir si lo prefieres los corchetes por comillas simples
> >>
> >> O por el contrario olvidarte del DataSet y utilizar el comando SET
FILTER
> > de
> >> Clipper:
> >>
> >> PRIVATE cVarZona
> >> ....
> >> SET FILTER TO Zona == cVarZona
> >>
> >> Un saludo,
> >>
> >> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> >> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> >> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> >> > mensajes
> >> > Necesito hacer un filtro como veis en la pantalla adjunta es decir,
en
> > la
> >> > zona de filtrado
> >> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso
> >> > el
> >> > boton de
> >> > "buscar condiciones" se va al metodo siguiente:
> >> >
> >> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> >> > local variables := space(0)
> >> > local control := .f.
> >> > MsgInfo( oCbZona)
> >> >
> >> > IF !oCbZona = "00.-"
> >> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> >> > MsgInfo( "filtrado realizado" )
> >> > end if
> >> > SET FILTER TO &VARIABLE
> >> >
> >> > ::oBrw:Refresh()
> >> >
> >> > RETURN Nil
> >> > la variable oCbZona es la del primer campo de la imagen zona,
> >> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> >> > en la del formulario que es la que e asignado cVarName
> >> > me podeis explicar mo hacer esto
> >> >
> >> >
> >> >
> >> >
> >> >
> >>
> >>
> >
> >
>
>
Esta es la variable que utilizo y esta en cVarName de tcombobox, y es la que
quiero que el valor que tenga cuando pulso
el bonto que tengo dentro del grupo, la pueda filtrar para hacer filtros con
mas de una condicion,
Eso es lo que necesito, ya que no tengo ni idea de como hacerlo me puedes
poner un ejemplo como puedo utiizar esa variable en
otros metodos o eventos, del control correspondiente, con un ejemplo ya
organizo todos
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:4316b627$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Pilo,
>
> El error es claro:
>
> > Descripción: Variable does not exist
> > Operación: OCBZONA
>
> No existe la variable OCBZONA o ya no está en ámbito. Dicha variable la
> estás utilizando en una expresión SET FILTER, por lo tanto NECESARIAMENTE
> debe ser creada como PUBLIC o PRIVATE, y si es PRIVATE, mucho OJO si queda
> fuera de ámbito, que es muy normal que ocurra.
>
> Un saludo,
>
> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> news:4316b4c8$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> > Haciendo la siguiente prueba en programación
> >
> > CLASS TForm1 FROM TForm
> >
> > COMPONENT oDataSource
> > COMPONENT oDataSet
> > COMPONENT oBrw
> > COMPONENT oReBar1
> > COMPONENT oGrupoCaja1
> > COMPONENT oStatusBar1
> > COMPONENT oCbZona
> > COMPONENT oLabel1
> > COMPONENT oLabel2
> > COMPONENT oLabel3
> > COMPONENT oLabel4
> > COMPONENT oLabel5
> > COMPONENT oLabel6
> > COMPONENT oCbTipo
> > COMPONENT oEPoblacion
> > COMPONENT oMPrecioeuro
> > COMPONENT oMPreciopts
> > COMPONENT oBtnBmp1
> > COMPONENT oLabel7
> > COMPONENT oMPrecioeuro2
> > COMPONENT oMPreciopts2
> > COMPONENT oLabel8
> > COMPONENT oLabel9
> >
> > PRIVATE oCbZona
> >
> > PROPERTY nTag INIT 1 WRITE INLINE ::SetTag( Value )
> >
> > DATA oToolBar, oRebarBand, oTagMenu, oTagBtn, oFilterBtn, oEdiBusqueda
> > DATA aTags, oGrupoCaja1
> >
> > METHOD CreateForm()
> > METHOD FormInitialize( oSender )
> > METHOD Filtrobase(oSender ,oGrupoCaja1)
> > METHOD SetTag( Value )
> > METHOD Filter()
> > METHOD AddNew()
> > METHOD Edit()
> > METHOD Delete()
> > METHOD Report()
> > METHOD BrwSeek( oSender, cSeek )
> > METHOD BrwChange( oSender, lBookMarkChanged )
> >
> > ENDCLASS
> >
> > #include "Form1.xfm"
> >
//---------------------------------------------------------- ----------------
> > ----
> >
> > METHOD FormInitialize( oSender ) CLASS TForm1
> >
> > LOCAL oSortMenu
> > LOCAL aTags
> > LOCAL nFor
> >
> > set date italian
> >
> > MENU ::oMenu
> > MENUITEM "&File"
> > MENU
> > MENUITEM "&Append"
> > MENUITEM "&Edit"
> > MENUITEM "&Delete"
> > SEPARATOR
> > MENUITEM "&Printer configuration" ACTION Printer:Setup( Self )
> > SEPARATOR
> > MENUITEM "&Exit" ACTION ::Close()
> > ENDMENU
> > MENUITEM "&Help"
> > MENU
> > MENUITEM "About..." ;
> > ACTION ShellAbout( Application:Handle,
> > Application:cTitle,
> > ;
> > "Copyright Xailer 2003-2004" )
> > ENDMENU
> > ENDMENU
> >
> > oSortMenu := TMenu():Create( Self, .t. )
> >
> > ::aTags := ::oDataSet:GetTags()
> > ::oDataSet:OrdSetFocus("")
> >
> > FOR nFor := 1 to len( ::aTags )
> > WITH OBJECT TMenuItem():New( oSortMenu )
> > :cText := "Order by " + ::aTags[ nFor ]
> > :Cargo := nFor
> > :OnClick := {|o| ::nTag := o:Cargo }
> > :Create()
> > END
> > NEXT
> >
> > WITH OBJECT ::oToolBar := TToolBar():New( ::oRebar1 )
> > :lList := .t.
> > :lAutoSize := .t.
> > :Create()
> > ::oTagBtn := :AddButton( "", "BMP_SORT",,, "Set Order", {||
> > ::nTag++ }, oSortMenu )
> > ::nTag := 1
> > WITH OBJECT ::oFilterBtn := :AddButton( "", "BMP_FILTER",,, "Set
> > Filter", {|| ::Filter() } )
> > :lChecked := .f.
> > END
> > :AddSeparator()
> > :AddButton( "", "BMP_FIRST",,, "First record", {||
::oBrw:GoTop() } )
> > :AddButton( "", "BMP_PREVIOUS",,, "Previous record", {||
> > ::oBrw:GoUp() } )
> > :AddButton( "", "BMP_NEXT",,, "Next record ", {||
::oBrw:GoDown() } )
> > :AddButton( "", "BMP_LAST",,, "Last record", {||
> > ::oBrw:GoBottom() } )
> > :AddSeparator()
> > :AddButton( "", "BMP_APPEND",,, "Append", {|| ::AddNew() } )
> > :AddButton( "", "BMP_EDIT",,, "Edit", {|| ::Edit() } )
> > :AddButton( "", "BMP_DELETE",,, "Delete", {|| ::Delete() } )
> > :AddSeparator()
> > :AddButton( "", "XA_BMP_PRINTER",,, "Print", {|| ::Report() } )
> > :AddButton( "", "XA_BMP_EXIT",,, "Exit", {|| ::Close() } )
> > END
> >
> > WITH OBJECT ::oRebarBand := TRebarBand():New( ::oRebar1 )
> > :oControl := ::oToolBar
> > :Create()
> > END
> >
> > WITH OBJECT ::oEdiBusqueda := TEditBtn():New( ::oRebar1 )
> > :oBitmap := "lupa16"
> > :OnBtnClick := {|o| ::oBrw:Seek( o:Value ), nil }
> > :nMaxLength := 100
> > :Create()
> > END
> >
> > WITH OBJECT TRebarBand():New( ::oRebar1 )
> > :cText := "Búsqueda:"
> > :oControl := ::oEdiBusqueda
> > :Create()
> > END
> >
> > RETURN Nil
> >
> >
//---------------------------------------------------------- ----------------
> > ----
> > METHOD filtrobase( oSender, oGrupoCaja1) CLASS TForm1
> > local variables := space(0)
> > local control := .f.
> > MsgInfo(oCbZona) //linea 150
> >
> >
> > IF !oCbZona = "00.-"
> > SET FILTER TO &("Zona == '" + oCbZona + "'")
> > MsgInfo( "filtrado realizado" )
> > end if
> > SET FILTER TO &VARIABLE
> >
> >
> > me da el error siguiente
> > ***************************** Registro de errores
> > *****************************
> >
> > Fecha: 01-09-05
> > Hora: 09:56:09
> > Memoria libre: 74328
> > Area actual: 1
> >
> > ------------------------- Información del
> > compilador --------------------------
> >
> > Versión Xailer: Xailer 0.99.4 Pre-release 4
> > Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
> > Compilador C/C++: Borland C++ 5.5.1
> > Plataforma: Windows XP Professional 5.01.2600
> >
> > ----------------------- Información detallada del
> > error -----------------------
> >
> > Subsistema: BASE
> > Código de error: 1003
> > Estado: .F.
> > Descripción: Variable does not exist
> > Operación: OCBZONA
> > Argumentos:
> > Fichero:
> > Código error SO: 0
> >
> > Pila de llamadas:
> > TFORM1:FILTROBASE (150)
> > TBTNBMP:ONCLICK (0)
> > TBTNBMP:CLICK (98)
> > (b)XCONTROL (136)
> > TBTNBMP:COMMAND (0)
> > TGROUPBOX:WMCOMMAND (233)
> > RUNFORM (0)
> > TAPPLICATION:RUN (189)
> > TFORM0:ENTRAR (47)
> > TBUTTON:ONCLICK (0)
> > TBUTTON:CLICK (98)
> > TBUTTON:WMKEYDOWN (158)
> > RUNFORM (0)
> > TAPPLICATION:RUN (189)
> > MAIN (16)
> >
> > ------------------ Información detallada de áreas de
> > trabajo ------------------
> >
> > Area: 1
> > Alias: PROPIEDA
> > Registro: 3
> > Filtro:
> > Relación:
> > Orden del índice: 1
> > Clave activa: 1
> >
> >
> >
> > "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
mensaje
> > news:43159e4e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> >> Pilo,
> >>
> >> Te conteste en privado a esta misma pregunta. Supongo que no la has
> >> recibido.
> >>
> >> Te comentaba que si utilices DataControls no debes manejar los comandos
> >> directamente, y si los usas no incluyas entonces referencias al objeto
> >> DataSet.
> >>
> >> Me explico, puedes hacer que el DataSet haga completamente el fitrado:
> >>
> >> ::oDataSet:cFilter := "ZONA == [" + cVarZona + "]"
> >>
> >> Puedes sustutuir si lo prefieres los corchetes por comillas simples
> >>
> >> O por el contrario olvidarte del DataSet y utilizar el comando SET
FILTER
> > de
> >> Clipper:
> >>
> >> PRIVATE cVarZona
> >> ....
> >> SET FILTER TO Zona == cVarZona
> >>
> >> Un saludo,
> >>
> >> "PILO" <srmpilo@hotmail.com> escribió en el mensaje
> >> news:[email=431598d8@ozsrvnegro.ozlan.local...]431598d8@ozsrvnegro.ozlan.local...[/email]
> >> > Hola al grupo, soy nuevo en esto y estoy perdido, como veis en los
> >> > mensajes
> >> > Necesito hacer un filtro como veis en la pantalla adjunta es decir,
en
> > la
> >> > zona de filtrado
> >> > hay una serie de campos que dependiendo de lo que pongo, cuando pulso
> >> > el
> >> > boton de
> >> > "buscar condiciones" se va al metodo siguiente:
> >> >
> >> > METHOD filtrobase( oSender, oCbZona) CLASS TForm1
> >> > local variables := space(0)
> >> > local control := .f.
> >> > MsgInfo( oCbZona)
> >> >
> >> > IF !oCbZona = "00.-"
> >> > VARIABLES := "::oDataSet:ZONA = "+ oCbZona
> >> > MsgInfo( "filtrado realizado" )
> >> > end if
> >> > SET FILTER TO &VARIABLE
> >> >
> >> > ::oBrw:Refresh()
> >> >
> >> > RETURN Nil
> >> > la variable oCbZona es la del primer campo de la imagen zona,
> >> > cuando lo muestro me da un nulo y quiero que sea la que esta arriba
> >> > en la del formulario que es la que e asignado cVarName
> >> > me podeis explicar mo hacer esto
> >> >
> >> >
> >> >
> >> >
> >> >
> >>
> >>
> >
> >
>
>