Error en cursoradapter

29/06/2005 - 20:57 por Victor Manuel Alcocer Antonio | Informe spam
Disculpen, la molestia compañeros, alguien puede decirme como generar un
cursoradapter aunque quede vacío. El problema es que le paso una claúsula
WHERE en selectCMD y me marca error si no encuentra registros coincidentes
y necesito que me genere el cursor aunque este vacío.

De antemano, muchas gracias por el apoyo


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#1 Argenis Villarroel
29/06/2005 - 22:51 | Informe spam
Ok dejame ver si entendí, cuando le pasas el parámetro cFiltro con algun
valor, se arma el cursoradapter.
Si es asi
deberias de probar a ver si esto te sirve
lcSelect = 'Select [*] [lista de campos] From Tabla
'+IIF(!Empty(cFiltro),'Where '+alltrim(cFiltro),'')

lo que puede estar sucediendo es que que estas aplicando la clausula Where
en vacio es decir algo como esto 'Select * From Tabla Where ' esto genera un
error

espero te sirva

********************************
Argenis Villarroel
VFP / C# .NET
Caracas - Venezuela
********************************

"Victor Manuel Alcocer Antonio" escribió en el mensaje
news:
Si mira, te explico.

Hice una clase con el builder que trae VFP 9, le agrege una propiedad
(cFilter) en ella le agrego al cursor adapter la clausula WHERE Del
SelectCMD (el [ WHERE ] + THIS.cFiltro).

El detalle es que al usar mi clase cursoradapter en un formulario, cuando
el criterio de .cFiltro se cumple, me devuelve el cursor (caPuestos), pero
cuando el criterio no se cumple (es decir, no existe ni un solo registro
que cumpla la condicion WHERE), no me genera el cursor y el recorset de mi
grid (grdPuestos) me marca que el cursor puestos no existe.

Lo que deseo es que, aunque no existan registros, me genere el cursor para
que pueda agregarle registros.

Por la ayuda, mil gracias


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Argenis Villarroel
29/06/2005 - 22:59 | Informe spam
Disculpa me falto
oCursorAdapter.SelectCmd = lcSelect

Ahora si espero te sirva

********************************
Argenis Villarroel
VFP / C# .NET
Caracas - Venezuela
********************************

"Argenis Villarroel" escribió en el mensaje
news:
Ok dejame ver si entendí, cuando le pasas el parámetro cFiltro con algun
valor, se arma el cursoradapter.
Si es asi
deberias de probar a ver si esto te sirve
lcSelect = 'Select [*] [lista de campos] From Tabla
'+IIF(!Empty(cFiltro),'Where '+alltrim(cFiltro),'')

lo que puede estar sucediendo es que que estas aplicando la clausula Where
en vacio es decir algo como esto 'Select * From Tabla Where ' esto genera
un error

espero te sirva

********************************
Argenis Villarroel
VFP / C# .NET
Caracas - Venezuela
********************************

"Victor Manuel Alcocer Antonio" escribió en el
mensaje news:
Si mira, te explico.

Hice una clase con el builder que trae VFP 9, le agrege una propiedad
(cFilter) en ella le agrego al cursor adapter la clausula WHERE Del
SelectCMD (el [ WHERE ] + THIS.cFiltro).

El detalle es que al usar mi clase cursoradapter en un formulario, cuando
el criterio de .cFiltro se cumple, me devuelve el cursor (caPuestos),
pero
cuando el criterio no se cumple (es decir, no existe ni un solo registro
que cumpla la condicion WHERE), no me genera el cursor y el recorset de
mi
grid (grdPuestos) me marca que el cursor puestos no existe.

Lo que deseo es que, aunque no existan registros, me genere el cursor
para
que pueda agregarle registros.

Por la ayuda, mil gracias


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway




Respuesta Responder a este mensaje
#3 Victor Manuel Alcocer Antonio
30/06/2005 - 15:48 | Informe spam
Gracias por apoyarme Argenis, te comento mas a fondo todavía


La propiedad SelectCMD tiene el siguiente valor:
SELECT categoria, puesto, descripcion FROM puestos


El metodo Before CursorFill tiene el siguiente código
LPARAMETERS luseCursorSchema, lNoDataOnLoad, cSelectCmd
*** Indicamos al cursor que no cargue datos
lNoDataOnLoad = THIS.lNoDataOnLoad

*** Indicamos la instruccion SELECT
IF NOT EMPTY(THIS.cSelectCMD)
cSelectCMD = THIS.cSelectCMD
ELSE
cSelectCMD = THIS.SelectCMD
ENDIF

*** Agregamos la claúsula WHERE (cFiltro), si la hay
IF NOT EMPTY(THIS.cFiltro)
cSelectCMD = cSelectCMD + [ WHERE ] + THIS.cFiltro
ENDIF

*** Agregamos la claúsula ORDER BY (cOrderBy), si la hay
IF NOT EMPTY(THIS.cOrder)
cSelectCMD = cSelectCMD + [ ORDER BY ] + THIS.cOrder
ENDIF


En el formulario donde ultilizo esta clase cursoradapter, el filtro es:
WITH THISFORM.DataEnvironment.Cursor2
.lNoDataOnLoad = .F.
IF NOT EMPTY(vercatego.categoria)
.cFiltro = [categoria = '] + vercatego.categoria + [']
ELSE
.cFiltro = ""
ENDIF
.cOrder = [categoria, puesto]
.CursorFill()
ENDWITH



El problema en sí es que cuando la consulta SELECT no obtiene nigun
registro (porque la claúsula SELECT no se cumple), no me genera el cursor,
entonces el formulario marca el error: "El cursor Puestos NO Existe".

Lo que necesito es que me genere el cursor aunque este vacío para que
pueda agregarle registros

De antemano, mil gracias por el apoyo

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#4 Richard Silva
30/06/2005 - 16:57 | Informe spam
Hola Víctor,

pudieras cambiar un poco el código, algo así puede servirte:

IF NOT EMPTY(vercatego.categoria)
.cFiltro = [categoria = '] + vercatego.categoria + [']
ELSE
.cFiltro = "1>2" && En lugar de .cFiltro = ""
ENDIF

Espero sea lo que buscas,

Saludos,

Richard.

"Victor Manuel Alcocer Antonio" escribió en el mensaje
news:#
Gracias por apoyarme Argenis, te comento mas a fondo todavía


La propiedad SelectCMD tiene el siguiente valor:
SELECT categoria, puesto, descripcion FROM puestos


El metodo Before CursorFill tiene el siguiente código
LPARAMETERS luseCursorSchema, lNoDataOnLoad, cSelectCmd
*** Indicamos al cursor que no cargue datos
lNoDataOnLoad = THIS.lNoDataOnLoad

*** Indicamos la instruccion SELECT
IF NOT EMPTY(THIS.cSelectCMD)
cSelectCMD = THIS.cSelectCMD
ELSE
cSelectCMD = THIS.SelectCMD
ENDIF

*** Agregamos la claúsula WHERE (cFiltro), si la hay
IF NOT EMPTY(THIS.cFiltro)
cSelectCMD = cSelectCMD + [ WHERE ] + THIS.cFiltro
ENDIF

*** Agregamos la claúsula ORDER BY (cOrderBy), si la hay
IF NOT EMPTY(THIS.cOrder)
cSelectCMD = cSelectCMD + [ ORDER BY ] + THIS.cOrder
ENDIF


En el formulario donde ultilizo esta clase cursoradapter, el filtro es:
WITH THISFORM.DataEnvironment.Cursor2
.lNoDataOnLoad = .F.
IF NOT EMPTY(vercatego.categoria)
.cFiltro = [categoria = '] + vercatego.categoria + [']
ELSE
.cFiltro = ""
ENDIF
.cOrder = [categoria, puesto]
.CursorFill()
ENDWITH



El problema en sí es que cuando la consulta SELECT no obtiene nigun
registro (porque la claúsula SELECT no se cumple), no me genera el cursor,
entonces el formulario marca el error: "El cursor Puestos NO Existe".

Lo que necesito es que me genere el cursor aunque este vacío para que
pueda agregarle registros

De antemano, mil gracias por el apoyo


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#5 Victor Manuel Alcocer Antonio
30/06/2005 - 18:09 | Informe spam
Aprecio mucha la ayuda que me están dando, he probado las pistas que me
han dado y aún tengo el problema, cuando se cumple la condicion de
cFiltro, el cursoradapter se llena de datos, cuando no se cumple la
condicion, el cursoradapter no se genera y lo que necesito es que se
genere aunque este vacío.

Como puedo hacer para que el cursoradapter sea creado a pesar de que no
tenga registros.

Mil gracias anticipadas.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida