Página 1 de 1

Controlar un RecordSet Vacio

Publicado: Vie Dic 09, 2005 11:44 pm
por Pedro Amaro
Al hacer una consulta sql mediante el driver Odbc de FireBird en la que ya
se que no va ha retornar nada, puesto que no hay ningun registro que cumpla
con las condiciones de la consulta me retorna el siguiente error...
----------------------- Información detallada del
error -----------------------
Subsistema: BASE
Código de error: 1002
Estado: .F.
Descripción: Alias does not exist
Operación: XA_DataSet
Argumentos:
Fichero:
Código error SO: 0
el codigo que utilizo es el siguiente...
WITH OBJECT ::oOdbcData
if !:lConnected
:cConnect :="Driver=Firebird/InterBase(r) driver;" etc....
:lConnected := .T.
endif
if :lConnected
::oDataSet := :NewDataSet( ::FcConsulta ) // ::FcConsulta contiene
la cadena SELECT
::oDataSet:OnComplete := {|| ::RellenaList() }
::oDataSet:Open()
endif
END WITH
Pero el error no surge hasta que intento ver el valor de
::oDataSet:RecCount,
¿Como puedo saber de antemano que el DataSet esta vacio??
Saludos
Pedro Amaro

Controlar un RecordSet Vacio

Publicado: Sab Dic 10, 2005 11:26 am
por ignacio
Pedro,
Da la sensación de que se ha producido un error en el método Open(). El
problema no es que esté vacío, sino, que ni siquiera está abierto.
A no ser de que haya evitado con las propiedades del DataSet la
visualización de errores debería haber recibido algún error indicandole el
problema. Compruebe que Open() retorna verdadero.
Saludos,
"Pedro Amaro" <dospcservice@tiscali.es> escribió en el mensaje
news:439a08bb$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Al hacer una consulta sql mediante el driver Odbc de FireBird en la que ya
> se que no va ha retornar nada, puesto que no hay ningun registro que
> cumpla con las condiciones de la consulta me retorna el siguiente error...
>
> ----------------------- Información detallada del
> error -----------------------
>
> Subsistema: BASE
> Código de error: 1002
> Estado: .F.
> Descripción: Alias does not exist
> Operación: XA_DataSet
> Argumentos:
> Fichero:
> Código error SO: 0
>
>
> el codigo que utilizo es el siguiente...
>
> WITH OBJECT ::oOdbcData
> if !:lConnected
> :cConnect :="Driver=Firebird/InterBase(r) driver;" etc....
> :lConnected := .T.
> endif
>
> if :lConnected
> ::oDataSet := :NewDataSet( ::FcConsulta ) // ::FcConsulta contiene
> la cadena SELECT
> ::oDataSet:OnComplete := {|| ::RellenaList() }
> ::oDataSet:Open()
> endif
> END WITH
>
> Pero el error no surge hasta que intento ver el valor de
> ::oDataSet:RecCount,
>
> ¿Como puedo saber de antemano que el DataSet esta vacio??
>
> Saludos
> Pedro Amaro
>
>

Controlar un RecordSet Vacio

Publicado: Lun Dic 12, 2005 1:00 pm
por Pedro Amaro
Buenos dias Ignacio;
> Da la sensación de que se ha producido un error en el método Open(). El
> problema no es que esté vacío, sino, que ni siquiera está abierto.
El error surge al utilizar alguna propiedad del DataSet,
> A no ser de que haya evitado con las propiedades del DataSet la
> visualización de errores debería haber recibido algún error indicandole el
> problema. Compruebe que Open() retorna verdadero.
pero lOpen me da .T.
He cambiado todo el codigo para utilizar los OdbcDataSet pero me da el mismo
error en el mismo sitio
Saludos

Controlar un RecordSet Vacio

Publicado: Lun Dic 12, 2005 1:18 pm
por Pedro Amaro
He llenado el codigo de msginfos y rastreando la ejecución veo que el error
me lo da despues de proceder al cerado de DataSource, puesto que al no tener
nada en el DataSet produzco el cierre del DataSource (:end) y del
formulario.
Tengo el codigo del '::oOdbcDataSource:end' en el evento FormDestroy del
formulario, puede ser que en ese momento ya no exista el oDataSet y por lo
tanto al cerrar el DataSource nos de el errro.
Saludos

Controlar un RecordSet Vacio

Publicado: Lun Dic 12, 2005 1:46 pm
por Pedro Amaro
Ya lo pille; estaba cancelando el oDataSource dentro del evento OnComplet
del DataSet, lo he sacado fuera poniendo las conciones despues del :Open y
cerrando si es precioso.
Saludos
Pedro Amaro

Controlar un RecordSet Vacio

Publicado: Mar Dic 13, 2005 10:17 am
por ignacio
Pedro,
> Tengo el codigo del '::oOdbcDataSource:end' en el evento FormDestroy del
> formulario, puede ser que en ese momento ya no exista el oDataSet y por lo
> tanto al cerrar el DataSource nos de el errro.
Efectivamente, todos los componentes de un form se destruyen automáticamente
cuando este se destruye. No hace falta que hagas nada.
Un saludo,
"Pedro Amaro" <dospcservice@tiscali.es> escribió en el mensaje
news:439d6a82$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> He llenado el codigo de msginfos y rastreando la ejecución veo que el
> error me lo da despues de proceder al cerado de DataSource, puesto que al
> no tener nada en el DataSet produzco el cierre del DataSource (:end) y del
> formulario.
>
> Tengo el codigo del '::oOdbcDataSource:end' en el evento FormDestroy del
> formulario, puede ser que en ese momento ya no exista el oDataSet y por lo
> tanto al cerrar el DataSource nos de el errro.
>
> Saludos
>
>