Hola Rodrigo Si vas a trabajar con CursorAdapter, sugiero que crees una libreria de acceso a datos: Ej: AccesoDatos.vcx
Dentro de la misma, crea una subclase de CursorAdapter. Ej: "_CA" Aqui configuras todas las propiedades que consideres que vas a utilizar en todos los accesos a datos: StringConnect = "driver={sql server};server=<MiServer>;database=<MiBaseDatos>;uid=<MiUsuario>;pwd=<MiContraseña>" BufferMode = 3 FetchAsNeed = .F. DataSourceType = "ODBC" MapBinary = .T. MapVarChar = .T. Prepared = .T. RefreshTimeStamp = .F. WhereType = 3 BreakOnError = .T. SendUpdate = .T. Si usas TimeStamp RefreshTimeStamp = .T. WhereType = 4 InsertCmdRefreshCmd = "SELECT @@IDENTITY, @@DBTS" InsertCmdRefreshFieldList = "<MiCampoIdentity>, <MiCampoTimestamp>" TimeStampFieldList = "<MiCampoTimestamp>" UpdateCmdRefreshCmd = "SELECT @@DBTS" UpdateCmdRefreshFieldList = "<MiCampoTimestamp>" Incorpora el fragmento de codigo que envie en un mail anterior a esta clase. Luego cada vez que necesites acceder a datos crea una subclase basada en "_CA" y solo configura con el generador las propiedades: Alias CursorSchema KeyFieldList SelectCmd Tables UpdatableFieldList UpdatableNameList Dentro de tu formulario o Informe agrega tu clase cursoradapter. Bueno, actualmente trabajo con este acceso a datos a tablas en SQL Server que tienen unos 3 millones de registros y... Funciona !!! ;-) Saludos José Paez Córdoba - Argentina PD: Esto que investigue y que actualmente lo utilizo en grandes sistemas, se lo agradezco a nuestro gran amigo "Antonio Castaño" quien me dio la idea de "Objetos de Datos Reusables" ----- Original Message ----- From: R. Rodrigo To: gufa List Member Sent: Thursday, March 22, 2007 8:04 PM Subject: [gufa] Vista en SQL - RESUELTO Gracias oscar por tu respuesta, pero te comento, lo que estoy haciendo es en un form y mediante el ENTORNO DATOS/GENERADOR, creo un cursoradapter, defino todos los parametros, pero el problema es que al ejecutar, siempre me trae todos los datos, y si la table de la base SQL tiene muchos registros (180.000) tarda mucho en cargarlos cuando despues yo solo voy a usar un solo registro. Estro anterior es lo que quiero hacer, es decir que al acceder a SQL solo traiga el registro que yo le indico, no que traiga todos y despues yo selecciono el que quiero. Un saludo -------Mensaje original------- De: oscar.zarate Fecha: 22/03/2007 23:58:16 Para: gufa List Member Asunto: [gufa] Vista en SQL - RESUELTO Rodrigo, Si yo no me equivoco, lo que queres hacer es una vista parametrizada (como se hacia hace ... 10 anios Antonio? :-) La idea es la siguiente: El codigo de tu vista es: SELECT Table1.a, Table1.b; FROM ; data1!table1; WHERE Table1.a = ( ?lcPar ) Donde lcPar es el parametro. Si abris la vista, te aparece un cuadro de dialogo (que feo que escribo) pidiendote el valor del parametro, pero si le asignas a lcPar un valor antes de abrirla, no te abre ese Input. Entonces, en tu codigo: haces ... en el Load: Use View1 NODATA (no trae ningun dato) Cuando lo necesitas: haces lcPar = "123" o lo que sea y REQUERY("View1") Eso se hacia hace mucho ... ahora seria mejor que uses un CursorAdapter, pero ... Espero no haber ... hecho pipi afuero del tarro :-) SaludOZ |\_/| (.. ) - / -----Original Message----- From: "R. Rodrigo" <[EMAIL PROTECTED]> To: "gufa List Member" <gufa@mug.org.ar> Date: Thu, 22 Mar 2007 16:23:46 +0100 (Hora estándar romance) Subject: [gufa] Vista en SQL - RESUELTO > Gracias a todos por contestar mi consulta. > > Ya lo solucione tomando un poco de lo que cada uno me dijeron. No se si > sera > la forma más ortodoxa, pero funciona al cien por cien y el tiempo de > respuesta es insignificante. > > Lo comento a continución por si le sirve a alguien. > > 1 - En el servidor SQL he creado una tabla a la que llamo VARIABLES > donde > defino los campo que me interesan, en mi caso solo necesito 5 variables > (var1,vae2,etc.) > En esta tabla que solo tiene un registro, guardo mediante el form de > la > aplicación la variable de los registros que me quiero traer > (lote,dni,codigo > etc.) > > 2 - En el servidor SQL creo la siguiente vista: > > CREATE VIEW dbo.zz_stocks_lotes_cabecera > AS > SELECT dbo.lotes_cabecera.* > FROM dbo.lotes_cabecera inner join variables on > lote_interno=var1 > > Donde seleccione los registros que cumplen la condición > lote_interno=var1 > (var1 es el campo de la tabla variables.) > > > 3 - En el form, cuando cambio el valor intoducido para numero de lote, > lo > que hago es : > > SELECT variables > Replace var1 WITH this.Value (nuevo valor introducido al lote) > REQUERY() > * > SELECT lotes_cabecera > REQUERY() > GO top > > Trae perfectamente los registros que corresponde al lote pedido y sin > ningun > retardo. > > > > Espero mi solución le sirva a alguien más > > Un saludo > > > > -------Mensaje original------- > > De: Sergio Suarez > Fecha: 22/03/2007 15:49:47 > Para: gufa List Member > Asunto: [gufa] Vista en SQL > > Hola, se me ocurre que si el cursor no es actualizable lo podes crear a > traves de una consulta usando sqlexec(), si queres la solucion por el > lado > del servidor creo que te seria mejor armar una store procedere que le > pases > el parametro en el servidor y que esta te devuelva el cursor. > Saludos. > > > > On Jue Mar 22 10:58 , 'R. Rodrigo' <[EMAIL PROTECTED]> sent: > > > 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 > > > > > > __________ Información de NOD32, revisión 2137 (20070322) __________ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com