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