Página 1 de 1

DataSet globales.

Publicado: Lun Ene 07, 2008 3:32 pm
por ddupre
Hola Foro:
Antes que nada un feliz 2008 lleno de buenos programas para todos.
He realizado con éxito utilizar un DataSet desde un formulario hijo a
través del evento OnCreate de los Data controls que contiene dicho
formulario hijo. Ahora bien, mi idea es ir un poco mas allá y deseo
utilizar Data Sets que pertenecen a formularios que no necesariamente
son padres de otros.
El caso es este: en mi función de arranque del sistema "llamo" a un
formulario que le permite al usuario seleccionar la empresa con la que
quiere trabajar. En dicho formulario realizo la apertura de todas las
tablas de la base de datos de la empresa seleccionada (según
recomendación de ADS) y las tengo disponibles para el resto de la
aplicación. De esta forma necesito "decirle" al los formularios "padres"
que ahora utilicen los DataSets que ya están abiertos.
1) No se como hacer para ir pasando de formulario a formulario a
formulario, etc. los DataSets que deben utilizar. ¿alguna idea? he
realizado cosas como esta pero mi ignorancia en oop me lleva a errores.
METHOD BrowseRamosCreate( oSender ) CLASS TRamos
oSender:oDataSet := ::TEmpresa:oRamos
| |----> Tabla que quiero traspasar.
|
-----> Clase donde esta la apertura de tablas.

RETURN Nil
2) ¿Hay alguna novedad de DataModule? ¿ya lo implementaron y no me
enteré? o está en ví­as de desarrollo.
Desde ya muchas gracias.
Daniel.

DataSet globales.

Publicado: Mar Ene 08, 2008 11:32 am
por jfgimenez
Daniel,
> 1) No se como hacer para ir pasando de formulario a formulario a
> formulario, etc. los DataSets que deben utilizar. ¿alguna idea? he
> realizado cosas como esta pero mi ignorancia en oop me lleva a errores.
Lo más sencillo es utilizar AppData o variables globales para almacenar los
dataset, y así estarán disponibles desde todo el programa. P.ej, supongamos
que se almacenan en AppData; para asignarlos basta con:
oSender:oDataSet := AppData:oRamos
> 2) ¿Hay alguna novedad de DataModule? ¿ya lo implementaron y no me
> enteré? o está en vías de desarrollo.
Está previsto para la versión 2.0
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

DataSet globales.

Publicado: Mar Ene 08, 2008 12:43 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
JosÃ:<br>
<br>
Muchas gracias por tu sugerencia.<br>
<br>
Una pregunta mÃs: dado que estoy en los comienzos de la migraciÃn de mi
aplicaciÃn me gustarÃa saber si debo esperar mucho para la versiÃn 2
(mucho = 6 meses o mas), porque quiero evaluar si realizo toda la
apertura de tablas con variables globales o espero un poco y aprovecho
las ventajas de DataModule, la idea es no tener que reescribir cÃdigo.<br>
<br>
Nuevamente Gracias<br>
Daniel.<br>
<br>
<br>
Jose F. Gimenez escribiÃ:
<blockquote cite="mid:47835134@ozsrv2.ozlan.local" type="cite">
<pre wrap="">Daniel,
</pre>
<blockquote type="cite">
<pre wrap="">1) No se como hacer para ir pasando de formulario a formulario a
formulario, etc. los DataSets que deben utilizar. Âalguna idea? he
realizado cosas como esta pero mi ignorancia en oop me lleva a errores.
</pre>
</blockquote>
<pre wrap=""><!---->
Lo mÃs sencillo es utilizar AppData o variables globales para almacenar los
dataset, y asà estarÃn disponibles desde todo el programa. P.ej, supongamos
que se almacenan en AppData; para asignarlos basta con:
oSender:oDataSet := AppData:oRamos
</pre>
<blockquote type="cite">
<pre wrap="">2) ÂHay alguna novedad de DataModule? Âya lo implementaron y no me
enterÃ? o està en vÃas de desarrollo.
</pre>
</blockquote>
<pre wrap=""><!---->
Està previsto para la versiÃn 2.0
</pre>
</blockquote>
</body>
</html>

DataSet globales.

Publicado: Mar Ene 08, 2008 12:52 pm
por jfgimenez
Daniel,
Una pregunta más: dado que estoy en los comienzos de la migración de mi aplicación me gustarí­a saber si debo esperar mucho para la versión 2 (mucho = 6 meses o mas), porque quiero evaluar si realizo toda la apertura de tablas con variables globales o espero un poco y aprovecho las ventajas de DataModule, la idea es no tener que reescribir código.
No tenemos una fecha concreta, pero seguro que van a ser varios meses. Hay varias cosas de bastante calado previstas que nos van a llevar tiempo, pero que con toda seguridad van a merecer la pena ;-)
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
--

DataSet globales.

Publicado: Mar Ene 08, 2008 2:25 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
JosÃ:<br>
Gracias, voy a ir armando "otras partes" a ver si puedo ir "estirando
el tiempo" y llegamos mas o menos juntos a la ver. 2<br>
<br>
Saludos<br>
Daniel.<br>
<br>
<br>
Jose F. Gimenez escribiÃ:
<blockquote cite="mid:478363eb@ozsrv2.ozlan.local" type="cite">
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<meta content="MSHTML 6.00.2900.2180" name="GENERATOR">
<style></style>
<div><font face="Arial" size="2">Daniel,</font></div>
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div>Una pregunta mÃs: dado que estoy en los comienzos de la
migraciÃn de mi aplicaciÃn me gustarÃa saber si debo esperar mucho para
la versiÃn 2 (mucho = 6 meses o mas), porque quiero evaluar si realizo
toda la apertura de tablas con variables globales o espero un poco y
aprovecho las ventajas de DataModule, la idea es no tener que
reescribir cÃdigo.</div>
</blockquote>
<div dir="ltr">No tenemos una fecha concreta, pero seguro que van a
ser varios meses. Hay varias cosas de bastante calado previstas que nos
van a llevar tiempo, pero que con toda seguridad van aÂmerecer la penaÂ
;-)</div>
<div dir="ltr"><font face="Arial" size="2"><br>
-- <br>
Un saludo,</font></div>
<div><font face="Arial" size="2">Â</font></div>
<div dir="ltr"><font face="Arial" size="2">Josà F. GimÃnez<br>
<a moz-do-not-send="true" href="http://www.xailer.com">http://www.xailer.com</a><br>
<a moz-do-not-send="true" href="http://www.xailer.info">http://www.xailer.info</a></font></div>
</blockquote>
</body>
</html>

DataSet globales.

Publicado: Lun Ene 21, 2008 3:33 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
JosÃ:<br>
<br>
Haciendo pruebas con esta forma de asignaciÃn me pasa lo siguiente:<br>
<br>
En aquellos forms donde ya tenÃa un DataSet creado utilizo la propiedad
cVarName para referirme a Ãl en toda acciÃn que quiera realizar (altas,
bajas, modificaciones). Ahora al asignarlos de esta forma veo que no
cuento con esa propiedad y por lo tanto no me doy cuenta como debo
referirme para seguir realizando las mismas acciones.<br>
<br>
ÂBajo que nombre o identificador "veo" los datasets pasados de esta
forma (oSender:oDataSet := AppData:oRamos), en los formularios que los
"reciben"?<br>
<br>
Saludos<br>
Daniel.<br>
<br>
<br>
Jose F. Gimenez escribiÃ:
<blockquote cite="mid:47835134@ozsrv2.ozlan.local" type="cite">
<pre wrap="">Daniel,
</pre>
<blockquote type="cite">
<pre wrap="">1) No se como hacer para ir pasando de formulario a formulario a
formulario, etc. los DataSets que deben utilizar. Âalguna idea? he
realizado cosas como esta pero mi ignorancia en oop me lleva a errores.
</pre>
</blockquote>
<pre wrap=""><!---->
Lo mÃs sencillo es utilizar AppData o variables globales para almacenar los
dataset, y asà estarÃn disponibles desde todo el programa. P.ej, supongamos
que se almacenan en AppData; para asignarlos basta con:
oSender:oDataSet := AppData:oRamos
</pre>
<blockquote type="cite">
<pre wrap="">2) ÂHay alguna novedad de DataModule? Âya lo implementaron y no me
enterÃ? o està en vÃas de desarrollo.
</pre>
</blockquote>
<pre wrap=""><!---->
Està previsto para la versiÃn 2.0
</pre>
</blockquote>
</body>
</html>

DataSet globales.

Publicado: Lun Ene 21, 2008 6:10 pm
por ignacio
Daniel,
Cree una data de nombre oDataset en el formulario y asignela igual que hace con los controles.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Daniel Du Pré" <ddupre@macrosistemas.com.uy> escribió en el mensaje news:[email=4794ad4e@ozsrv2.ozlan.local...]4794ad4e@ozsrv2.ozlan.local...[/email]
José:
Haciendo pruebas con esta forma de asignación me pasa lo siguiente:
En aquellos forms donde ya tení­a un DataSet creado utilizo la propiedad cVarName para referirme a él en toda acción que quiera realizar (altas, bajas, modificaciones). Ahora al asignarlos de esta forma veo que no cuento con esa propiedad y por lo tanto no me doy cuenta como debo referirme para seguir realizando las mismas acciones.
¿Bajo que nombre o identificador "veo" los datasets pasados de esta forma (oSender:oDataSet := AppData:oRamos), en los formularios que los "reciben"?
Saludos
Daniel.
Jose F. Gimenez escribió:
Daniel,
1) No se como hacer para ir pasando de formulario a formulario a
formulario, etc. los DataSets que deben utilizar. ¿alguna idea? he
realizado cosas como esta pero mi ignorancia en oop me lleva a errores.

Lo más sencillo es utilizar AppData o variables globales para almacenar los
dataset, y así­ estarán disponibles desde todo el programa. P.ej, supongamos
que se almacenan en AppData; para asignarlos basta con:
oSender:oDataSet := AppData:oRamos
2) ¿Hay alguna novedad de DataModule? ¿ya lo implementaron y no me
enteré? o está en ví­as de desarrollo.

Está previsto para la versión 2.0

--

DataSet globales.

Publicado: Jue Ene 24, 2008 7:49 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ingacio:<br>
Gracias por responder, pero luego de un par de horas peleando (buscando
en la ayuda, buscando en el foro, viendo ejemplos) no consigo hacer lo
que quiero y seguramente es por ignorancia.<br>
<br>
AyudÃndome de trozos de cÃdigo explico resumidamente lo que hago para
ver si me puede indicar donde me equivoco, tenga en cuenta que el orden
de ejecuciÃn de este cÃdigo es igual al orden en que lo escribo.<br>
<br>
1) En la funciÃn de inicio del .prg principal defino algunas variables
globales:<br>
<br>
AppData:AddData("cCamino","wventaswventas")<br>
AppData:AddData("nTipoServidor",1)Â // 1- Local, 2- Remoto, 4- Internet<br>
<br>
AppData:AddData("DataSource")<br>
AppData:AddData("Ramos")<br>
<br>
2) En un formulario que està en un segundo .prg defino el DataSource y
los DataSet que necesito: <br>
<br>
<small>CLASS TEmpresa FROM TForm<br>
<br>
ÂÂ COMPONENT oAdsEmpresas<br>
ÂÂ COMPONENT oEmpresas<br>
ÂÂ COMPONENT oAceptar<br>
ÂÂ COMPONENT oCancelar<br>
ÂÂ COMPONENT oBrowseEmpresas<br>
ÂÂ COMPONENT oBrowseEmpresasColumn3<br>
ÂÂ COMPONENT oAdsDSwventas<br>
ÂÂ COMPONENT oRamos<br>
 <br>
ÂÂ METHOD CreateForm()<br>
ÂÂ METHOD BrowseEmpresasExit( oSender, oNextCtl )<br>
ÂÂ METHOD AceptarClick( oSender )<br>
ÂÂ METHOD FormInitialize( oSender )<br>
<br>
ENDCLASS<br>
</small><br>
3) Creo un mÃtodo que se dispara en el evento onClick del boton
"aceptar" de dicho formulario y ejecuto lo siguiente:<br>
<br>
<small>METHOD AceptarClick( oSender ) CLASS TEmpresa<br>
<br>
::oAdsDSwventas:nServerType := AppData:nTipoServidor<br>
::oAdsDSwventas:cConnectÂÂÂ := AppData:cCamino<br>
::oAdsDSwventas:lConnected := .T.<br>
::oAdsDSwventas:OpenProcess()<br>
<br>
AppData:DataSource := ::oAdsDSwventas<br>
AppData:ParamÂÂÂÂ&nb sp;ÂÂÂÂ := ::oParam<br>
AppData:TerminalÂÂÂÂ := ::oTerminal<br>
AppData:NumerosÂÂÂ := ::oNumeros<br>
AppData:RamosÂÂÂÂ&nb sp;ÂÂ := ::oRamos<br>
<br>
logdebug(::oramos)ÂÂÂÂ&a mp;nbsp;ÂÂÂÂÂ&a mp;nbsp;ÂÂÂÂÂ&a mp;nbsp;Â // Aqui el debugger no muestra nada<br>
logdebug(appdata:ramos)ÂÂÂ&nb sp;ÂÂ // Aqui el debugger no muestra nada<br>
</small><br>
RETURN Nil<br>
<br>
4) En otro form que esta en un tercer .prg:<br>
<br>
<small>CLASS TRamos FROM TForm<br>
<br>
 <font color="#3333ff">DATA oDataSet INIT
{}ÂÂÂÂÂ&nbs p;ÂÂÂÂÂ&nbs p;ÂÂÂÂÂ&nbs p;ÂÂÂÂÂ&nbs p;ÂÂÂÂÂ&nbs p;ÂÂÂÂÂ&nbs p; // Aquà creà la Data que me
sugiriÃ</font><br>
ÂÂ COMPONENT oToolBar1<br>
ÂÂ COMPONENT oBrowseRamosColumn1<br>
ÂÂ COMPONENT oBrowseRamosColumn2<br>
ÂÂ COMPONENT oBrowseRamos<br>
<br>
ÂÂ METHOD CreateForm()<br>
ÂÂ METHOD FormInitialize( oSender )<br>
ÂÂ METHOD PrimeroClick( oSender )<br>
ÂÂ METHOD AnteriorClick( oSender )<br>
ÂÂ METHOD SiguienteClick( oSender )<br>
ÂÂ METHOD UltimoClick( oSender )<br>
ÂÂ METHOD Agregar( oSender )<br>
ÂÂ METHOD Eliminar( oSender )<br>
ÂÂ METHOD Modificar( oSender )<br>
ÂÂ METHOD FormKeyDown( oSender, nKey, nFlags )<br>
ÂÂ METHOD CerrarClick( oSender )<br>
ÂÂ METHOD BrowseRamosColumn1HeaderClick( oSender, nFlags, nPosX, nPosY )<br>
ÂÂ METHOD BrowseRamosColumn2HeaderClick( oSender, nFlags, nPosX, nPosY )<br>
ÂÂ METHOD BrowseRamosCreate( oSender )<br>
<br>
ENDCLASS<br>
</small><br>
//---------------------------------------------------------- ------------------- <br>
<br>
<small>METHOD FormInitialize( oSender ) CLASS TRamos<br>
<br>
<font color="#3333ff">oSender:oDataSet :=
AppData:RamosÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp; // Aquà intento cargar la dataÂ
con el contenido de lo que necesito </font><br>
<br>
logdebug(oSender:oDataset)ÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp;ÂÂÂÂÂ&amp ;nbsp; //
Aqui intento ver si quedo bien cargada, pero no veo nada<br>
logdebug(appdata:ramos)ÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ&nb sp;ÂÂÂÂÂ //
Aqui intento ver que trae la variable global Appada:ramos, pero no veo
nada<br>
<br>
Return Nil<br>
<br>
//---------------------------------------------------------- -------------------- <br>
<br>
METHOD BrowseRamosCreate( oSender ) CLASS TRamos<br>
<br>
oSender:oDataSet := AppData:Ramos<br>
<br>
RETURN Nil<br>
<br>
//---------------------------------------------------------- -------------------- <br>
</small><br>
Dado que estoy en proceso de aprendizaje, aclaro que me apoyo mucho en
el debugger para ir "viendo" lo que hago, pero echo de menos algÃn
lugar donde pueda preguntar por el contenido de una variable, al estilo
debugger de clipper 5.3, Âse podrà agregar?<br>
<br>
Deseando salir de este "pantano" agradezco desde ya toda ayuda.<br>
<br>
Saludos<br>
Daniel.<br>
<br>
<br>
Ignacio Ortiz de ZÃÃiga escribiÃ:
<blockquote cite="mid:4794d205$1@ozsrv2.ozlan.local" type="cite">
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<meta content="MSHTML 6.00.6000.16587" name="GENERATOR">
<style></style>
<div><font face="Arial" size="2">Daniel, </font></div>
<div>Â</div>
<div><font face="Arial" size="2">Cree una data de nombre oDataset en
el formulario y asignela igual que hace con los controles. </font></div>
<div>Â</div>
<div><font face="Arial" size="2">Un saludo,</font></div>
<div><br>
-- <br>
Ignacio Ortiz de ZÃÃiga<br>
<a moz-do-not-send="true" href="http://www.xailer.com">http://www.xailer.com</a></div>
<div>Â</div>
<div>Â</div>
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div>"Daniel Du PrÃ" <<a moz-do-not-send="true"
href="mailto:ddupre@macrosistemas.com.uy">ddupre@macrosistemas.com.uy</a>>
escribià en el mensaje <a moz-do-not-send="true"
href="news:4794ad4e@ozsrv2.ozlan.local">news:4794ad4e@ozsrv2.ozlan.local</a>...</div>
JosÃ:<br>
<br>
Haciendo pruebas con esta forma de asignaciÃn me pasa lo siguiente:<br>
<br>
En aquellos forms donde ya tenÃa un DataSet creado utilizo la propiedad
cVarName para referirme a Ãl en toda acciÃn que quiera realizar (altas,
bajas, modificaciones). Ahora al asignarlos de esta forma veo que no
cuento con esa propiedad y por lo tanto no me doy cuenta como debo
referirme para seguir realizando las mismas acciones.<br>
<br>
ÂBajo que nombre o identificador "veo" los datasets pasados de esta
forma (oSender:oDataSet := AppData:oRamos), en los formularios que los
"reciben"?<br>
<br>
Saludos<br>
Daniel.<br>
<br>
<br>
Jose F. Gimenez escribiÃ:
<blockquote cite="mid:47835134@ozsrv2.ozlan.local" type="cite">
<pre wrap="">Daniel,
</pre>
<blockquote type="cite">
<pre wrap="">1) No se como hacer para ir pasando de formulario a formulario a
formulario, etc. los DataSets que deben utilizar. Âalguna idea? he
realizado cosas como esta pero mi ignorancia en oop me lleva a errores.
</pre>
</blockquote>
<pre wrap=""><!---->
Lo mÃs sencillo es utilizar AppData o variables globales para almacenar los
dataset, y asà estarÃn disponibles desde todo el programa. P.ej, supongamos
que se almacenan en AppData; para asignarlos basta con:
oSender:oDataSet := AppData:oRamos
</pre>
<blockquote type="cite">
<pre wrap="">2) ÂHay alguna novedad de DataModule? Âya lo implementaron y no me
enterÃ? o està en vÃas de desarrollo.
</pre>
</blockquote>
<pre wrap=""><!---->
Està previsto para la versiÃn 2.0
</pre>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>

DataSet globales.

Publicado: Vie Ene 25, 2008 1:51 pm
por ignacio
Daniel,
Serí­a mejor si mandase un pequeño ejemplo. No obstante, creo que lo está haciendo mal. El sistema serí­a así­:
1) Añada un componente TDatasource y TDataset al formulario principal
2) En todos los formularios restantes que vayan a utilizar dicho dataset cree una data de nombre oDataset:
3) En el evento TForm:OnBeforeCreate() asigne el dataset
::oDataset := ::oParent:oDataset1
Eso es todo.
>Dado que estoy en proceso de aprendizaje, aclaro que me apoyo mucho
>en el debugger para ir "viendo" lo que hago, pero echo de menos algún
>lugar donde pueda preguntar por el contenido de una variable,
>al estilo debugger de clipper 5.3, ¿se podrá agregar?
Simplemente haga doble-click en el elemento del árbol que quiere visualizar.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
--

DataSet globales.

Publicado: Vie Ene 25, 2008 2:44 pm
por Angel
Daniel, le comento como hago para usar dataset globales. Creo un
procedure, el cual lo inicializo con la aplicación, en el que se crea
tanto el datasource como el dataset.
Procedure VariablesPublicas()
AppData:AddData("oDataSource",TCdxDatasource():Create())
AppData:AddData("oDataSet",TDbfDataset():Create())
Return
Creo una función que inicializa el datasource. Aquí­ puedes poner todas
las opciones que creas convenientes. En mi caso, me conecto a un
directorio en el que tengo todos los dbf.
FUNCTION InicializaDataSource
WITH OBJECT AppData:oDataSource
:cConnect:=".DBF"
END WITH
RETURN NIL
Me creo una función que puede ser llamada desde cualquier parte del
programa, que inicializa el dataset, borra í­ndices antiguos si
existiesen, abre el dataset y crea í­ndices nuevos. Aquí­ podrí­as poner
todo lo que consideres necesario para las propiedades de tu dataset.
FUNCTION InicializaDataset
WITH OBJECT AppData:oDataset
IF(:lOpen == .T.)
:lOpen:= .F.
END IF
:cName:="nombredetubasededatos.dbf"
:oDataSource:=AppData:oDataSource
IF (FILE("nombredetubasededatos.cdx"))
FERASE("nombredetubasededatos.cdx")
END IF
IF (:lOpen := .T.)
:Pack()
INDEX ON _FIELD->CAMPOAINDEXAR TAG NOMBREDELTAG
ELSE
MSGINFO("Error abriendo base de datos")
END IF
END WITH
Después, cualquier objeto que utilize este dataset, en su evento
OnCreate simplemente pongo:
oSender:oDataset := AppData:oDataset
Y para finalizar el programa, y que se cierren correctamente los dataset
abiertos, creo otro procedure:
Exit Procedure LiberaDatasets
AppData:oDataset:Close()
Return
He de aclarar, que lo primero que se ejecuta en mi aplicación, no es un
formulario, sino un PRG que he añadido al proyecto en el que hago todo
lo anteriormente comentado. Para cambiar el modulo principal de la
aplicación: Proyecto -> Propiedades del proyecto -> Modulo principal.
Espero que te sirva.
Saludos!

DataSet globales.

Publicado: Vie Ene 25, 2008 2:53 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Gracias Ignacio.<br>
He comprendido el concepto que debo aplicar y creo que vi donde està mi
error, sucede que estaba creando el DataSource y los DataSet en un form
que no era el principal.<br>
<br>
Antes de comenzar a realizar los cambios sugeridos quisiera saber mÃs
sobre el evento OnBeforeCreate y en la ayuda de xailer no encuentro
documentaciÃn, Âdonde puedo leer algo?<br>
<br>
Gracias.<br>
Daniel.<br>
<br>
<br>
Ignacio Ortiz de ZÃÃiga escribiÃ:
<blockquote cite="mid:4799db5c$1@ozsrv2.ozlan.local" type="cite">
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<meta content="MSHTML 6.00.6000.16587" name="GENERATOR">
<style></style>
<div><font face="Arial" size="2">Daniel, </font></div>
<div>Â</div>
<div><font face="Arial" size="2">SerÃa mejor si mandase un pequeÃo
ejemplo. No obstante, creo que lo està haciendo mal. El sistema serÃa
asÃ:</font></div>
<div>Â</div>
<div><font face="Arial" size="2">1) AÃada un componente TDatasource y
TDataset al formulario principal</font></div>
<div>Â</div>
<div><font face="Arial" size="2">2) En todos los formularios
restantes que vayan a utilizar dicho dataset cree una data de nombre
oDataset:</font></div>
<div>Â</div>
<div><font face="Arial" size="2">3) En el evento
TForm:OnBeforeCreate() asigne el dataset</font></div>
<div>Â</div>
<div><font face="Arial" size="2">::oDataset := ::oParent:oDataset1</font></div>
<div>Â</div>
<div><font face="Arial" size="2">Eso es todo. </font></div>
<div>Â</div>
<div>>Dado que estoy en proceso de aprendizaje, aclaro que me
apoyo mucho </div>
<div>>en el debugger para ir "viendo" lo que hago, pero echo de
menos algÃn </div>
<div>>lugar donde pueda preguntar por el contenido de una
variable, </div>
<div>>al estilo debugger de clipper 5.3, Âse podrà agregar?</div>
<div>Â</div>
<div><font face="Arial" size="2">Simplemente haga doble-click en el
elemento del Ãrbol que quiere visualizar.</font><br>
</div>
<div><font face="Arial" size="2">Un saludo, </font></div>
<div>Â</div>
<div>-- <br>
Ignacio Ortiz de ZÃÃiga<br>
<a moz-do-not-send="true" href="http://www.xailer.com">http://www.xailer.com</a></div>
<div>Â</div>
<blockquote cite="mid:4794d205$1@ozsrv2.ozlan.local" type="cite">
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<blockquote cite="mid:47835134@ozsrv2.ozlan.local" type="cite">
<pre wrap="">Â</pre>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>

DataSet globales.

Publicado: Vie Ene 25, 2008 3:12 pm
por ddupre
íngel:
Muchas gracias por tu ayuda, me haz enseñado muchas cosas.
Saludos
Daniel.
íngel Fernández escribió:
> Daniel, le comento como hago para usar dataset globales. Creo un
> procedure, el cual lo inicializo con la aplicación, en el que se crea
> tanto el datasource como el dataset.
>
> Procedure VariablesPublicas()
> AppData:AddData("oDataSource",TCdxDatasource():Create())
> AppData:AddData("oDataSet",TDbfDataset():Create())
> Return
>
> Creo una función que inicializa el datasource. Aquí­ puedes poner todas
> las opciones que creas convenientes. En mi caso, me conecto a un
> directorio en el que tengo todos los dbf.
>
> FUNCTION InicializaDataSource
> WITH OBJECT AppData:oDataSource
> :cConnect:=".DBF"
> END WITH
> RETURN NIL
>
> Me creo una función que puede ser llamada desde cualquier parte del
> programa, que inicializa el dataset, borra í­ndices antiguos si
> existiesen, abre el dataset y crea í­ndices nuevos. Aquí­ podrí­as poner
> todo lo que consideres necesario para las propiedades de tu dataset.
>
> FUNCTION InicializaDataset
> WITH OBJECT AppData:oDataset
> IF(:lOpen == .T.)
> :lOpen:= .F.
> END IF
>
> :cName:="nombredetubasededatos.dbf"
> :oDataSource:=AppData:oDataSource
>
> IF (FILE("nombredetubasededatos.cdx"))
> FERASE("nombredetubasededatos.cdx")
> END IF
>
> IF (:lOpen := .T.)
> :Pack()
> INDEX ON _FIELD->CAMPOAINDEXAR TAG NOMBREDELTAG
> ELSE
> MSGINFO("Error abriendo base de datos")
> END IF
> END WITH
>
> Después, cualquier objeto que utilize este dataset, en su evento
> OnCreate simplemente pongo:
>
> oSender:oDataset := AppData:oDataset
>
> Y para finalizar el programa, y que se cierren correctamente los
> dataset abiertos, creo otro procedure:
>
> Exit Procedure LiberaDatasets
> AppData:oDataset:Close()
> Return
>
> He de aclarar, que lo primero que se ejecuta en mi aplicación, no es
> un formulario, sino un PRG que he añadido al proyecto en el que hago
> todo lo anteriormente comentado. Para cambiar el modulo principal de
> la aplicación: Proyecto -> Propiedades del proyecto -> Modulo
> principal. Espero que te sirva.
>
> Saludos!

DataSet globales.

Publicado: Vie Ene 25, 2008 5:46 pm
por ignacio
Daniel,
El evento OnBeforeCreate se añadió a Xailer en la última actualización 1.8.1 y está documentado en el archivo lonuevo.htm. Estará accesible en la ayuda en la próxima actualización completa del software.
Este evento se dispara justo antes de que se cree el control o ventana por el API de Windows.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Daniel Du Pré" <ddupre@macrosistemas.com.uy> escribió en el mensaje news:[email=4799e9ce@ozsrv2.ozlan.local...]4799e9ce@ozsrv2.ozlan.local...[/email]
Gracias Ignacio.
He comprendido el concepto que debo aplicar y creo que vi donde está mi error, sucede que estaba creando el DataSource y los DataSet en un form que no era el principal.
Antes de comenzar a realizar los cambios sugeridos quisiera saber más sobre el evento OnBeforeCreate y en la ayuda de xailer no encuentro documentación, ¿donde puedo leer algo?
Gracias.
Daniel.
Ignacio Ortiz de Zúñiga escribió:
Daniel,
Serí­a mejor si mandase un pequeño ejemplo. No obstante, creo que lo está haciendo mal. El sistema serí­a así­:
1) Añada un componente TDatasource y TDataset al formulario principal
2) En todos los formularios restantes que vayan a utilizar dicho dataset cree una data de nombre oDataset:
3) En el evento TForm:OnBeforeCreate() asigne el dataset
::oDataset := ::oParent:oDataset1
Eso es todo.
>Dado que estoy en proceso de aprendizaje, aclaro que me apoyo mucho
>en el debugger para ir "viendo" lo que hago, pero echo de menos algún
>lugar donde pueda preguntar por el contenido de una variable,
>al estilo debugger de clipper 5.3, ¿se podrá agregar?
Simplemente haga doble-click en el elemento del árbol que quiere visualizar.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com

--

DataSet globales.

Publicado: Vie Ene 25, 2008 6:00 pm
por ddupre
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ignacio:<br>
<br>
Gracias lo voy a leer.<br>
<br>
Saludos<br>
Daniel.<br>
<br>
<br>
Ignacio Ortiz de ZÃÃiga escribiÃ:
<blockquote cite="mid:479a1284$1@ozsrv2.ozlan.local" type="cite">
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<meta content="MSHTML 6.00.6000.16587" name="GENERATOR">
<div><font face="Arial" size="2">Daniel, </font></div>
<div>Â</div>
<div><font face="Arial" size="2">El evento OnBeforeCreate se aÃadià a
Xailer en la Ãltima actualizaciÃn 1.8.1 y està documentado en el
archivo lonuevo.htm. Estarà accesible en la ayuda en la prÃxima
actualizaciÃn completa del software.</font></div>
<div>Â</div>
<div><font face="Arial" size="2">Este evento se dispara justo antes
de que se cree el control o ventana por el API de Windows.</font></div>
<div>Â</div>
<div><font face="Arial" size="2">Un saludo</font></div>
<div><br>
-- <br>
Ignacio Ortiz de ZÃÃiga<br>
<a moz-do-not-send="true" href="http://www.xailer.com">http://www.xailer.com</a></div>
<div>Â</div>
<div>Â</div>
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div>"Daniel Du PrÃ" <<a moz-do-not-send="true"
href="mailto:ddupre@macrosistemas.com.uy">ddupre@macrosistemas.com.uy</a>>
escribià en el mensaje <a moz-do-not-send="true"
href="news:4799e9ce@ozsrv2.ozlan.local">news:4799e9ce@ozsrv2.ozlan.local</a>...</div>
Gracias Ignacio.<br>
He comprendido el concepto que debo aplicar y creo que vi donde està mi
error, sucede que estaba creando el DataSource y los DataSet en un form
que no era el principal.<br>
<br>
Antes de comenzar a realizar los cambios sugeridos quisiera saber mÃs
sobre el evento OnBeforeCreate y en la ayuda de xailer no encuentro
documentaciÃn, Âdonde puedo leer algo?<br>
<br>
Gracias.<br>
Daniel.<br>
<br>
<br>
Ignacio Ortiz de ZÃÃiga escribiÃ:
<blockquote cite="mid:4799db5c$1@ozsrv2.ozlan.local" type="cite">
<meta content="MSHTML 6.00.6000.16587" name="GENERATOR">
<style></style>
<div><font face="Arial" size="2">Daniel, </font></div>
<div>Â</div>
<div><font face="Arial" size="2">SerÃa mejor si mandase un
pequeÃo ejemplo. No obstante, creo que lo està haciendo mal. El sistema
serÃa asÃ:</font></div>
<div>Â</div>
<div><font face="Arial" size="2">1) AÃada un componente
TDatasource y TDataset al formulario principal</font></div>
<div>Â</div>
<div><font face="Arial" size="2">2) En todos los formularios
restantes que vayan a utilizar dicho dataset cree una data de nombre
oDataset:</font></div>
<div>Â</div>
<div><font face="Arial" size="2">3) En el evento
TForm:OnBeforeCreate() asigne el dataset</font></div>
<div>Â</div>
<div><font face="Arial" size="2">::oDataset := ::oParent:oDataset1</font></div>
<div>Â</div>
<div><font face="Arial" size="2">Eso es todo. </font></div>
<div>Â</div>
<div>>Dado que estoy en proceso de aprendizaje, aclaro que me
apoyo mucho </div>
<div>>en el debugger para ir "viendo" lo que hago, pero echo
de menos algÃn </div>
<div>>lugar donde pueda preguntar por el contenido de una
variable, </div>
<div>>al estilo debugger de clipper 5.3, Âse podrà agregar?</div>
<div>Â</div>
<div><font face="Arial" size="2">Simplemente haga doble-click en
el elemento del Ãrbol que quiere visualizar.</font><br>
</div>
<div><font face="Arial" size="2">Un saludo, </font></div>
<div>Â</div>
<div>-- <br>
Ignacio Ortiz de ZÃÃiga<br>
<a href="http://www.xailer.com" moz-do-not-send="true">http://www.xailer.com</a></div>
<div>Â</div>
<blockquote cite="mid:4794d205$1@ozsrv2.ozlan.local" type="cite">
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<blockquote cite="mid:47835134@ozsrv2.ozlan.local" type="cite">
<pre wrap="">Â</pre>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>