[GUFA] CursorAdapter
Hola, te respondo las preguntas: 1) los links estaban en español originalmente y fueron luego traducidos al inglés y al portugués. Pero desde hace varios años, el dueño de la revista solamente dejó disponibles las versiones en inglés 2) podés hacer cursor adapters de varias tablas en la sentencia select sql. Pero lo mejor es actualizar una sola tabla, aunque la consulta sea de varias tablas. Los campos de la tabla que vas a actualizar los definís en las propiedades updatefieldlist, updatenamelist y keyfieldlist (en todas ellas tenés que incluir la clave primaria de la tabla, porque si no, no te va a funcionar) También tenés que poner la propiedad sendupdates en true. 3) En cuanto a TierAdapter, preguntales a los autores Rubén Rovira y Martín Salías Saludos Rafael Copquin El 25/07/2012 07:50 p.m., pablo.oviedo escribió: Gracias, empece con cursoradapter y me trabe. Se pueden usar un cursoadapter que incluya columnas de distintas tablas? me tira error cuando quiero refrescar algunos campos del cursor luego de una inserción. También estoy viendo TierAdapter. Los link que me pasaron, es posible que esta información este en español? Existe alguna documentación sobre TierAdapter que describa todas las clases, metodos y propiedades del frameworks a parte del diagrama de UML que esta en el sitio de Martin? saludos -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Tue, 24 Jul 2012 16:32:07 -0300 Subject: [GUFA] CursorAdapter Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[CABECERA]( [FECHA] [date] NOT NULL, [CUENTA] [char](4) NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [IVA] [numeric](10, 2) NOT NULL, [TOTAL] [numeric](10, 2) NOT NULL, [IDCABECERA] [int] IDENTITY(1,1) NOT NULL, [DT] [datetime] NOT NULL, CONSTRAINT [PK_IDCABECERA] PRIMARY KEY CLUSTERED ( [IDCABECERA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ** lo siguiente se hace en Visual FoxPro ** generación de un cursor adapter para la tabla CABECERA Local cCmd,cSch,cUFL,cUNL,lOK Text to cCmd noshow pretext 15 SELECT FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT FROM CABECERA WHERE 1=0 EndText Text to cSch noshow pretext 15 FECHA D, CUENTA C(4), TIPODOC C(3), DOCNUM C(8), IVA N(10,2), TOTAL N(10,2), IDCABECERA I, DT T EndText Text to cUFL noshow pretext 15 FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT EndText Text to cUNL noshow pretext 15 FECHACABECERA.FECHA, CUENTA CABECERA.CUENTA, TIPODOC CABECERA.TIPODOC, DOCNUM CABECERA.DOCNUM, IVA CABECERA.IVA, TOTALCABECERA.TOTAL, IDCABECERA CABECERA.IDCABECERA, DT CABECERA.DT EndText cUFL= Chrtran( cUFL, Chr(13) + Chr(10), ) cUNL = Chrtran( cUNL, Chr(13) + Chr(10), ) cSch= Chrtran( cSch, Chr(13) + Chr(10), ) cCmd = Chrtran( cCmd, Chr(13) + Chr(10), ) Use in Select() lOK = .t. If !PemStatus(thisform,'oCA',5) thisform.AddProperty('oCA') EndIf Try Thisform.oCA = Createobject(CursorAdapter) lOK = .t. Catch to oErrores MessageBox(No se pudo generar el objeto CursorAdapter+; Chr(13)+oErrores.message,16,Atención,2000) lOK = .f. Finally EndTry If lOK = .t. try With thisform.oCA .DataSourceType = ODBC .DataSource = thisform.nHandle .alias = curCabecera .tables = cabecera .BufferModeOverride = 5 .keyfieldlist= idcabecera .sendupdates = .T. .usetransactions
[GUFA] CursorAdapter
Nunca he utilizado un framework de tercero, quizá esto haya perjudicado mis tiempos de desarrollo, algo que no podré evaluar nunca (que hubiera pasado si). Lo que sí puedo afirmar es que los sistemas que realizo los hago todos contra SQL SERVER definiendo CLASES que acceden a los datos y actualizan y borran sin necesidad de ningún framework. Pablo Oviedo, tu pregunta original era: Hola, necesito hacer una aplicación vfox 9 + sqlserver. Pensé usar cursoradapter. No se como hacer un abm maestro-detalle usando cursor adapter, sí pude armar un abm para tablas simples usando cursorAdapter builder. Me puede dar algun ejemplo o algun link para ver? Como seria el manejo de transacciones con CA? saludos, muchas gracias. Seguís necesitando un ejemplo, algo podría pasarte. Saludos. -Mensaje original- De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de pablo.oviedo Enviado el: miércoles, 25 de julio de 2012 07:50 p.m. Para: GUFA List Member Asunto: [GUFA] CursorAdapter Gracias, empece con cursoradapter y me trabe. Se pueden usar un cursoadapter que incluya columnas de distintas tablas? me tira error cuando quiero refrescar algunos campos del cursor luego de una inserción. También estoy viendo TierAdapter. Los link que me pasaron, es posible que esta información este en español? Existe alguna documentación sobre TierAdapter que describa todas las clases, metodos y propiedades del frameworks a parte del diagrama de UML que esta en el sitio de Martin? saludos -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Tue, 24 Jul 2012 16:32:07 -0300 Subject: [GUFA] CursorAdapter Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[CABECERA]( [FECHA] [date] NOT NULL, [CUENTA] [char](4) NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [IVA] [numeric](10, 2) NOT NULL, [TOTAL] [numeric](10, 2) NOT NULL, [IDCABECERA] [int] IDENTITY(1,1) NOT NULL, [DT] [datetime] NOT NULL, CONSTRAINT [PK_IDCABECERA] PRIMARY KEY CLUSTERED ( [IDCABECERA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ** lo siguiente se hace en Visual FoxPro ** generación de un cursor adapter para la tabla CABECERA Local cCmd,cSch,cUFL,cUNL,lOK Text to cCmd noshow pretext 15 SELECT FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT FROM CABECERA WHERE 1=0 EndText Text to cSch noshow pretext 15 FECHA D, CUENTA C(4), TIPODOC C(3), DOCNUM C(8), IVA N(10,2), TOTAL N(10,2), IDCABECERA I, DT T EndText Text to cUFL noshow pretext 15 FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT EndText Text to cUNL noshow pretext 15 FECHACABECERA.FECHA, CUENTA CABECERA.CUENTA, TIPODOC CABECERA.TIPODOC, DOCNUM CABECERA.DOCNUM, IVA CABECERA.IVA, TOTALCABECERA.TOTAL, IDCABECERA CABECERA.IDCABECERA, DT CABECERA.DT EndText cUFL= Chrtran( cUFL, Chr(13) + Chr(10), ) cUNL = Chrtran( cUNL, Chr(13) + Chr(10), ) cSch= Chrtran( cSch, Chr(13) + Chr(10), ) cCmd = Chrtran( cCmd, Chr(13) + Chr(10), ) Use in Select() lOK = .t. If !PemStatus(thisform,'oCA',5) thisform.AddProperty('oCA') EndIf Try Thisform.oCA = Createobject(CursorAdapter) lOK = .t. Catch to oErrores MessageBox(No se pudo generar el objeto CursorAdapter+; Chr(13)+oErrores.message,16,Atención,2000) lOK = .f. Finally EndTry If lOK = .t. try With thisform.oCA .DataSourceType = ODBC .DataSource = thisform.nHandle .alias
[GUFA] CursorAdapter
Sí gracias!!! todo suma. Hasta el momento estoy viendo y haciendo algunas pruebas. Con CA tadavia no logro hacer lo que quiero, con TA todavia me falta leer un poco mas y madurarlo. Si hay otras alternativas, bienvenido sea. saldudos -Original Message- From: Alejandro Paciotti Iacchelli alejandro.pacio...@gmail.com To: GUFA List Member GUFA@mug.org.ar Date: Thu, 26 Jul 2012 10:22:10 -0300 Subject: [GUFA] CursorAdapter Nunca he utilizado un framework de tercero, quizá esto haya perjudicado mis tiempos de desarrollo, algo que no podré evaluar nunca (que hubiera pasado si). Lo que sí puedo afirmar es que los sistemas que realizo los hago todos contra SQL SERVER definiendo CLASES que acceden a los datos y actualizan y borran sin necesidad de ningún framework. Pablo Oviedo, tu pregunta original era: Hola, necesito hacer una aplicación vfox 9 + sqlserver. Pensé usar cursoradapter. No se como hacer un abm maestro-detalle usando cursor adapter, sí pude armar un abm para tablas simples usando cursorAdapter builder. Me puede dar algun ejemplo o algun link para ver? Como seria el manejo de transacciones con CA? saludos, muchas gracias. Seguís necesitando un ejemplo, algo podría pasarte. Saludos. -Mensaje original- De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de pablo.oviedo Enviado el: miércoles, 25 de julio de 2012 07:50 p.m. Para: GUFA List Member Asunto: [GUFA] CursorAdapter Gracias, empece con cursoradapter y me trabe. Se pueden usar un cursoadapter que incluya columnas de distintas tablas? me tira error cuando quiero refrescar algunos campos del cursor luego de una inserción. También estoy viendo TierAdapter. Los link que me pasaron, es posible que esta información este en español? Existe alguna documentación sobre TierAdapter que describa todas las clases, metodos y propiedades del frameworks a parte del diagrama de UML que esta en el sitio de Martin? saludos -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Tue, 24 Jul 2012 16:32:07 -0300 Subject: [GUFA] CursorAdapter Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[CABECERA]( [FECHA] [date] NOT NULL, [CUENTA] [char](4) NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [IVA] [numeric](10, 2) NOT NULL, [TOTAL] [numeric](10, 2) NOT NULL, [IDCABECERA] [int] IDENTITY(1,1) NOT NULL, [DT] [datetime] NOT NULL, CONSTRAINT [PK_IDCABECERA] PRIMARY KEY CLUSTERED ( [IDCABECERA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ** lo siguiente se hace en Visual FoxPro ** generación de un cursor adapter para la tabla CABECERA Local cCmd,cSch,cUFL,cUNL,lOK Text to cCmd noshow pretext 15 SELECT FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT FROM CABECERA WHERE 1=0 EndText Text to cSch noshow pretext 15 FECHA D, CUENTA C(4), TIPODOC C(3), DOCNUM C(8), IVA N(10,2), TOTAL N(10,2), IDCABECERA I, DT T EndText Text to cUFL noshow pretext 15 FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT EndText Text to cUNL noshow pretext 15 FECHACABECERA.FECHA, CUENTA CABECERA.CUENTA, TIPODOC CABECERA.TIPODOC, DOCNUM CABECERA.DOCNUM, IVA CABECERA.IVA, TOTALCABECERA.TOTAL, IDCABECERA CABECERA.IDCABECERA, DT CABECERA.DT EndText cUFL= Chrtran( cUFL, Chr(13) + Chr(10), ) cUNL = Chrtran( cUNL, Chr(13) + Chr(10), ) cSch= Chrtran( cSch, Chr(13) + Chr(10
[GUFA] CursorAdapter
Rafael, tengo problemas con el refresh, Error: The refresh key defined for table is not found. El codigo es: procedure CACompras lparameters cAlia, cName * cInsCmd, cUpdCmd, cDelCmd pueden ser vacios oCA = createobject(CABase) oCA.Alias = cAlia oCA.CursorSchema = PROVEEDOR C(30),FECHA D, IDPROV I, IDCOM I oCA.InsertCmdRefreshFieldList = IDCOM oCA.name = cName oCA.SelectCmd = select PROVEEDOR, FECHA, IDPROV, IDCOM from compras c inner join proveedores p on c.idprov=p.idpro oCA.Tables = Compras oCA.UpdatableFieldList = FECHA, IDPROV oCA.UpdateCmdRefreshFieldList = FECHA, IDPROV oCA.UpdateCmdRefreshKeyFieldList = IDCOM oCA.UpdateNameList = FECHA Compras.FECHA IDPROV Compras.IDPROV oCA.KeyFieldList = IDCOM oCA.CursorFill() return oCA endproc define class CABase as CursorAdapter procedure init local loConnDataSource, oRS loConnDataSource = createobject('ADODB.Connection') loConnDataSource.ConnectionString = [Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;] + ; [User ID=;Initial Catalog=Insumos;Data Source=PPC\SQLE;Initial File ] + ; [Name=;Server SPN=;] loConnDataSource.Open() oRS = createobject('ADODB.RecordSet') oRS.CursorLocation = 3 adUseClient oRS.LockType = 3 adLockOptimistic oRS.ActiveConnection = loConnDataSource this.DataSource = oRS this.DataSourceType = ADO this.AllowSimultaneousFetch = .t. this.BreakOnError = .t. this.BufferModeOverride = 3 Optimistic row buffering this.conflictCheckType = 3 Check for both modified record and key uniqueness this.FetchMemo = .f. this.FetchSize = -1 this.MapBinary = .t. this.MapVarchar = .t. this.SendUpdates = .t. this.UseCursorSchema = .t. *oCA.UseDeDataSource = .t. endproc enddefine -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Thu, 26 Jul 2012 10:08:00 -0300 Subject: [GUFA] CursorAdapter Hola, te respondo las preguntas: 1) los links estaban en español originalmente y fueron luego traducidos al inglés y al portugués. Pero desde hace varios años, el dueño de la revista solamente dejó disponibles las versiones en inglés 2) podés hacer cursor adapters de varias tablas en la sentencia select sql. Pero lo mejor es actualizar una sola tabla, aunque la consulta sea de varias tablas. Los campos de la tabla que vas a actualizar los definís en las propiedades updatefieldlist, updatenamelist y keyfieldlist (en todas ellas tenés que incluir la clave primaria de la tabla, porque si no, no te va a funcionar) También tenés que poner la propiedad sendupdates en true. 3) En cuanto a TierAdapter, preguntales a los autores Rubén Rovira y Martín Salías Saludos Rafael Copquin El 25/07/2012 07:50 p.m., pablo.oviedo escribió: Gracias, empece con cursoradapter y me trabe. Se pueden usar un cursoadapter que incluya columnas de distintas tablas? me tira error cuando quiero refrescar algunos campos del cursor luego de una inserción. También estoy viendo TierAdapter. Los link que me pasaron, es posible que esta información este en español? Existe alguna documentación sobre TierAdapter que describa todas las clases, metodos y propiedades del frameworks a parte del diagrama de UML que esta en el sitio de Martin? saludos -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Tue, 24 Jul 2012 16:32:07 -0300 Subject: [GUFA] CursorAdapter Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF
[GUFA] CursorAdapter
Probaste de _no usar_ las propiedades InsertCmdRefreshFieldList , UpdateCmdRefreshFieldList, UpdateCmdRefreshKeyFieldList (yo jamás las usé y a mi me funcionan los CA) En tu clase de CA ponés la propiedad BufferModeOverride = 3optimistic row buffering Yo la pongo en 5optimistic table buffering En el primer caso la actualización es automática si movés el puntero. En cambio, usando 5 (optimistic table buffering), solamente se actualiza la tabla si le mandás un tableupdate. Además, te actualiza varios registros de una. Rafael Copquin El 26/07/2012 10:52 a.m., pablo.oviedo escribió: oCA.UpdateCmdRefreshKeyFieldList = IDCOM
[GUFA] CursorAdapter
Fantastico!!!, segui tu sujerencia. Como vos decis, sin esta tres propiedades funciona ok, lo probe con bufferin 3 y 5. Tuve que hacer el refresh programaticamente en el evento AfterInsert Con estas tres propiedades seteadas y teniendo un cursor con columnas de varias tablas no funcionan los refresh(). Sera algun bug de fox? Sigo adelante, ahora pruebo lo de las transacciones!!! saludos, gracias. -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Thu, 26 Jul 2012 17:17:27 -0300 Subject: [GUFA] CursorAdapter Probaste de _no usar_ las propiedades InsertCmdRefreshFieldList , UpdateCmdRefreshFieldList, UpdateCmdRefreshKeyFieldList (yo jamás las usé y a mi me funcionan los CA) En tu clase de CA ponés la propiedad BufferModeOverride = 3 optimistic row buffering Yo la pongo en 5optimistic table buffering En el primer caso la actualización es automática si movés el puntero. En cambio, usando 5 (optimistic table buffering), solamente se actualiza la tabla si le mandás un tableupdate. Además, te actualiza varios registros de una. Rafael Copquin El 26/07/2012 10:52 a.m., pablo.oviedo escribió: oCA.UpdateCmdRefreshKeyFieldList = IDCOM
[GUFA] CursorAdapter
Gracias, empece con cursoradapter y me trabe. Se pueden usar un cursoadapter que incluya columnas de distintas tablas? me tira error cuando quiero refrescar algunos campos del cursor luego de una inserción. También estoy viendo TierAdapter. Los link que me pasaron, es posible que esta información este en español? Existe alguna documentación sobre TierAdapter que describa todas las clases, metodos y propiedades del frameworks a parte del diagrama de UML que esta en el sitio de Martin? saludos -Original Message- From: Rafael Copquin rcopq...@fibertel.com.ar To: GUFA List Member GUFA@mug.org.ar Date: Tue, 24 Jul 2012 16:32:07 -0300 Subject: [GUFA] CursorAdapter Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[CABECERA]( [FECHA] [date] NOT NULL, [CUENTA] [char](4) NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [IVA] [numeric](10, 2) NOT NULL, [TOTAL] [numeric](10, 2) NOT NULL, [IDCABECERA] [int] IDENTITY(1,1) NOT NULL, [DT] [datetime] NOT NULL, CONSTRAINT [PK_IDCABECERA] PRIMARY KEY CLUSTERED ( [IDCABECERA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ** lo siguiente se hace en Visual FoxPro ** generación de un cursor adapter para la tabla CABECERA Local cCmd,cSch,cUFL,cUNL,lOK Text to cCmd noshow pretext 15 SELECT FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT FROM CABECERA WHERE 1=0 EndText Text to cSch noshow pretext 15 FECHA D, CUENTA C(4), TIPODOC C(3), DOCNUM C(8), IVA N(10,2), TOTAL N(10,2), IDCABECERA I, DT T EndText Text to cUFL noshow pretext 15 FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT EndText Text to cUNL noshow pretext 15 FECHACABECERA.FECHA, CUENTA CABECERA.CUENTA, TIPODOC CABECERA.TIPODOC, DOCNUM CABECERA.DOCNUM, IVA CABECERA.IVA, TOTALCABECERA.TOTAL, IDCABECERA CABECERA.IDCABECERA, DT CABECERA.DT EndText cUFL= Chrtran( cUFL, Chr(13) + Chr(10), ) cUNL = Chrtran( cUNL, Chr(13) + Chr(10), ) cSch= Chrtran( cSch, Chr(13) + Chr(10), ) cCmd = Chrtran( cCmd, Chr(13) + Chr(10), ) Use in Select() lOK = .t. If !PemStatus(thisform,'oCA',5) thisform.AddProperty('oCA') EndIf Try Thisform.oCA = Createobject(CursorAdapter) lOK = .t. Catch to oErrores MessageBox(No se pudo generar el objeto CursorAdapter+; Chr(13)+oErrores.message,16,Atención,2000) lOK = .f. Finally EndTry If lOK = .t. try With thisform.oCA .DataSourceType = ODBC .DataSource = thisform.nHandle .alias = curCabecera .tables = cabecera .BufferModeOverride = 5 .keyfieldlist= idcabecera .sendupdates = .T. .usetransactions= .f.si están en falso, no usa transacciones y funciona entonces ponerlas en manual en SQL Server .selectcmd = cCmd .updatablefieldlist = cUFL .updatenamelist = cUNL .cursorschema = cSch .cursorfill() EndWith Select curCabecera Catch to oErrores MessageBox(No se pudo generar el Cursor +Chr(13)+oErrores.message; ,16,Atención,2000) lOK = .f. endtry endif Return lOK **(hacer otro cursor adapter para la tabla DETALLE y obtener el cursor curDetalle) ** la sentencia where 1=0 genera un cursor vacío. Esto es para que llenes el cursor adapter con los datos necesarios antes de ** grabar. Estos
[GUFA] CursorAdapter
Hola, necesito hacer una aplicación vfox 9 + sqlserver. Pensé usar cursoradapter. No se como hacer un abm maestro-detalle usando cursor adapter, sí pude armar un abm para tablas simples usando cursorAdapter builder. Me puede dar algun ejemplo o algun link para ver? Como seria el manejo de transacciones con CA? saludos, muchas gracias.
[GUFA] CursorAdapter
Pablo,yo te recomiendo que inviertas algunas horas aprendiendo el uso de algún framework, puede ser FRAMEROOT, fruto del encomio de Pablo Van Diest o TIERADAPTER (el que uso yo) que desarrollaron Martín Salías y Rubén Rovira. Te van a solucionar muchísimas cosas. Saludos! -Mensaje original- De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de pablo.oviedo Enviado el: martes, 24 de julio de 2012 11:16 a.m. Para: GUFA List Member Asunto: [GUFA] CursorAdapter Hola, necesito hacer una aplicación vfox 9 + sqlserver. Pensé usar cursoradapter. No se como hacer un abm maestro-detalle usando cursor adapter, sí pude armar un abm para tablas simples usando cursorAdapter builder. Me puede dar algun ejemplo o algun link para ver? Como seria el manejo de transacciones con CA? saludos, muchas gracias.
[GUFA] CursorAdapter
Si vas a hacer una aplicación desde cero, creo que la mejor opción es usar el Framework TierAdapter. Te dejo algunos links: de Martín Salias. http://www.salias.com.ar/TierAdapter/ de Ruben Rovira y Omar Bellio. http://www.universalthread.com/ViewPageArticle.aspx?ID=480 http://tieradapter.sourceforge.net/ En esta lista te van a poder dar soporte, vas a tener que estudiarlo un poco pero vale la pena. Saludos! César El 24 de julio de 2012 11:15, pablo.oviedo pablo.ovi...@mug.org.arescribió: Hola, necesito hacer una aplicación vfox 9 + sqlserver. Pensé usar cursoradapter. No se como hacer un abm maestro-detalle usando cursor adapter, sí pude armar un abm para tablas simples usando cursorAdapter builder. Me puede dar algun ejemplo o algun link para ver? Como seria el manejo de transacciones con CA? saludos, muchas gracias.
[GUFA] CursorAdapter
Te paso un ejemplo bien completo de cómo lo hago yo: ** creacion de las tablas en sqlserver ** en la vida real tienen más campos, pero estos son los mínimos que deberían tener CREATE TABLE [dbo].[DETALLE]( [FECHA] [date] NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [CODIGO] [char](30) NOT NULL, [CANTIDAD] [int] NOT NULL, [PRECIO] [numeric](10, 4) NOT NULL, [DT] [datetime] NOT NULL, [IDETALLE] [int] IDENTITY(1,1) NOT NULL, [IDCABECERA] [int] NOT NULL, CONSTRAINT [PK_DETALLE] PRIMARY KEY CLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [CN_IDDETALLE] UNIQUE NONCLUSTERED ( [IDDETALLE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[CABECERA]( [FECHA] [date] NOT NULL, [CUENTA] [char](4) NOT NULL, [TIPODOC] [char](3) NOT NULL, [DOCNUM] [char](8) NOT NULL, [IVA] [numeric](10, 2) NOT NULL, [TOTAL] [numeric](10, 2) NOT NULL, [IDCABECERA] [int] IDENTITY(1,1) NOT NULL, [DT] [datetime] NOT NULL, CONSTRAINT [PK_IDCABECERA] PRIMARY KEY CLUSTERED ( [IDCABECERA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ** lo siguiente se hace en Visual FoxPro ** generación de un cursor adapter para la tabla CABECERA Local cCmd,cSch,cUFL,cUNL,lOK Text to cCmd noshow pretext 15 SELECT FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT FROM CABECERA WHERE 1=0 EndText Text to cSch noshow pretext 15 FECHA D, CUENTA C(4), TIPODOC C(3), DOCNUM C(8), IVA N(10,2), TOTAL N(10,2), IDCABECERA I, DT T EndText Text to cUFL noshow pretext 15 FECHA , CUENTA , TIPODOC , DOCNUM , IVA , TOTAL , IDCABECERA , DT EndText Text to cUNL noshow pretext 15 FECHACABECERA.FECHA, CUENTA CABECERA.CUENTA, TIPODOC CABECERA.TIPODOC, DOCNUM CABECERA.DOCNUM, IVA CABECERA.IVA, TOTALCABECERA.TOTAL, IDCABECERA CABECERA.IDCABECERA, DT CABECERA.DT EndText cUFL= Chrtran( cUFL, Chr(13) + Chr(10), ) cUNL = Chrtran( cUNL, Chr(13) + Chr(10), ) cSch= Chrtran( cSch, Chr(13) + Chr(10), ) cCmd = Chrtran( cCmd, Chr(13) + Chr(10), ) Use in Select() lOK = .t. If !PemStatus(thisform,'oCA',5) thisform.AddProperty('oCA') EndIf Try Thisform.oCA = Createobject(CursorAdapter) lOK = .t. Catch to oErrores MessageBox(No se pudo generar el objeto CursorAdapter+; Chr(13)+oErrores.message,16,Atención,2000) lOK = .f. Finally EndTry If lOK = .t. try With thisform.oCA .DataSourceType = ODBC .DataSource = thisform.nHandle .alias = curCabecera .tables = cabecera .BufferModeOverride = 5 .keyfieldlist= idcabecera .sendupdates = .T. .usetransactions= .f.si están en falso, no usa transacciones y funciona entonces ponerlas en manual en SQL Server .selectcmd = cCmd .updatablefieldlist = cUFL .updatenamelist = cUNL .cursorschema = cSch .cursorfill() EndWith Select curCabecera Catch to oErrores MessageBox(No se pudo generar el Cursor +Chr(13)+oErrores.message; ,16,Atención,2000) lOK = .f. endtry endif Return lOK **(hacer otro cursor adapter para la tabla DETALLE y obtener el cursor curDetalle) ** la sentencia where 1=0 genera un cursor vacío. Esto es para que llenes el cursor adapter con los datos necesarios antes de ** grabar. Estos datos salen de textboxes, grillas, cálculos, etc. ** rutina de grabación Local lOK,nPK,cCmd,nResults,lBatchMode SQLExec(thisform.nHandle,'BEGIN TRANSACTION') SQLSetProp(thisform.nHandle, TRANSACTIONS, 2 )pone las transacciones en manuales Select curCabecera Scatter name oCab blank fields except idcabecera With oCab .fecha= Date() .cuenta = '1234' .tipodoc = 'FRA' .docnum = '12345678' .iva = 210.00 .total= 1210.00 .dt = Datetime() EndWith ** grabación de la cabecera y obtención de la clave primaria generada ** el campo idcabecera es autoincremental Insert into curCabecera from name oCab lOK = TableUpdate(.t.,.t.,'curCabecera') If lOK = .t. nPK = 0 nResults = 0 cCmd = [select @@IDENTITY as pk ] lBatchMode = SQLGetProp(thisform.nHandle,BatchMode ) SQLSetProp(thisform.nHandle,BatchMode ,.f.)
[GUFA] Cursoradapter con ADO
Fijate si este ejemplo te sirve, http://www.portalfox.com/index.php?name=Newsfile=articlesid=1168mode=nestedorder=0thold=0 El 22 de mayo de 2012 10:00, di...@isg-alexa.com escribió: ** ** Gracias por contestar, Ricardo Usamos la herramienta CABUILDER, para generar la clase, que se llama en éste caso 'ca_alexasql'. ** ** loalexadb = NEWOBJECT( 'ca_facturas_cabecera', 'ca_alexasql') loalexadb.alias = 'facturas_cabecera'*** * loalexadb.CursorFill() loalexadb.CursorDetach() ** ** Eso nos trae la tabla con los registros de la tabla desde SQL Server. Si no liberamos la asociación con Cursordetach(), cada nuevo cursor nos cierra el anterior. No podríamos tener más de una tabla abierta a la vez.* *** No encontramos ningún ejemplo de CursorAttach() en internet. Intentamos utilizarlo por sentido común, pero no lo pudimos hacer funcionar. ¿Vos tendrás algun ejemplo? ** ** Muchas gracias! Diego.- * * ** ** *De:* GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] *En nombre de *Ricardo Aidelman *Enviado el:* martes, 22 de mayo de 2012 08:37 a.m. *Para:* GUFA List Member *Asunto:* [GUFA] Cursoradapter con ADO ** ** Hola Diego: No sé cómo lo estarás haciendo. Supongo que con el CursorAdapter.CursorFill() te traes un cursor de la tabla vacia del SQL, le insertas los registros provenientes de la tabla nativa, y después hacés un TableUpdate(). Lo que interpreto de la descripción del error, es que después de traer el cursor con CursorAdapter.CursorFill(), habrás hecho CursorAdapter.CursorDetach(). Si es así, no deberías ejecutar el CursorDetach(), o bien deberías asociar nuevamente el cursor con CursorAdapter.CursorAttach(). ** ** Salu2 ** ** ** ** *ricardo aidelman * *( socio nº 1545 )* ** ** ** ** ** ** *From:* GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] *On Behalf Of * di...@isg-alexa.com *Sent:* martes, 22 de mayo de 2012 1:07 *To:* GUFA List Member *Subject:* [GUFA] Cursoradapter con ADO ** ** ** ** Hola a todos ** ** Estamos migrando una aplicación de tablas nativas DBF a SQL Server 2008, mediante Cursoradapter y ADO. Todo parece funcionar bien, pero al querer guardar los cambios, salta el siguiente error: ** ** “ERROR 2082 NO SE PUEDE ACTUALIZAR ADODB.RECORDSET HASTA QUE EL CURSOR, CREADO MEDIANTE EL MÉTODO CURSORADAPTER.CURSORFILL, NO SE ASOCIE A UN OBJETO CURSORADAPTER” ** ** ¿Qué estaré haciendo mal? ¿Hay que usar ODBC?¿Alguien me podrá orientar? ** ** Desde ya, muchísimas gracias.- Diego Detinis ** **
[GUFA] Cursoradapter con ADO
No entiendo por qué decís que si no usás cursordetach, se te cierran los adapters y no podés mantener más que una sola tabla por vez. Yo abro varios cursor adapters (tanto con tablas dbf como con tablas de sql server) en el método load de un formulario y todos los CA permanecen abiertos. Tengo una clase que los genera automáticamente y utiliza un único objeto CA (que se regenera con cada uno de los adapters) y a éstos los genero con cursorfill. Y luego puedo utilizarlos para actualizar las tablas subyacentes con tableupdate. Esto es particularmente útil en el caso de las facturas, en las que actualizo la cabecera, la tabla de detalles, la tabla de stock, la tabla de caja o de cuentas corrientes según el tipo de venta, el libro iva ventas, etc. según la necesidad. Te puedo pasar el ejemplo de mi clase (que está armada para ODBC, pero supongo que para ADO requiere muy pocas modificaciones) Rafael Copquin El 22/05/2012 10:00 a.m., di...@isg-alexa.com escribió: Gracias por contestar, Ricardo Usamos la herramienta CABUILDER, para generar la clase, que se llama en éste caso 'ca_alexasql'. loalexadb = NEWOBJECT( 'ca_facturas_cabecera', 'ca_alexasql') loalexadb.alias = 'facturas_cabecera' loalexadb.CursorFill() loalexadb.CursorDetach() Eso nos trae la tabla con los registros de la tabla desde SQL Server. Si no liberamos la asociación con Cursordetach(), cada nuevo cursor nos cierra el anterior. No podríamos tener más de una tabla abierta a la vez. No encontramos ningún ejemplo de CursorAttach() en internet. Intentamos utilizarlo por sentido común, pero no lo pudimos hacer funcionar. ¿Vos tendrás algun ejemplo? Muchas gracias! Diego.- **
[GUFA] Cursoradapter con ADO
Diego: http://sourceforge.net/projects/tieradapter/ Este es el ejemplo con el que yo aprendí, y utiliza ADO. Como dijo Rafael en otro mail, tenes que tener un CursorAdapter por tabla. La subclase rrCursorAdapter que hizo Rubén Rovira tiene algunas consideraciones para utilizar ADO, por lo tanto es conveniente que la mires. El método que persiste las modificaciones en el motor es Put(), de la clase DataTierAdapter.prg Basicamente, completá adecuadamente las propiedades SelectCmd, KeyFieldList, UpdatableFieldList y UpdateNameList. Una vez que traes el cursor con CursorFill(), pones CursorSetProp( Buffering, 5 ) y lo actualizas. Por último, haces TableUpdate() por cada tabla. ricardo aidelman ( socio nº 1545 ) From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of di...@isg-alexa.com Sent: martes, 22 de mayo de 2012 10:01 To: GUFA List Member Subject: [GUFA] Cursoradapter con ADO Gracias por contestar, Ricardo Usamos la herramienta CABUILDER, para generar la clase, que se llama en éste caso 'ca_alexasql'. loalexadb = NEWOBJECT( 'ca_facturas_cabecera', 'ca_alexasql') loalexadb.alias = 'facturas_cabecera' loalexadb.CursorFill() loalexadb.CursorDetach() Eso nos trae la tabla con los registros de la tabla desde SQL Server. Si no liberamos la asociación con Cursordetach(), cada nuevo cursor nos cierra el anterior. No podríamos tener más de una tabla abierta a la vez. No encontramos ningún ejemplo de CursorAttach() en internet. Intentamos utilizarlo por sentido común, pero no lo pudimos hacer funcionar. ¿Vos tendrás algun ejemplo? Muchas gracias! Diego.- De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ricardo Aidelman Enviado el: martes, 22 de mayo de 2012 08:37 a.m. Para: GUFA List Member Asunto: [GUFA] Cursoradapter con ADO Hola Diego: No sé cómo lo estarás haciendo. Supongo que con el CursorAdapter.CursorFill() te traes un cursor de la tabla vacia del SQL, le insertas los registros provenientes de la tabla nativa, y después hacés un TableUpdate(). Lo que interpreto de la descripción del error, es que después de traer el cursor con CursorAdapter.CursorFill(), habrás hecho CursorAdapter.CursorDetach(). Si es así, no deberías ejecutar el CursorDetach(), o bien deberías asociar nuevamente el cursor con CursorAdapter.CursorAttach(). Salu2 ricardo aidelman ( socio nº 1545 ) From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of di...@isg-alexa.com Sent: martes, 22 de mayo de 2012 1:07 To: GUFA List Member Subject: [GUFA] Cursoradapter con ADO Hola a todos Estamos migrando una aplicación de tablas nativas DBF a SQL Server 2008, mediante Cursoradapter y ADO. Todo parece funcionar bien, pero al querer guardar los cambios, salta el siguiente error: ERROR 2082 NO SE PUEDE ACTUALIZAR ADODB.RECORDSET HASTA QUE EL CURSOR, CREADO MEDIANTE EL MÉTODO CURSORADAPTER.CURSORFILL, NO SE ASOCIE A UN OBJETO CURSORADAPTER ¿Qué estaré haciendo mal? ¿Hay que usar ODBC?¿Alguien me podrá orientar? Desde ya, muchísimas gracias.- Diego Detinis
[GUFA] Cursoradapter con ADO...SOLUCIONADO!
Ricardo y Rafael Muchas gracias a los dos. En efecto, no era necesario usar Cursodetach(). Estaba usando el mismo Cursoradapter, y por éso cada tabla me cerraba la anterior. Todos los comentarios, super interesantes. Saludos!, Diego De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ricardo Aidelman Enviado el: martes, 22 de mayo de 2012 05:18 p.m. Para: GUFA List Member Asunto: [GUFA] Cursoradapter con ADO Diego: http://sourceforge.net/projects/tieradapter/ Este es el ejemplo con el que yo aprendí, y utiliza ADO. Como dijo Rafael en otro mail, tenes que tener un CursorAdapter por tabla. La subclase rrCursorAdapter que hizo Rubén Rovira tiene algunas consideraciones para utilizar ADO, por lo tanto es conveniente que la mires. El método que persiste las modificaciones en el motor es Put(), de la clase DataTierAdapter.prg Basicamente, completá adecuadamente las propiedades SelectCmd, KeyFieldList, UpdatableFieldList y UpdateNameList. Una vez que traes el cursor con CursorFill(), pones CursorSetProp( Buffering, 5 ) y lo actualizas. Por último, haces TableUpdate() por cada tabla. ricardo aidelman ( socio nº 1545 ) From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of di...@isg-alexa.com Sent: martes, 22 de mayo de 2012 10:01 To: GUFA List Member Subject: [GUFA] Cursoradapter con ADO Gracias por contestar, Ricardo Usamos la herramienta CABUILDER, para generar la clase, que se llama en éste caso 'ca_alexasql'. loalexadb = NEWOBJECT( 'ca_facturas_cabecera', 'ca_alexasql') loalexadb.alias = 'facturas_cabecera' loalexadb.CursorFill() loalexadb.CursorDetach() Eso nos trae la tabla con los registros de la tabla desde SQL Server. Si no liberamos la asociación con Cursordetach(), cada nuevo cursor nos cierra el anterior. No podríamos tener más de una tabla abierta a la vez. No encontramos ningún ejemplo de CursorAttach() en internet. Intentamos utilizarlo por sentido común, pero no lo pudimos hacer funcionar. ¿Vos tendrás algun ejemplo? Muchas gracias! Diego.- De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ricardo Aidelman Enviado el: martes, 22 de mayo de 2012 08:37 a.m. Para: GUFA List Member Asunto: [GUFA] Cursoradapter con ADO Hola Diego: No sé cómo lo estarás haciendo. Supongo que con el CursorAdapter.CursorFill() te traes un cursor de la tabla vacia del SQL, le insertas los registros provenientes de la tabla nativa, y después hacés un TableUpdate(). Lo que interpreto de la descripción del error, es que después de traer el cursor con CursorAdapter.CursorFill(), habrás hecho CursorAdapter.CursorDetach(). Si es así, no deberías ejecutar el CursorDetach(), o bien deberías asociar nuevamente el cursor con CursorAdapter.CursorAttach(). Salu2 ricardo aidelman ( socio nº 1545 ) From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of di...@isg-alexa.com Sent: martes, 22 de mayo de 2012 1:07 To: GUFA List Member Subject: [GUFA] Cursoradapter con ADO Hola a todos Estamos migrando una aplicación de tablas nativas DBF a SQL Server 2008, mediante Cursoradapter y ADO. Todo parece funcionar bien, pero al querer guardar los cambios, salta el siguiente error: ERROR 2082 NO SE PUEDE ACTUALIZAR ADODB.RECORDSET HASTA QUE EL CURSOR, CREADO MEDIANTE EL MÉTODO CURSORADAPTER.CURSORFILL, NO SE ASOCIE A UN OBJETO CURSORADAPTER ¿Qué estaré haciendo mal? ¿Hay que usar ODBC?¿Alguien me podrá orientar? Desde ya, muchísimas gracias.- Diego Detinis
[GUFA] CursorAdapter
En las propiedades del CA fijate en el evento init. Tiene hardcodeado ( esa es una palabra de inglesñol ) el path y el nombre de la DBC. Simplemente cambialo por el path y nombre de la DBC en el otro disco y te va a funcionar Rafael Copquin - Original Message - From: Norberto Mario Alvarez To: GUFA List Member Sent: Tuesday, November 17, 2009 8:37 PM Subject: [GUFA] CursorAdapter Estimados colisteros, hace unos días, Rafael Copquin tiro al grupo como crear un cursor adapter en el DE de un form. Lo use y anda fantástico!!!, el problema es cuando lo pongo en otro disco me va a buscar DBC al lugar predeterminado donde hice el diseño, aún así le pongo en el TAG, de las propiedades del CA y sigue manteniendo el lugar predeterminado, realmente no entiendo lo que pasa. Si alguien me tira una mano lo agradezco. Desde ya muchas gracias y gracias Rafael. Norberto Alvarez Socio # 1892
[GUFA] CursorAdapter
Hola Rafael, en el Init de las propiedades de la CA solo tengo esto: *** Setup code: DO NOT REMOVE local llReturn do case case not pemstatus(This, '__VFPSetup', 5) This.AddProperty('__VFPSetup', 0) case This.__VFPSetup = 1 This.__VFPSetup = 2 case This.__VFPSetup = 2 This.__VFPSetup = 0 return endcase set multilocks on llReturn = dodefault() *** End of Setup code: DO NOT REMOVE *** Setup code: DO NOT REMOVE if This.__VFPSetup = 1 This.__VFPSetup = 2 endif return llReturn *** End of Setup code: DO NOT REMOVE Por casualidad tenes un ejemplo muy simple para el INIT Gracias De: GUFA@mug.org.ar [mailto:g...@mug.org.ar] En nombre de Rafael Copquin Enviado el: miércoles, 18 de noviembre de 2009 08:37 a.m. Para: GUFA List Member Asunto: [GUFA] CursorAdapter En las propiedades del CA fijate en el evento init. Tiene hardcodeado ( esa es una palabra de inglesñol ) el path y el nombre de la DBC. Simplemente cambialo por el path y nombre de la DBC en el otro disco y te va a funcionar Rafael Copquin - Original Message - From: Norberto Mario Alvarez mailto:n...@nmasystems.com.ar To: GUFA List Member mailto:GUFA@mug.org.ar Sent: Tuesday, November 17, 2009 8:37 PM Subject: [GUFA] CursorAdapter Estimados colisteros, hace unos días, Rafael Copquin tiro al grupo como crear un cursor adapter en el DE de un form. Lo use y anda fantástico!!!, el problema es cuando lo pongo en otro disco me va a buscar DBC al lugar predeterminado donde hice el diseño, aún así le pongo en el TAG, de las propiedades del CA y sigue manteniendo el lugar predeterminado, realmente no entiendo lo que pasa. Si alguien me tira una mano lo agradezco. Desde ya muchas gracias y gracias Rafael. Norberto Alvarez Socio # 1892
[GUFA] CursorAdapter
Si hiciste un cursor adapter completo en el data environment y con el builder, deberias tener en el metodo init lo siguiente: *** Setup code: DO NOT REMOVE local llReturn do case case not pemstatus(This, '__VFPSetup', 5) This.AddProperty('__VFPSetup', 0) case This.__VFPSetup = 1 This.__VFPSetup = 2 case This.__VFPSetup = 2 This.__VFPSetup = 0 return endcase set multilocks on llReturn = dodefault() *** End of Setup code: DO NOT REMOVE *** Select connection code: DO NOT REMOVE local lcDBC lcDBC = 'C:\MICLIENTE\TABLAS\SISTEMA.DBC' if dbused(lcDBC) set database to (lcDBC) else open database (lcDBC) endif *** End of Select connection code: DO NOT REMOVE *** Setup code: DO NOT REMOVE if This.__VFPSetup = 1 This.__VFPSetup = 2 endif return llReturn *** End of Setup code: DO NOT REMOVE - Original Message - From: Norberto Mario Alvarez To: GUFA List Member Sent: Wednesday, November 18, 2009 8:46 AM Subject: [GUFA] CursorAdapter Hola Rafael, en el Init de las propiedades de la CA solo tengo esto: *** Setup code: DO NOT REMOVE local llReturn do case case not pemstatus(This, '__VFPSetup', 5) This.AddProperty('__VFPSetup', 0) case This.__VFPSetup = 1 This.__VFPSetup = 2 case This.__VFPSetup = 2 This.__VFPSetup = 0 return endcase set multilocks on llReturn = dodefault() *** End of Setup code: DO NOT REMOVE *** Setup code: DO NOT REMOVE if This.__VFPSetup = 1 This.__VFPSetup = 2 endif return llReturn *** End of Setup code: DO NOT REMOVE Por casualidad tenes un ejemplo muy simple para el INIT Gracias De: GUFA@mug.org.ar [mailto:g...@mug.org.ar] En nombre de Rafael Copquin Enviado el: miércoles, 18 de noviembre de 2009 08:37 a.m. Para: GUFA List Member Asunto: [GUFA] CursorAdapter En las propiedades del CA fijate en el evento init. Tiene hardcodeado ( esa es una palabra de inglesñol ) el path y el nombre de la DBC. Simplemente cambialo por el path y nombre de la DBC en el otro disco y te va a funcionar Rafael Copquin - Original Message - From: Norberto Mario Alvarez To: GUFA List Member Sent: Tuesday, November 17, 2009 8:37 PM Subject: [GUFA] CursorAdapter Estimados colisteros, hace unos días, Rafael Copquin tiro al grupo como crear un cursor adapter en el DE de un form. Lo use y anda fantástico!!!, el problema es cuando lo pongo en otro disco me va a buscar DBC al lugar predeterminado donde hice el diseño, aún así le pongo en el TAG, de las propiedades del CA y sigue manteniendo el lugar predeterminado, realmente no entiendo lo que pasa. Si alguien me tira una mano lo agradezco. Desde ya muchas gracias y gracias Rafael. Norberto Alvarez Socio # 1892
[GUFA] Cursoradapter
Buen dia Estoy trabajando con cursoradapter con conexion tipo ADO Cuando quiero hacer un append blank y la tabla esta vacia no tengo ningún problema, inserta el registro todo bien- Si la tabla tiene registros, y quiero hacer el append blank, cuando quiero insertar el registro me da el siguiente error: Proveedor de datos o en otro servicio devolvió un estado E_FAIL Ya probe a ponerle nulos a las fechas que son {} Pero nada. No se que puede ser. Alguien me puede ayudar. Gracias
[GUFA] Cursoradapter con tablas nativas
Una consulta, cuando creo un cursoradapter con tablas nativas veo en la sesión de datos que tambien se abren las tablas involucradas en el cursoradapter, es decir que en lugar de optimizar mi red, solo trayendo los datos que necesito en el cursoradapter, tambien se abre la base de datos completa, con lo cual no estaría optimizando para nada el tráfico de red. entiendo que con un servidor de base de datos esto no pasaría pero el tema es tener las dos alternativas de trabajo, y lo más optimizado posible en cuanto a trafico de red se pueda. la pregunta es si esto es así o hay algo que no estoy haciendo bien. Desde ya muchas gracias. Carlos Morandin
[GUFA] Cursoradapter y paginacion en VFP 9
Ok, gracias Walter, pero ya lo hice y cuando hago un browse del cursoradapter, en el init del form, me trae los 8.000 registros. Saludos... Emiliano El 5 de agosto de 2008 21:19, Walter Cómito [EMAIL PROTECTED] escribió: primero generas un cursor adapter en el entorno de datos, una vez que elgis el metodo para obtener los datos tenes en la segunda pestaña para elegir el archivo a mostrar. En la misma segunda pestaña por el medio dice Data Fetching, en ese lugar tenes para elegir la cantidad de registros a mostrar por vez. Si no me equivoco por ahí esta el tema, por sentencia no se como se hace * * *Walter Cómito* Analista de Sistemas MP 0397 C.P.C.I.P.C. › [EMAIL PROTECTED] - [EMAIL PROTECTED] [EMAIL PROTECTED]* › msn: [EMAIL PROTECTED] (* **+54 351 494.4667 / 153.292.707*** þ *www.softram.com.ar [EMAIL PROTECTED]* *De:* GUFA@mug.org.ar [mailto:[EMAIL PROTECTED] *En nombre de *Emiliano Saldivia Martorell *Enviado el:* Martes, 05 de Agosto de 2008 08:48 p.m. *Para:* GUFA List Member *Asunto:* [GUFA] Cursoradapter y paginacion en VFP 9 Hola a todos, estoy intentando usar por primera vez los cursoradapter porque tengo un formulario que accede a una tabla de socios que posee 8.000 registros, y lo que quiero es que me vaya trayendo de a 10, pero no logro hacerlo funcionar. A la tabla que intento acceder es una dbf de VFP. Como tengo que configurarla? Ya usé el builder y después me metí en las propiedades del cursoradapter, pero no me trae de a 10. Muchas gracias y saludos... Emiliano Saldivia Rosario
[GUFA] Cursoradapter y paginacion en VFP 9
Hola a todos, estoy intentando usar por primera vez los cursoradapter porque tengo un formulario que accede a una tabla de socios que posee 8.000 registros, y lo que quiero es que me vaya trayendo de a 10, pero no logro hacerlo funcionar. A la tabla que intento acceder es una dbf de VFP. Como tengo que configurarla? Ya usé el builder y después me metí en las propiedades del cursoradapter, pero no me trae de a 10. Muchas gracias y saludos... Emiliano Saldivia Rosario
[GUFA] Cursoradapter y paginacion en VFP 9
primero generas un cursor adapter en el entorno de datos, una vez que elgis el metodo para obtener los datos tenes en la segunda pestaña para elegir el archivo a mostrar. En la misma segunda pestaña por el medio dice Data Fetching, en ese lugar tenes para elegir la cantidad de registros a mostrar por vez. Si no me equivoco por ahí esta el tema, por sentencia no se como se hace Walter Cómito Analista de Sistemas MP 0397 C.P.C.I.P.C. mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] - mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] msn: mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] ( +54 351 494.4667 / 153.292.707 þ mailto:[EMAIL PROTECTED] www.softram.com.ar De: GUFA@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Emiliano Saldivia Martorell Enviado el: Martes, 05 de Agosto de 2008 08:48 p.m. Para: GUFA List Member Asunto: [GUFA] Cursoradapter y paginacion en VFP 9 Hola a todos, estoy intentando usar por primera vez los cursoradapter porque tengo un formulario que accede a una tabla de socios que posee 8.000 registros, y lo que quiero es que me vaya trayendo de a 10, pero no logro hacerlo funcionar. A la tabla que intento acceder es una dbf de VFP. Como tengo que configurarla? Ya usé el builder y después me metí en las propiedades del cursoradapter, pero no me trae de a 10. Muchas gracias y saludos... Emiliano Saldivia Rosario
[gufa] Cursoradapter
Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan
[gufa] Cursoradapter
No estoy seguro, pero creo que tenias que utilizar TEXT...ENDTEXT para eso. Que me ayude alguien mas tambien porque no estoy seguro. Saludos.Sebastian E. Garcia From: [EMAIL PROTECTED] To: gufa@mug.org.ar Subject: [gufa] Cursoradapter Date: Wed, 14 Mar 2007 10:25:26 -0300 Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan _ Explore the seven wonders of the world http://search.msn.com/results.aspx?q=7+wonders+worldmkt=en-USform=QBRE
[gufa] Cursoradapter
Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan
[gufa] Cursoradapter
Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan
[gufa] Cursoradapter
Tambien hago eso y tambien falla, en cuanto le asigno la variable al cursoradapter rebota en ese momento, si siquiera llego al cursorfill() Saludos Hernan - Original Message - From: Lucas Fabbi [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:51 AM Subject: [gufa] Cursoradapter mmm no se si entedi bien... Si vos tenes un select muy largo y lo queres meter en un cursor adapter en el SelectCMD yo lo que hago uso Text endText o una variable lcSelect = ' Select (lo que quieras) from tabla inner join lo que quieras' despues le paso al SelectCMD del cursorAdapter la variable y listo no se si era eso saludos Lucas - Mensaje original De: Hernán Baranda [EMAIL PROTECTED] Para: gufa List Member gufa@mug.org.ar Enviado: miércoles 14 de marzo de 2007, 10:25:26 Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan __ Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). ¡Probalo ya! http://www.yahoo.com.ar/respuestas
[gufa] Cursoradapter
Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan
[gufa] Cursoradapter
Hola Hernan: Probá con: Text To cSQL NoShow TextMerge Pretext 15 Endtext El error que te tira puede ser que encuentre algun retorno de carro u otro carácter no imprimible Del help: The following table lists numeric additive flags that you can use in eExpression to specify additional behavior. Value Description 1Eliminate spaces before each line. 2Eliminate tabs before each line. 4Eliminate carriage returns, for example, blank lines, before each line. 8Eliminate line feeds. Salu2 Ricardo Aidelman (Socio 1545) Praxis Computación Buenos Aires Argentina -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.11/721 - Release Date: 13/03/2007 16:51
[gufa] Cursoradapter
Probaron con var1 = '' (hasta 254) var2 = '...' hasta 254 var3 = var1 + var2 y pasar var3 ?? Alguna vez lo use con un select común y me anduvo. Pablo Sigüenza Socio # 1074 - Original Message - From: Hernán Baranda [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan
[gufa] Cursoradapter
Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan __ Información de NOD32, revisión 2114 (20070314) __ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com
[gufa] Cursoradapter
vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan __ Información de NOD32, revisión 2114 (20070314) __ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com
[gufa] Cursoradapter
Hernan, me podes pasar las lineas de codigo de como pones esos 200 y pico de caracteres Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 1:10 PM Subject: [gufa] Cursoradapter vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Hola Martin Sabes que haciendo el UpdatableFieldList con Text ... EndText tambien me tiro error? . No se bien que hacer porque de las 2 maneras tira error. Seguramente es mejor con Text ... EndText, no se porque pero si todo el mundo lo hace debe ser asi. Pero esa tambien falla. Saludos Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 10:52 AM Subject: [gufa] Cursoradapter Hernan: Podes hacer: TEXT TO cSql NOSHOW PRETEXT 7 SELECT ... ENDTEXT Y después asignas a la propiedad que corresponda la variable cSql Abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán Baranda Enviado el: Miércoles, 14 de Marzo de 2007 10:25 a.m. Para: gufa List Member Asunto: [gufa] Cursoradapter Gente con la noticia del dia (vfp10 minga!!!) a mi tema nadie le va a dar bolilla :-) pero bueno, si alguien se acuerda de leerme, please, que me conteste. Como se hace para meter una propiedad de mas de 252 caracteres en un cursoradapter??? Sobre todo estoy hablando de SelectCmd, UpdateNameList y UpdatableFieldList. Porque si tengo esa limitacion, como hago para traer un select de varias tablas? no llego nunca a menos que sea un select con pocos campos. Y lo mismo corre para las otras 2 propiedades que mencione. Gracias Hernan __ Información de NOD32, revisión 2114 (20070314) __ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com __ Información de NOD32, revisión 2114 (20070314) __ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com
[gufa] Cursoradapter
Si utilizas ALIAS para hacer la consulta mas corta no te funciona? Algo asi: cSelectCmd = 'SELECT EC.expr_cliid, EC.clienteid, EC.expresoid, ' cSelectCmd = cSelectCmd + 'E.nombre, E.direccion, E.localidad, ' cSelectCmd = cSelectCmd + 'E.tele1, E.tele2, E.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli EC, Expresos E' cSelectCmd = cSelectCmd + 'WHERE EC.expresoid = E.expresoid ' cSelectCmd = cSelectCmd + 'AND EC.expr_cliid = 0' Saludos.Sebastian E. Garcia From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: [gufa] CursoradapterDate: Wed, 14 Mar 2007 14:42:57 -0300 Asi anda barbaro cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Asi se va al diablo cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2, Expresos.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' La diferencia esta en que este ultimo string tiene un campo mas, Expresos.tele3 Y cuando intento asignar ese campo a la propiedad SelectCmd tira error thisform.MyCursorAdapter.SelectCmd = cSelectCmd chau, se va al Catch to. - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 2:06 PM Subject: [gufa] Cursoradapter Hernan, me podes pasar las lineas de codigo de como pones esos 200 y pico de caracteres SaludosPabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 1:10 PM Subject: [gufa] Cursoradapter vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter SaludosPabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno.Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun)Hernan- Original Message - From: Martín R. Comparetto [EMAIL PROTECTED]To: gufa List Member gufa@mug.org.arSent: Wednesday, March 14, 2007 11:08 AMSubject: [gufa] CursoradapterFijate que no te quede ningún salto de línea, o algún carácter extraño deesos.Sino, podes hacer:cUpdateFieldList = .cUpdateFieldList = cUpdateFieldList + .cUpdateFieldList = cUpdateFieldList + .(todos los que necesites)Y así, la cadena te va a permitir mas de 254 caracteres.Un abrazo,Martín R. [EMAIL PROTECTED](0341) 425-9808www.newdev.com.ar-Mensaje original-De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Hernán BarandaEnviado el: Miércoles, 14 de Marzo de 2007 11:03 a.m.Para: gufa List MemberAsunto: [gufa] CursoradapterHola MartinSabes que haciendo el UpdatableFieldList con Text ... EndText tambien metiro error? . No se bien que hacer porque de las 2 maneras tira error.Seguramente es mejor con Text ... EndText, no se porque pero si todo elmundo lo hace debe ser asi. Pero esa tambien falla.SaludosHernan- Original Message -From: Martín R. Comparetto [EMAIL PROTECTED]To: gufa List Member gufa@mug.org.arSent: Wednesday, March 14, 2007 10:52 AMSubject: [gufa] CursoradapterHernan:Podes hacer:TEXT TO cSql NOSHOW PRETEXT 7SELECT ...ENDTEXTY después asignas a la propiedad que corresponda la variable cSqlAbrazo,Martín R. [EMAIL PROTECTED](0341) 425
[gufa] Cursoradapter
Hernan debo estar muy fisurado pero no veo la diferencia entre lo de arriba y lo de abajo, que campo de mas?? Por otro lado, aunque en VFP9 deberia funcionar porque no evitas apuntar a las bases siempre que no tengas campos con el mismo nombre y dejas asi cSelectCmd = 'SELECT expr_cliid, clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'nombre, direccion, localidad, ' cSelectCmd = cSelectCmd + 'tele1, tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 2:42 PM Subject: [gufa] Cursoradapter Asi anda barbaro cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Asi se va al diablo cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2, Expresos.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' La diferencia esta en que este ultimo string tiene un campo mas, Expresos.tele3 Y cuando intento asignar ese campo a la propiedad SelectCmd tira error thisform.MyCursorAdapter.SelectCmd = cSelectCmd chau, se va al Catch to. - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 2:06 PM Subject: [gufa] Cursoradapter Hernan, me podes pasar las lineas de codigo de como pones esos 200 y pico de caracteres Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 1:10 PM Subject: [gufa] Cursoradapter vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList = . cUpdateFieldList = cUpdateFieldList + . cUpdateFieldList = cUpdateFieldList + . (todos los que necesites) Y así, la cadena te va a permitir mas de 254 caracteres. Un abrazo, Martín R. Comparetto [EMAIL PROTECTED] (0341) 425-9808 www.newdev.com.ar -Mensaje original- De: gufa@mug.org.ar [mailto
[gufa] Cursoradapter
Tenes razooo. Claaaro, que gil, ni me acorde de esa. No resuelve el problema grande pero, hasta que le encuentre la vuelta, sigo trabajando porque, lo que es ahora, estoy re-parado. Gracias Hernan - Original Message - From: Sebastian Garcia To: gufa List Member Sent: Wednesday, March 14, 2007 3:01 PM Subject: [gufa] Cursoradapter Si utilizas ALIAS para hacer la consulta mas corta no te funciona? Algo asi: cSelectCmd = 'SELECT EC.expr_cliid, EC.clienteid, EC.expresoid, ' cSelectCmd = cSelectCmd + 'E.nombre, E.direccion, E.localidad, ' cSelectCmd = cSelectCmd + 'E.tele1, E.tele2, E.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli EC, Expresos E' cSelectCmd = cSelectCmd + 'WHERE EC.expresoid = E.expresoid ' cSelectCmd = cSelectCmd + 'AND EC.expr_cliid = 0' Saludos. Sebastian E. Garcia From: [EMAIL PROTECTED] To: gufa@mug.org.ar Subject: [gufa] Cursoradapter Date: Wed, 14 Mar 2007 14:42:57 -0300 Asi anda barbaro cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Asi se va al diablo cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2, Expresos.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' La diferencia esta en que este ultimo string tiene un campo mas, Expresos.tele3 Y cuando intento asignar ese campo a la propiedad SelectCmd tira error thisform.MyCursorAdapter.SelectCmd = cSelectCmd chau, se va al Catch to. - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 2:06 PM Subject: [gufa] Cursoradapter Hernan, me podes pasar las lineas de codigo de como pones esos 200 y pico de caracteres Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 1:10 PM Subject: [gufa] Cursoradapter vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa@mug.org.ar Sent: Wednesday, March 14, 2007 11:08 AM Subject: [gufa] Cursoradapter Fijate que no te quede ningún salto de línea, o algún carácter extraño de esos. Sino, podes hacer: cUpdateFieldList
[gufa] Cursoradapter
Pablo los mails tenes que leerlos a la mañana, a la tarde ya el cerebro no da :-D en el tercer renglon estaba esto, donde el campo de mas era Expresos.tele3 cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2, Expresos.tele3 ' Otra, no se porque pero me gusta poner la base, pero, digo yo, podria haberme acordado de poner un alias con una sola letra, no? Gracias Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 3:02 PM Subject: [gufa] Cursoradapter Hernan debo estar muy fisurado pero no veo la diferencia entre lo de arriba y lo de abajo, que campo de mas?? Por otro lado, aunque en VFP9 deberia funcionar porque no evitas apuntar a las bases siempre que no tengas campos con el mismo nombre y dejas asi cSelectCmd = 'SELECT expr_cliid, clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'nombre, direccion, localidad, ' cSelectCmd = cSelectCmd + 'tele1, tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 2:42 PM Subject: [gufa] Cursoradapter Asi anda barbaro cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' Asi se va al diablo cSelectCmd = 'SELECT Expr_cli.expr_cliid, Expr_cli.clienteid, Expr_cli.expresoid, ' cSelectCmd = cSelectCmd + 'Expresos.nombre, Expresos.direccion, Expresos.localidad, ' cSelectCmd = cSelectCmd + 'Expresos.tele1, Expresos.tele2, Expresos.tele3 ' cSelectCmd = cSelectCmd + 'FROM Expr_cli, Expresos ' cSelectCmd = cSelectCmd + 'WHERE Expr_cli.expresoid = Expresos.expresoid ' cSelectCmd = cSelectCmd + 'AND Expr_cli.expr_cliid = 0' La diferencia esta en que este ultimo string tiene un campo mas, Expresos.tele3 Y cuando intento asignar ese campo a la propiedad SelectCmd tira error thisform.MyCursorAdapter.SelectCmd = cSelectCmd chau, se va al Catch to. - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 2:06 PM Subject: [gufa] Cursoradapter Hernan, me podes pasar las lineas de codigo de como pones esos 200 y pico de caracteres Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 1:10 PM Subject: [gufa] Cursoradapter vfp9 sp1, es decir con todos los chiches. Sabes que leyendo algo de MarkMcCassland, que hizo un builder para manejo de cursoradapters, el decia exactamente lo mismo que vos. El problema que tengo es que parece que a mi eso no me toca ;-( *!* There was a known issue with a limitation in the Property sheet *!* which only allowed the display of a maximum of 255 characters. *!* This was particularly annoying for properties like CursorSchema *!* because without information in the CursorSchema property, you *!* could not drag fields from the cursor and drop them onto a form. *!* This limitation of the Property Sheet NO LONGER EXISTS. Hernan - Original Message - From: PabloC To: gufa List Member Sent: Wednesday, March 14, 2007 12:53 PM Subject: [gufa] Cursoradapter Hernan conque version de VFP lo estas probando, tengo entendido que eso era una limitacion de la primer version del cursoradapter Saludos PabloC - Original Message - From: Hernán Baranda To: gufa List Member Sent: Wednesday, March 14, 2007 11:50 AM Subject: [gufa] Cursoradapter No hay caso, usando lo que sugeris para evitar caracteres extraños y otras yerbas tampoco. En cuanto llego a la linea donde le asigno la variable a la propiedad tira error. En ese momento el string tiene 269 caracteres, si le saco un campo me queda de 254 caracteres y ahi anda fenomeno. Esto es una pesadilla. Alguien NO tiene este problema?, me encantaria saber que tiene solucion aunque yo no la conozca (aun) Hernan - Original Message - From: Martín R. Comparetto [EMAIL PROTECTED] To: gufa List Member gufa
[gufa] CursorAdapter
Estimados Colegas Les hago un pregunta... ? La actualización de los 50.000 o 190.000 registros es una tarea que hacen siempre ? o ? Es por unica vez? No les convendra escribir un Store Procedure que haga la actualización masiva tomando los datos directamente desde el mismo servidor, evitando generar asi tanto trafico para crear los datos locales con el CursorAdapter. En nuestra empresa trabajamos con 5 Servidores SQL Server con grandes Bases de Datos (del orden de 65 Gb.), y utilizamos VFP (todas las versiones) + accesos a datos (como vistas remotas, sql pass trough, ado, cursoradapter) y del lado del servidor vistas y store procedure. Y la verdad es que nunca movemos tanta cantidad de registros a las terminales para luego actualizar los datos en Sql Server. Me parece que deberian optimizar/mejorar la estrategia de actualización de datos. Saludos José Paez Córdoba - Argentina - Original Message - From: Sergio Suarez To: gufa List Member Sent: Monday, February 12, 2007 8:34 PM Subject: [gufa] CursorAdapter Yo estebe haciendo algunas prueba y de unos 190.000 registros y tardo unos 15 minutos, es que el sql estaba en mi maquina, el problema puede estar en la red o en el servidor. Saludos Sergio. De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de R.Rodrigo Enviado el: Lunes, 12 de Febrero de 2007 19:34 Para: gufa List Member Asunto: [gufa] CursorAdapter Amigos, gracias por vuestra ayuda. Ya casi tengo resueltos mis problemas respecto a los CA Una pregunta, es normal que para actualizar 50.000 registros usando CA contra SQL tarde +- 30 minutos ?? Solo actualizo dos campos de 6 caracteres cada uno Un saludo -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 Visita www.tutopia.com y comienza a navegar más rápido en Internet. Tutopia es Internet para todos.
[gufa] CursorAdapter
No es por algo espesifico. Saludos. Sergio On Mar Feb 13 16:16 , José Paez [EMAIL PROTECTED] sent: Estimados Colegas Les hago un pregunta... ¿ La actualización de los 50.000 o 190.000 registros es una tarea que hacen siempre ? o ¿ Es por unica vez? No les convendra escribir un Store Procedure que haga la actualización masiva tomando los datos directamente desde el mismo servidor, evitando generar asi tanto trafico para crear los datos locales con el CursorAdapter. En nuestra empresa trabajamos con 5 Servidores SQL Server con grandes Bases de Datos (del orden de 65 Gb.), y utilizamos VFP (todas las versiones) + accesos a datos (como vistas remotas, sql pass trough, ado, cursoradapter) y del lado del servidor vistas y store procedure. Y la verdad es que nunca movemos tanta cantidad de registros a las terminales para luego actualizar los datos en Sql Server. Me parece que deberian optimizar/mejorar la estrategia de actualización de datos. Saludos José Paez Córdoba - Argentina - Original Message - From: Sergio Suarez To: gufa List Member Sent: Monday, February 12, 2007 8:34 PM Subject: [gufa] CursorAdapter Yo estebe haciendo algunas prueba y de unos 190.000 registros y tardo unos 15 minutos, es que el sql estaba en mi maquina, el problema puede estar en la red o en el servidor. Saludos Sergio. De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de R.Rodrigo Enviado el: Lunes, 12 de Febrero de 2007 19:34 Para: gufa List Member Asunto: [gufa] CursorAdapter Amigos, gracias por vuestra ayuda. Ya casi tengo resueltos mis problemas respecto a los CA Una pregunta, es normal que para actualizar 50.000 registros usando CA contra SQL tarde +- 30 minutos ?? Solo actualizo dos campos de 6 caracteres cada uno Un saludo -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 Visita www.tutopia.com y comienza a navegar más rápido en Internet. Tutopia es Internet para todos. Visita www.tutopia.com y comienza a navegar ms rpido en Internet.Tutopia es Internet para todos.
[gufa] CursorAdapter
Amigos, gracias por vuestra ayuda. Ya casi tengo resueltos mis problemas respecto a los CA Una pregunta, es normal que para actualizar 50.000 registros usando CA contra SQL tarde +- 30 minutos ?? Solo actualizo dos campos de 6 caracteres cada uno Un saludo
[gufa] CursorAdapter
Yo estebe haciendo algunas prueba y de unos 190.000 registros y tardo unos 15 minutos, es que el sql estaba en mi maquina, el problema puede estar en la red o en el servidor. Saludos Sergio. _ De: gufa@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de R.Rodrigo Enviado el: Lunes, 12 de Febrero de 2007 19:34 Para: gufa List Member Asunto: [gufa] CursorAdapter Amigos, gracias por vuestra ayuda. Ya casi tengo resueltos mis problemas respecto a los CA Una pregunta, es normal que para actualizar 50.000 registros usando CA contra SQL tarde +- 30 minutos ?? Solo actualizo dos campos de 6 caracteres cada uno Un saludo -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007 13:23 __ Visita http://www.tutopia.com y comienza a navegar más rápido en Internet. Tutopia es Internet para todos.