Como me ha dicho Ignacio, he creado un oDbcdatasource en el Form Principal.
Como yo lo que pretendo es que el oDbcDatasource sea publico (por problemas
de rapidez con el servidor mysql remoto) pero que los distintos datasets
vayan en cada form he hecho las siguientes asignaciones en el
FormInitialize:
::oOdbcDataset1:oDataSource:=Application:oMainForm:oODbcData Source1
::oOdbcDataSet1:cSelect:="SELECT * FROM Seccion"
::oOdbcDataSet1:lOpen:=.t.
Con esto ya tengo el dataser de cada formulario creado, pero ahora necesito
asignarle el dataset a los controles y me encuentro con el problema de que
si lo hago en el ONCREATE del control, este se ejecuta despues del
FORMINITIALIZE y por tanto el oDbcDataSet no existe aun. Necsitaria un
evento comun a todos los controles que se ejecute solo una vez y que lo haga
despues del FormInitilize. O Alguna otra idea para hacer esto.
Gracias
Pablo
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Odbc y DataSource publico
-
- Mensajes: 260
- Registrado: Lun Feb 07, 2005 1:20 pm
Odbc y DataSource publico
Pablo,
> Con esto ya tengo el dataser de cada formulario creado, pero ahora
> necesito asignarle el dataset a los controles y me encuentro con el
> problema de que si lo hago en el ONCREATE del control, este se ejecuta
> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
> Necsitaria un evento comun a todos los controles que se ejecute solo una
> vez y que lo haga despues del FormInitilize. O Alguna otra idea para hacer
> esto.
Lo del mensaje anterior no es ninguna tontería
Precísamente es al revés de como creías... el evento OnInitialize del
formulario se dispara cuando ya se han creado todos los controles. Pero
antes de eso, ya se han disparado los eventos OnCreate de cada control.
Resumiendo, este sería el orden en que se ejecutan los eventos:
- OnCreate del formulario
- OnCreate de cada uno de los controles, en el orden que tengan de creación
- OnInitialize del formulario
En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que ese
evento no existe en el DataSet.
Una solución temporal (mientras añadimos ese evento) que puedes usar es
asignar el DataSet desde el evento OnCreate del primer control del
formulario. En ese momento, ya está creado el DataSet, ya que todos los
componentes no visuales se crean antes de los controles. Por eso puedes
asignarlo, y te aseguras que los demás controles no están todavía creados, y
que cuando se creen tomarán correctamente el DataSet.
--
Un saludo,
José F. Giménez
> Con esto ya tengo el dataser de cada formulario creado, pero ahora
> necesito asignarle el dataset a los controles y me encuentro con el
> problema de que si lo hago en el ONCREATE del control, este se ejecuta
> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
> Necsitaria un evento comun a todos los controles que se ejecute solo una
> vez y que lo haga despues del FormInitilize. O Alguna otra idea para hacer
> esto.
Lo del mensaje anterior no es ninguna tontería

Precísamente es al revés de como creías... el evento OnInitialize del
formulario se dispara cuando ya se han creado todos los controles. Pero
antes de eso, ya se han disparado los eventos OnCreate de cada control.
Resumiendo, este sería el orden en que se ejecutan los eventos:
- OnCreate del formulario
- OnCreate de cada uno de los controles, en el orden que tengan de creación
- OnInitialize del formulario
En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que ese
evento no existe en el DataSet.
Una solución temporal (mientras añadimos ese evento) que puedes usar es
asignar el DataSet desde el evento OnCreate del primer control del
formulario. En ese momento, ya está creado el DataSet, ya que todos los
componentes no visuales se crean antes de los controles. Por eso puedes
asignarlo, y te aseguras que los demás controles no están todavía creados, y
que cuando se creen tomarán correctamente el DataSet.
--
Un saludo,
José F. Giménez
-
- Mensajes: 260
- Registrado: Lun Feb 07, 2005 1:20 pm
Odbc y DataSource publico
Bingo, se lo he asignado a la Statusbar y va de coña, al tener el
oDbcDataSource una vez en la aplicacion, la velocidad se ha multiplicado por
n (ya dire el valor de n pero es alto), con lo de la tonteria me referia a
que yo mismo podia ver el oden poniendo unos msginfo() en los eventos.
Gracias, sigo con mi tema
Pablo
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:4209ff8c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Pablo,
>
>> Con esto ya tengo el dataser de cada formulario creado, pero ahora
>> necesito asignarle el dataset a los controles y me encuentro con el
>> problema de que si lo hago en el ONCREATE del control, este se ejecuta
>> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
>> Necsitaria un evento comun a todos los controles que se ejecute solo una
>> vez y que lo haga despues del FormInitilize. O Alguna otra idea para
>> hacer esto.
>
> Lo del mensaje anterior no es ninguna tontería
>
> Precísamente es al revés de como creías... el evento OnInitialize del
> formulario se dispara cuando ya se han creado todos los controles. Pero
> antes de eso, ya se han disparado los eventos OnCreate de cada control.
> Resumiendo, este sería el orden en que se ejecutan los eventos:
>
> - OnCreate del formulario
> - OnCreate de cada uno de los controles, en el orden que tengan de
> creación
> - OnInitialize del formulario
>
> En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
> DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que
> ese evento no existe en el DataSet.
>
> Una solución temporal (mientras añadimos ese evento) que puedes usar es
> asignar el DataSet desde el evento OnCreate del primer control del
> formulario. En ese momento, ya está creado el DataSet, ya que todos los
> componentes no visuales se crean antes de los controles. Por eso puedes
> asignarlo, y te aseguras que los demás controles no están todavía creados,
> y que cuando se creen tomarán correctamente el DataSet.
>
> --
> Un saludo,
>
> José F. Giménez
>
oDbcDataSource una vez en la aplicacion, la velocidad se ha multiplicado por
n (ya dire el valor de n pero es alto), con lo de la tonteria me referia a
que yo mismo podia ver el oden poniendo unos msginfo() en los eventos.
Gracias, sigo con mi tema
Pablo
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:4209ff8c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Pablo,
>
>> Con esto ya tengo el dataser de cada formulario creado, pero ahora
>> necesito asignarle el dataset a los controles y me encuentro con el
>> problema de que si lo hago en el ONCREATE del control, este se ejecuta
>> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
>> Necsitaria un evento comun a todos los controles que se ejecute solo una
>> vez y que lo haga despues del FormInitilize. O Alguna otra idea para
>> hacer esto.
>
> Lo del mensaje anterior no es ninguna tontería

>
> Precísamente es al revés de como creías... el evento OnInitialize del
> formulario se dispara cuando ya se han creado todos los controles. Pero
> antes de eso, ya se han disparado los eventos OnCreate de cada control.
> Resumiendo, este sería el orden en que se ejecutan los eventos:
>
> - OnCreate del formulario
> - OnCreate de cada uno de los controles, en el orden que tengan de
> creación
> - OnInitialize del formulario
>
> En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
> DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que
> ese evento no existe en el DataSet.
>
> Una solución temporal (mientras añadimos ese evento) que puedes usar es
> asignar el DataSet desde el evento OnCreate del primer control del
> formulario. En ese momento, ya está creado el DataSet, ya que todos los
> componentes no visuales se crean antes de los controles. Por eso puedes
> asignarlo, y te aseguras que los demás controles no están todavía creados,
> y que cuando se creen tomarán correctamente el DataSet.
>
> --
> Un saludo,
>
> José F. Giménez
>
- ignacio
- Site Admin
- Mensajes: 9441
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Odbc y DataSource publico
Pablo,
El evento OnCreate en TDataSet ya está puesto. Estará disponible en breve.
Por otra parte te recomiendo que no uses Msginfo, utiliza LogDebug y veras
;-)
LogDebug( xPar1, ..., xParN )
Un saludo,
--
Ignacio Ortiz
www.xailer.com
"Pablo Herranz" <pablo@ibertabaco.com> escribió en el mensaje
news:420a0145$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Bingo, se lo he asignado a la Statusbar y va de coña, al tener el
> oDbcDataSource una vez en la aplicacion, la velocidad se ha multiplicado
> por n (ya dire el valor de n pero es alto), con lo de la tonteria me
> referia a que yo mismo podia ver el oden poniendo unos msginfo() en los
> eventos.
>
> Gracias, sigo con mi tema
>
> Pablo
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4209ff8c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Pablo,
>>
>>> Con esto ya tengo el dataser de cada formulario creado, pero ahora
>>> necesito asignarle el dataset a los controles y me encuentro con el
>>> problema de que si lo hago en el ONCREATE del control, este se ejecuta
>>> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
>>> Necsitaria un evento comun a todos los controles que se ejecute solo una
>>> vez y que lo haga despues del FormInitilize. O Alguna otra idea para
>>> hacer esto.
>>
>> Lo del mensaje anterior no es ninguna tontería
>>
>> Precísamente es al revés de como creías... el evento OnInitialize del
>> formulario se dispara cuando ya se han creado todos los controles. Pero
>> antes de eso, ya se han disparado los eventos OnCreate de cada control.
>> Resumiendo, este sería el orden en que se ejecutan los eventos:
>>
>> - OnCreate del formulario
>> - OnCreate de cada uno de los controles, en el orden que tengan de
>> creación
>> - OnInitialize del formulario
>>
>> En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
>> DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que
>> ese evento no existe en el DataSet.
>>
>> Una solución temporal (mientras añadimos ese evento) que puedes usar es
>> asignar el DataSet desde el evento OnCreate del primer control del
>> formulario. En ese momento, ya está creado el DataSet, ya que todos los
>> componentes no visuales se crean antes de los controles. Por eso puedes
>> asignarlo, y te aseguras que los demás controles no están todavía
>> creados, y que cuando se creen tomarán correctamente el DataSet.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>
El evento OnCreate en TDataSet ya está puesto. Estará disponible en breve.
Por otra parte te recomiendo que no uses Msginfo, utiliza LogDebug y veras
;-)
LogDebug( xPar1, ..., xParN )
Un saludo,
--
Ignacio Ortiz
www.xailer.com
"Pablo Herranz" <pablo@ibertabaco.com> escribió en el mensaje
news:420a0145$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Bingo, se lo he asignado a la Statusbar y va de coña, al tener el
> oDbcDataSource una vez en la aplicacion, la velocidad se ha multiplicado
> por n (ya dire el valor de n pero es alto), con lo de la tonteria me
> referia a que yo mismo podia ver el oden poniendo unos msginfo() en los
> eventos.
>
> Gracias, sigo con mi tema
>
> Pablo
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4209ff8c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Pablo,
>>
>>> Con esto ya tengo el dataser de cada formulario creado, pero ahora
>>> necesito asignarle el dataset a los controles y me encuentro con el
>>> problema de que si lo hago en el ONCREATE del control, este se ejecuta
>>> despues del FORMINITIALIZE y por tanto el oDbcDataSet no existe aun.
>>> Necsitaria un evento comun a todos los controles que se ejecute solo una
>>> vez y que lo haga despues del FormInitilize. O Alguna otra idea para
>>> hacer esto.
>>
>> Lo del mensaje anterior no es ninguna tontería

>>
>> Precísamente es al revés de como creías... el evento OnInitialize del
>> formulario se dispara cuando ya se han creado todos los controles. Pero
>> antes de eso, ya se han disparado los eventos OnCreate de cada control.
>> Resumiendo, este sería el orden en que se ejecutan los eventos:
>>
>> - OnCreate del formulario
>> - OnCreate de cada uno de los controles, en el orden que tengan de
>> creación
>> - OnInitialize del formulario
>>
>> En el caso que se te plantea, lo ideal sería usar el evento OnCreate del
>> DataSet, y asignarle ahí el DataSource correspondiente. Pero me temo que
>> ese evento no existe en el DataSet.
>>
>> Una solución temporal (mientras añadimos ese evento) que puedes usar es
>> asignar el DataSet desde el evento OnCreate del primer control del
>> formulario. En ese momento, ya está creado el DataSet, ya que todos los
>> componentes no visuales se crean antes de los controles. Por eso puedes
>> asignarlo, y te aseguras que los demás controles no están todavía
>> creados, y que cuando se creen tomarán correctamente el DataSet.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com