Gracias José.
Utilizo VFP9SP1 y mi clase la hice hace tiempo con VFP8. El cursorfill siempre 
devolvió .T. y el depurador me indicaba que pasaba por el beforecursorfill, 
pero devolvía un cursor sin filtrar, ordenar o agrupar. Extrañísimo!! Lo más 
extraño es la solución que encontré. Construí nuevamente la clase, idéntica a 
la anterior pero usando el VFP9 y milagro, funcionó!!!!!! Así que agradezco tu 
ayuda y lamento no tener idea de cuál era el problema, quizá el vcx aunque a la 
nueva clase la guardo en el mismo.

Claudio López
  ----- Original Message ----- 
  From: José Paez 
  To: gufa List Member 
  Sent: Monday, March 26, 2007 8:45 AM
  Subject: [gufa] Vista en SQL


  Hola Claudio

  Hummm, que extraño...

  [1] La version del VFP que estás usando tiene el Service Pack?

  [2] Que te devuelve cuando ejecutas CursorFill() ?

      Si es T. "y trae un cursor sin filtrar, sin ordenar..." 

          Probá lo siguiente, y segui paso a paso para ver que hace en el 
evento BeforeCursorFill

              Set Step On
              llRetVal = CursorFill()

      Si es F. "y no trae un cursor" 
      
          Probá ver que error ocurrio

              Set Step On
              llRetVal = CursorFill()

              Aerror( laErrors )        && <-- Luego inspecciona los errores el 
array laErrors

          
  [3] Comentame si descubriste el problema, si no es así te envio una copia de 
mi clase. ( Esta en VFP9 ).


  Saludos

  José Paez
  Córdoba - Argentina                        

          

    ----- Original Message ----- 
    From: Claudio Alberto López 
    To: gufa List Member 
    Sent: Friday, March 23, 2007 5:18 PM
    Subject: [gufa] Vista en SQL


    Que tal José. 
    Alguna vez intenté implementar una solución idéntica a la tuya para filtrar 
mi clase personalizada de CA, pero nunca conseguí el resultado esperado 
trabajando sobre el parámetro cSelectCmd del evento BeforeCursorFill. Lo 
solucione agregando una propiedad a mi CA donde guardo el valor de la propiedad 
SelectCmd para después agregarle el where a la misma y llamar al CursorFill.
    Ahora que vi tu respuesta, intenté probar tu ejemplo y ohh casualidad, 
tampoco me funciona!!! No filtra, no ordena, no agrupa, nada de nada. El mismo 
inconveniente que tuve anteriormente.
    Tenés alguna idea sobre que puede estar pasando??

    Claudio López

    ----- Original Message ----- 
      From: José Paez 
      To: gufa List Member 
      Sent: Thursday, March 22, 2007 12:28 PM
      Subject: [gufa] Vista en SQL



      Hola Rodrigo

      Te paso este fragmento de código para que veas como trabajo con mi 
subclase basada en CursorAdapter,
      Espero que te sea de utilidad.

      Saludos

      José Paez
      Córdoba - Argentina


      [1] Al mismo le agregue tres propiedades 

          CriterioFiltro
          CriterioAgrupamiento
          CriterioOrdenamiento

      [2] Modifique el procedimiento BeforeCursorFill

      PROCEDURE BeforeCursorFill
          LPARAMETERS luseCursorSchema, lNoDataOnLoad, cSelectCmd

          If not Empty( this.CriterioFiltro ) then
              cSelectCmd = cSelectCmd + " WHERE " + this.CriterioFiltro
          EndIf

          If not Empty( this.CriterioAgrupamiento ) then
              cSelectCmd = cSelectCmd + " GROUP BY " + this.CriterioAgrupamiento
          EndIf

          If not Empty( this.CriterioOrdenamiento) then
              cSelectCmd = cSelectCmd + " ORDER BY " + this.CriterioOrdenamiento
          endif
      ENDPROC


      [3] Segun sea el caso, cuando no deseo traer datos le configuro la 
propiedad

      NoData = T.


      [4] Para obtener datos y ordernarlos lo hago de esta manera en mi 
procedimiento:

      Local;
       llRetVal  As Boolean,;
       loErrHandler As Exception

      llRetVal = F.

      Local;
       lnPeriodo  As Integer

      lnPeriodo = 2006

      Try
       With Thisform.DataEnvironment.Ventas 
        .Nodata = F.
        .CriterioFiltro        = "Periodo = ?lnPeriodo"
        .CriterioOrdenamiento  = "Fecha, Clientes"

        llRetVal = CursorFill()

        .CriterioFiltro        = ""
        .CriterioOrdenamiento  = ""
       Endwith

      Catch To loErrHandler
       This.Return_Error( loErrHandler )        && <-- Este es mi manejador de 
excepciones
      Endtry

      Return llRetVal            










        ----- Original Message ----- 
        From: R. Rodrigo 
        To: gufa List Member 
        Sent: Thursday, March 22, 2007 10:58 AM
        Subject: [gufa] Vista en SQL


              Gracias por contestar, pero te comento, el problema es el 
siguiente:

              En el entorno de datos, y mediante el generedor, he creado un 
conexión a SQL, defino los parametros, y puedo acceder a los datos SQL como si 
de una tabla se tratase sin ningun problema.

              El problema es que al iniciar el form, el cursoradapter se trae 
todos los datos y relentiza bastante si son muchos, a conitnuación selecciona 
el lote del producto y a partir de aqui todo va bien, ya no se hace lento.

              Si en el generador le marco que INICALMENTE NO CARGUE DATOS, que 
sería lo logico, y luego seleccionar el lote que nos interesa, entonces no 
consigo traer ningun datos.

              Ahora bien, si el SELECT anterior que lo alojo en sel SQ y 
selecciono por constante el lote del producto, la respuesta es instantanea, 
pero solo me sirve para ese producto.

              Es por esto que buscaba la forma de en el SERVIDOR SQL, aloja un 
select que la condicion WHERE fuera contra un avariable de memoria, y en la 
aplicación según le indique el valor a esta variable fuera trayendo los datos 
correspondientes.

              Espero haberme explicado un poco más

              Gracias

              Un saludo
              R. Rodrigo


              -------Mensaje original-------

              De: Omar Bellio
              Fecha: 22/03/2007 13:44:43
              Para: gufa List Member
              Asunto: [gufa] Vista en SQL

              No, yo lo que hago es filtrar el select cuando uso la vista

              Select * (es mejor poner los campos, aunque sean todos) from 
zz_stocks_lotes_producto where Lote_Interno = '060612011'



------------------------------------------------------------------
              De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de R. 
Rodrigo
              Enviado el: Thursday, March 22, 2007 7:36 AM
              Para: gufa List Member
              Asunto: [gufa] Vista en SQL


                    Amigos, alguien puede decirme lo siguiente:

                    En una vista en SQL de lado del servidor :

                    CREATE VIEW dbo.zz_stocks_lotes_producto
                    AS
                    SELECT     dbo.lotes_producto.*
                    FROM       dbo.lotes_producto 
                    Where      dbo.lotes_producto.Lote_Interno='060612011'


                    Seleccionamos los registros que cumplan la condicion de la 
constante lotes_producto.Lote_Interno='060612011'

                    Pero lo que busco, si se puede, es cambiar esta constante 
por una varible para poder cambiar el criterio de selección dentro del 
formulario según el valor que se introduzca.

                    Es esto posible ?????

                    Gracias y un saludo

                    R. Rodrigo 
                           
                   


              --
              No virus found in this incoming message.
              Checked by AVG Free Edition.
              Version: 7.5.446 / Virus Database: 268.18.16/729 - Release Date: 
21/03/2007 7:52 AM




              __________ Información de NOD32, revisión 2135 (20070322) 
__________

              Este mensaje ha sido analizado con NOD32 antivirus system
              http://www.nod32.com

             
                     
             

Responder a