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.

Mas preguntas

Foro público de Xailer en español
Responder
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

Mas preguntas

Mensaje por Fredy »

Bueno, ya casi lo tengo.
Ya funcionan la uniones y demás. ¡ Y todo en 100 lí­neas de código!
Pero...
Dos preguntas, una para Ignacio y otra para Jose :)
Ignacio,
Fí­jate en la primera pantalla que mando (xailer4.jpg). Todo Ok.
Selecciono como inicial la "B" (segunda pantalla) y el browse funciona,
pero el DbEdit del teléfono no cambia. Me tengo que desplazar dentro del
browse para que tome el valor correcto.
Jose,
¿Ves la barra de scroll horizontal que sale en la parte de abajo del
formulario?. No soy capaz de quitarla. En tiempo de diseño todo está en
su sitio y esa barra no sale. Ye te juro que no tengo nada fuera de la
zona visible. (vamos, eso creo)
A sí­, otra cosa.
Cuando le doy al refresh() de la barra de navegación me dice que no hay
clave primaria. ¿Eso es porque el browse es el resultado del join de dos
tablas?
Un saludico,
Fredy
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

Mas preguntas

Mensaje por Fredy »

Los dos pantallazos
--

Attached files
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

Mas preguntas

Mensaje por Fredy »

Un saludico,
Fredy
--

Attached files demofb.zip (3.3 KB)Â
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Consulta el ejemplo DatacontrolsDbf1 para ver como funciona. Con sólo la
imagen que envies es imposible saber que es lo que estás haciendo mal.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c96f970d1c8e3359896bc@news.ozs.com...]MPG.1c96f970d1c8e3359896bc@news.ozs.com...[/email]
> Los dos pantallazos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Perdona, luego he visto el código.
He tenido que instalar FireBird con su base de datos de ejemplo, y compruebo
que el telefono no cambia porque en la tabla CASI SIEMPRE ES EL MISMO.
Os pido por favor que confeis algo más en Xailer y antes de decir que las
cosas no funcionan tengais la prudencia de echarles primero un vistazo
vosotros mismos. Muchísimas gracias.
En cuanto a la barra de scroll horizontal, es posible que se haya quedado
pillada porque en algún momento si había algun control fuera de la zona
visible, entonces en dicho caso, el área visible incluso se reduce aun más
por la presencia de la barra. Hay tres formas de quitarla:
1) Amplia de nuevo el tamaño del formulario y vuelve a ponerlo igual
2) Pulsa dos veces al boton de look XP para forzar un reconstrucción
completa del formulario
3) Pon la propiedad lAutoScroll del formulario a falso.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c96f916644135129896bb@news.ozs.com...]MPG.1c96f916644135129896bb@news.ozs.com...[/email]
Bueno, ya casi lo tengo.
Ya funcionan la uniones y demás. ¡ Y todo en 100 líneas de código!
Pero...
Dos preguntas, una para Ignacio y otra para Jose :)
Ignacio,
Fíjate en la primera pantalla que mando (xailer4.jpg). Todo Ok.
Selecciono como inicial la "B" (segunda pantalla) y el browse funciona,
pero el DbEdit del teléfono no cambia. Me tengo que desplazar dentro del
browse para que tome el valor correcto.
Jose,
¿Ves la barra de scroll horizontal que sale en la parte de abajo del
formulario?. No soy capaz de quitarla. En tiempo de diseño todo está en
su sitio y esa barra no sale. Ye te juro que no tengo nada fuera de la
zona visible. (vamos, eso creo)
A sí, otra cosa.
Cuando le doy al refresh() de la barra de navegación me dice que no hay
clave primaria. ¿Eso es porque el browse es el resultado del join de dos
tablas?
Un saludico,
Fredy
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Mas preguntas

Mensaje por jfgimenez »

Fredy,
> ¿Ves la barra de scroll horizontal que sale en la parte de abajo del
> formulario?. No soy capaz de quitarla. En tiempo de diseño todo está en
> su sitio y esa barra no sale. Ye te juro que no tengo nada fuera de la
> zona visible. (vamos, eso creo)
No lo he probado (ya sabes, no tengo FireBird), pero estoy seguro de que el
problema viene de TDBNavigator. Este control está derivado de TToolBar, y me
temo que TToolBar no está terminado. Vamos a intentar terminar y corregir
tanto TRebar como TToolBar en breve, y espero que se solucionen estos
problemas.
Mientras tanto, puedes hacer dos cosas:
- Cambiar la propiedad del formulario lAutoScroll a .F.
- Llamar a ::SetAutoScroll() desde el evento OnInitialize del formulario
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

Ignacio,
> He tenido que instalar FireBird con su base de datos de ejemplo, y compruebo
> que el telefono no cambia porque en la tabla CASI SIEMPRE ES EL MISMO.
CASI, pero no siempre. Te aseguro que, por lo menos, en mi base de datos
de ejemplo cambian. Fí­jate en las imágenes que he mandado. En ellas se
ve claramente lo que hace mal.
He podido solucionar el problema, pero metiendo un :oDbEdit1:Refresh()
dentro del método SetSql.
Así­, tras hacer la consulta, carga el browse y refresca los
datacontrols.
Pero se supone que la gracia de los datacontrols es que se "mueven
solos" y no hace falta refrescarlos

> Os pido por favor que confeis algo más en Xailer y antes de decir que las
> cosas no funcionan tengais la prudencia de echarles primero un vistazo
> vosotros mismos. Muchí­simas gracias.
Te aseguro que llevo mucho rato con eso y creeme, a mí­ no me cambia.
Que puedo meter la zarpa, pues sí­. Piensa que la semana pasada ni
siquiera sabí­a abrir una base de datos de Firebird.
Yo creo que hay como un 80% de posibilidades de que el error sea mí­o y
un 20% de Xailer, pero también te agradecerí­a que consideraras ese 20%
antes de decime que te has instalado Firebird y no cambia el teléfono
porque son todos iguales.

> En cuanto a la barra de scroll horizontal,...
Me ha funcionado perfecto, gracias.
Un saludico
Fredy
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Por favor pruebalo bien. Incluso en tiempo de diseño funciona correctamente.
Si te vas al final de la tabla podrás observar como cambia el TDbEdit
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c97968850dae6849896bf@news.ozs.com...]MPG.1c97968850dae6849896bf@news.ozs.com...[/email]
Ignacio,
> He tenido que instalar FireBird con su base de datos de ejemplo, y
> compruebo
> que el telefono no cambia porque en la tabla CASI SIEMPRE ES EL MISMO.
CASI, pero no siempre. Te aseguro que, por lo menos, en mi base de datos
de ejemplo cambian. Fíjate en las imágenes que he mandado. En ellas se
ve claramente lo que hace mal.
He podido solucionar el problema, pero metiendo un :oDbEdit1:Refresh()
dentro del método SetSql.
Así, tras hacer la consulta, carga el browse y refresca los
datacontrols.
Pero se supone que la gracia de los datacontrols es que se "mueven
solos" y no hace falta refrescarlos
> Os pido por favor que confeis algo más en Xailer y antes de decir que las
> cosas no funcionan tengais la prudencia de echarles primero un vistazo
> vosotros mismos. Muchísimas gracias.
Te aseguro que llevo mucho rato con eso y creeme, a mí no me cambia.
Que puedo meter la zarpa, pues sí. Piensa que la semana pasada ni
siquiera sabía abrir una base de datos de Firebird.
Yo creo que hay como un 80% de posibilidades de que el error sea mío y
un 20% de Xailer, pero también te agradecería que consideraras ese 20%
antes de decime que te has instalado Firebird y no cambia el teléfono
porque son todos iguales.
> En cuanto a la barra de scroll horizontal,...
Me ha funcionado perfecto, gracias.
Un saludico
Fredy
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Quitando una instrucción SELECT que haces en la inicialización del dialogo
pues SUBSTR() no existe como función en ningún motor SQL que yo conozca,
observo que el campo fecha se actualiza perfectamente cuando se mueve uno
por la tabla. Si quieres te mando el EXE.
Un saludo,
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:422d7a05$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Fredy,
>
> Por favor pruebalo bien. Incluso en tiempo de diseño funciona
> correctamente. Si te vas al final de la tabla podrás observar como cambia
> el TDbEdit
>
> Un saludo,
>
> "Fredy" <fredy@airtel.net> escribió en el mensaje
> news:[email=MPG.1c97968850dae6849896bf@news.ozs.com...]MPG.1c97968850dae6849896bf@news.ozs.com...[/email]
> Ignacio,
>
>> He tenido que instalar FireBird con su base de datos de ejemplo, y
>> compruebo
>> que el telefono no cambia porque en la tabla CASI SIEMPRE ES EL MISMO.
>
> CASI, pero no siempre. Te aseguro que, por lo menos, en mi base de datos
> de ejemplo cambian. Fíjate en las imágenes que he mandado. En ellas se
> ve claramente lo que hace mal.
>
> He podido solucionar el problema, pero metiendo un :oDbEdit1:Refresh()
> dentro del método SetSql.
>
> Así, tras hacer la consulta, carga el browse y refresca los
> datacontrols.
>
> Pero se supone que la gracia de los datacontrols es que se "mueven
> solos" y no hace falta refrescarlos
>
>
>> Os pido por favor que confeis algo más en Xailer y antes de decir que las
>> cosas no funcionan tengais la prudencia de echarles primero un vistazo
>> vosotros mismos. Muchísimas gracias.
>
> Te aseguro que llevo mucho rato con eso y creeme, a mí no me cambia.
>
> Que puedo meter la zarpa, pues sí. Piensa que la semana pasada ni
> siquiera sabía abrir una base de datos de Firebird.
>
> Yo creo que hay como un 80% de posibilidades de que el error sea mío y
> un 20% de Xailer, pero también te agradecería que consideraras ese 20%
> antes de decime que te has instalado Firebird y no cambia el teléfono
> porque son todos iguales.
>
>> En cuanto a la barra de scroll horizontal,...
>
> Me ha funcionado perfecto, gracias.
>
>
> Un saludico
> Fredy
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Te mando con este mail nuevas versiones de OdbcDataSet y DbfDataSet que
permiten repetir selects sin problemas. Recuerda que has de refrescar
completemante el browse cuando hagas un Select nuevo:
oBrowse:Refresh( .t. )
Espero que te funcione
Saludos
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:422d7ceb$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Fredy,
>
> Quitando una instrucción SELECT que haces en la inicialización del dialogo
> pues SUBSTR() no existe como función en ningún motor SQL que yo conozca,
> observo que el campo fecha se actualiza perfectamente cuando se mueve uno
> por la tabla. Si quieres te mando el EXE.
>
> Un saludo,
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:422d7a05$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Fredy,
>>
>> Por favor pruebalo bien. Incluso en tiempo de diseño funciona
>> correctamente. Si te vas al final de la tabla podrás observar como cambia
>> el TDbEdit
>>
>> Un saludo,
>>
>> "Fredy" <fredy@airtel.net> escribió en el mensaje
>> news:[email=MPG.1c97968850dae6849896bf@news.ozs.com...]MPG.1c97968850dae6849896bf@news.ozs.com...[/email]
>> Ignacio,
>>
>>> He tenido que instalar FireBird con su base de datos de ejemplo, y
>>> compruebo
>>> que el telefono no cambia porque en la tabla CASI SIEMPRE ES EL MISMO.
>>
>> CASI, pero no siempre. Te aseguro que, por lo menos, en mi base de datos
>> de ejemplo cambian. Fíjate en las imágenes que he mandado. En ellas se
>> ve claramente lo que hace mal.
>>
>> He podido solucionar el problema, pero metiendo un :oDbEdit1:Refresh()
>> dentro del método SetSql.
>>
>> Así, tras hacer la consulta, carga el browse y refresca los
>> datacontrols.
>>
>> Pero se supone que la gracia de los datacontrols es que se "mueven
>> solos" y no hace falta refrescarlos
>>
>>
>>> Os pido por favor que confeis algo más en Xailer y antes de decir que
>>> las
>>> cosas no funcionan tengais la prudencia de echarles primero un vistazo
>>> vosotros mismos. Muchísimas gracias.
>>
>> Te aseguro que llevo mucho rato con eso y creeme, a mí no me cambia.
>>
>> Que puedo meter la zarpa, pues sí. Piensa que la semana pasada ni
>> siquiera sabía abrir una base de datos de Firebird.
>>
>> Yo creo que hay como un 80% de posibilidades de que el error sea mío y
>> un 20% de Xailer, pero también te agradecería que consideraras ese 20%
>> antes de decime que te has instalado Firebird y no cambia el teléfono
>> porque son todos iguales.
>>
>>> En cuanto a la barra de scroll horizontal,...
>>
>> Me ha funcionado perfecto, gracias.
>>
>>
>> Un saludico
>> Fredy
>>
>
>


Attached files OdbcDataSet.rar (17.9 KB)Â
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

Ignacio,
No, creo que no me estoy explicando bien.
Veamos si ahora lo hago mejor:
Descarga http://www.aglsl.com/video1.avi
Es un ví­deo de 40 segundos donde se ve enseguida lo que me pasa.
- Empezamos con el browse con un registro y abajo, un DbEdit con el
número de teléfono.
- Nos desplazamos por el browse a la derecha, hasta llegar a la columna
de n. de teléfono y vemos que coinciden.
-Ahora, con el combobox le digo que me filtre por todos los que empiezan
por la letra "A".
-Podemos ver que no hay ninguno, pero en cambio el contenido del DbEdit
con el teléfono no ha cambiado, cuando se tendrí­a que haber quedado
vacio.
- Ahora seleccionamos en el combo el "*" para que me muestre todos los
registros de la tabla. Me los muestra, pero el DbEdit del teléfono, que
ahora tení­a que mostrar (408)555-1234 (como vemos en el browse) queda
con el valor anterior (en blanco de la selección de la letra "A")
-En el momento en el que pulso "arriba" en la barra de scroll verticar
(o me muevo por el browse) el valor se actualiza con el correcto)
Es como si el DbEdit trabajara con los datos anteriores en lugar de con
los actuales.
En cambio, si tras realizar la consulta pongo un ::oDbEdit1:Refresh()
todo funciona bien.
Con el obj que me has mandado en el mensaje anterior, me da el error que
te adjunto
Un saludico,
Fredy
PD. El SubStr de la consulta es una UDF de Firebird.
--

Attached files
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Substr() no es una función estándar de FireBird, o al menos a mi no me la
reconoce:
SQL Error code -804
FUNCTION UNKNOWN Substr()
Supongo que habrás incluido dicha función al motor SQL a través de una DLL o
algo parecido.
El GPF que comentas por otra parte a mi no se me produce supongo que será
por otros arreglos que yo tengo hechos que tu no tienes aun en la beta 9
En cuanto a que no se refresca el DbEdit, ten en cuenta que los dataset
refrescan a todos sus controles vinculados en operaciones de navegación en
el propio DataSet, y en tu caso no es precisamente una operación de
navegación, sino una destrucción completa del DataSet y creación de uno
nuevo. En dichos casos lo lógico es que tu refresque dichos controles
vinculados no obstante lo ha modificado para provocar el refresco que
sugieres. Sin embargo han sido afectados demasiados módulos por lo que te
pido a que te esperes a la nueva beta que no tardará mucho en publicarse.
Muchas gracias por tu colaboración.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c97d562acec1f7d9896c0@news.ozs.com...]MPG.1c97d562acec1f7d9896c0@news.ozs.com...[/email]
Ignacio,
No, creo que no me estoy explicando bien.
Veamos si ahora lo hago mejor:
Descarga http://www.aglsl.com/video1.avi
Es un vídeo de 40 segundos donde se ve enseguida lo que me pasa.
- Empezamos con el browse con un registro y abajo, un DbEdit con el
número de teléfono.
- Nos desplazamos por el browse a la derecha, hasta llegar a la columna
de n. de teléfono y vemos que coinciden.
-Ahora, con el combobox le digo que me filtre por todos los que empiezan
por la letra "A".
-Podemos ver que no hay ninguno, pero en cambio el contenido del DbEdit
con el teléfono no ha cambiado, cuando se tendría que haber quedado
vacio.
- Ahora seleccionamos en el combo el "*" para que me muestre todos los
registros de la tabla. Me los muestra, pero el DbEdit del teléfono, que
ahora tenía que mostrar (408)555-1234 (como vemos en el browse) queda
con el valor anterior (en blanco de la selección de la letra "A")
-En el momento en el que pulso "arriba" en la barra de scroll verticar
(o me muevo por el browse) el valor se actualiza con el correcto)
Es como si el DbEdit trabajara con los datos anteriores en lugar de con
los actuales.
En cambio, si tras realizar la consulta pongo un ::oDbEdit1:Refresh()
todo funciona bien.
Con el obj que me has mandado en el mensaje anterior, me da el error que
te adjunto
Un saludico,
Fredy
PD. El SubStr de la consulta es una UDF de Firebird.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

>
> Substr() no es una función estándar de FireBird, o al menos a mi no me la
> reconoce:
>
> SQL Error code -804
> FUNCTION UNKNOWN Substr()
>
> Supongo que habrás incluido dicha función al motor SQL a través de una DLL o
> algo parecido.
Efectivamente, en el artí­culo de hoy en http://www.aglsl.com/xailer
cuento cómo se hace.
Un saludico,
Fredy
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

Hola,
> En cuanto a que no se refresca el DbEdit, ten en cuenta que los dataset
> refrescan a todos sus controles vinculados en operaciones de navegación en
> el propio DataSet, y en tu caso no es precisamente una operación de
> navegación, sino una destrucción completa del DataSet y creación de uno
> nuevo.
Sí­, lo cierto es que no tengo referencias en programación SQL para saber
si se hace así­ o no, pero a mí­ me ha parecido un proceso lógico.
Pensemos en el tí­pico formulario de cabecera de albarán y lí­neas.
Cuando cambiamos de número de albarán, para mostrar sus lí­neas tendremos
de reconstruir el dataset_lí­neas diciendo: select * from lineas where
lineas.num_albaran=....
¿Hay alguna otra forma de hacerlo?
Mi idea está inspirada en las dbf, donde en un caso parecido, lo que
hacemos es aplicar un scope con el valor del nuevo nº de albarán ¿no?
Así­ pues, la información resultante tanto en el dataset , como en el
scope es totalmente distinta a la anterior.
La gran ventaja que le veo al dataset es que además de los registros que
quiero filtrar, le puedo decir también qué campos quiero recibir, vamos
que puedo filtrar tanto registros como campos, cosa que una dbf no me
deja, porque siempre me obliga a trabajar con la estructura completa de
la dbf.
Un saludico,
Fredy
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Estupendo, muchas gracias, te estoy super agradecido por el blog de Xailer
que estás haciendo.
Y también sería estupendo que los ejemplos que nos mandases en el futuro no
requiriesen exesiva complejidad para probarlos. Espero que lo entiendas.
Gracias de antemano.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c984d00982162ef9896c4@news.ozs.com...]MPG.1c984d00982162ef9896c4@news.ozs.com...[/email]
>
> Substr() no es una función estándar de FireBird, o al menos a mi no me la
> reconoce:
>
> SQL Error code -804
> FUNCTION UNKNOWN Substr()
>
> Supongo que habrás incluido dicha función al motor SQL a través de una DLL
> o
> algo parecido.
Efectivamente, en el artículo de hoy en http://www.aglsl.com/xailer
cuento cómo se hace.
Un saludico,
Fredy
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Lo lógico en mi opinión es destruir el DataSet y crear uno nuevo. Ya que el
dataset resultante de 'selects' distintos puede ser completamente distinto.
No obstante, y como te comente ya se ha modificado para que se puedan hacer
ese tipo de operaciones.
Creo que cuando se trabajo con motores SQL sencillamente hay que cambiar la
forma de trabajar, e intentar evitar consultas másivas sobre una tabla. Eso
mata a cualquier servidor. Te recomiendo que utilices un enfoque QBE con un
browse en el mismo formulario. Por defecto el Browse se muestra vacío, el
usuario introduce en el QBE lo que desea buscar y en el botón de Aceptar
construyes la sentencia SQL que luego se mostrará en el mismo Browse del
formulario. Si el usuario decide hacer otra consulta destruyes el actual
dataset y creas un dataset nuevo.
Un saludo
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c9850bf30ab98e49896c5@news.ozs.com...]MPG.1c9850bf30ab98e49896c5@news.ozs.com...[/email]
Hola,
> En cuanto a que no se refresca el DbEdit, ten en cuenta que los dataset
> refrescan a todos sus controles vinculados en operaciones de navegación en
> el propio DataSet, y en tu caso no es precisamente una operación de
> navegación, sino una destrucción completa del DataSet y creación de uno
> nuevo.
Sí, lo cierto es que no tengo referencias en programación SQL para saber
si se hace así o no, pero a mí me ha parecido un proceso lógico.
Pensemos en el típico formulario de cabecera de albarán y líneas.
Cuando cambiamos de número de albarán, para mostrar sus líneas tendremos
de reconstruir el dataset_líneas diciendo: select * from lineas where
lineas.num_albaran=....
¿Hay alguna otra forma de hacerlo?
Mi idea está inspirada en las dbf, donde en un caso parecido, lo que
hacemos es aplicar un scope con el valor del nuevo nº de albarán ¿no?
Así pues, la información resultante tanto en el dataset , como en el
scope es totalmente distinta a la anterior.
La gran ventaja que le veo al dataset es que además de los registros que
quiero filtrar, le puedo decir también qué campos quiero recibir, vamos
que puedo filtrar tanto registros como campos, cosa que una dbf no me
deja, porque siempre me obliga a trabajar con la estructura completa de
la dbf.
Un saludico,
Fredy
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

Ignacio,
> Si el usuario decide hacer otra consulta destruyes el actual
> dataset y creas un dataset nuevo.
Eso es lo que no llego a ver claro, me pones un ejemplo?
Si el dateset lo tengo definido visualmente en el inspector de objetos,
¿lo destruyo?
Si lo creo directamente por código
¿Hace falta crearlo con el IDE?
Yo creo que en el IDE tiene que estar, porque se utiliza como referencia
a otros elementos, como los datacontrol.
Un saludico,
Fredy
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
oDataSet:End()
oDataSet := TDataSet():New()
No obstante, con los OBJ que te envié ayer basta con hacer:
oDataSet:Close() o oDataSet:lOpen := .F.
Todos tus datacontrols referencian por ejemplo a TMyForm:oDataSet1, la
única precaución que has de tener de utilizar ese mismo componente para
referenciar el nuevo DataSet creado.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1c98e6dfe746e52f9896c6@news.ozs.com...]MPG.1c98e6dfe746e52f9896c6@news.ozs.com...[/email]
Ignacio,
> Si el usuario decide hacer otra consulta destruyes el actual
> dataset y creas un dataset nuevo.
Eso es lo que no llego a ver claro, me pones un ejemplo?
Si el dateset lo tengo definido visualmente en el inspector de objetos,
¿lo destruyo?
Si lo creo directamente por código
¿Hace falta crearlo con el IDE?
Yo creo que en el IDE tiene que estar, porque se utiliza como referencia
a otros elementos, como los datacontrol.
Un saludico,
Fredy
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Mas preguntas

Mensaje por ignacio »

Fredy,
Si quieres te puedo mandar todas las clases modificados en los databontrols
desde la pre-release 2 que se dio en el curso, para comprobar que ya no
tienes GPFs pero necesito tu Email privado para mandartelo.
Un saludo,
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:422f1655$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Fredy,
>
> oDataSet:End()
> oDataSet := TDataSet():New()
>
> No obstante, con los OBJ que te envié ayer basta con hacer:
>
> oDataSet:Close() o oDataSet:lOpen := .F.
>
> Todos tus datacontrols referencian por ejemplo a TMyForm:oDataSet1, la
> única precaución que has de tener de utilizar ese mismo componente para
> referenciar el nuevo DataSet creado.
>
> Un saludo,
>
> "Fredy" <fredy@airtel.net> escribió en el mensaje
> news:[email=MPG.1c98e6dfe746e52f9896c6@news.ozs.com...]MPG.1c98e6dfe746e52f9896c6@news.ozs.com...[/email]
> Ignacio,
>> Si el usuario decide hacer otra consulta destruyes el actual
>> dataset y creas un dataset nuevo.
>
> Eso es lo que no llego a ver claro, me pones un ejemplo?
>
> Si el dateset lo tengo definido visualmente en el inspector de objetos,
> ¿lo destruyo?
> Si lo creo directamente por código
> ¿Hace falta crearlo con el IDE?
> Yo creo que en el IDE tiene que estar, porque se utiliza como referencia
> a otros elementos, como los datacontrol.
>
>
> Un saludico,
> Fredy
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

>
> Si quieres te puedo mandar todas las clases modificados en los databontrols
> desde la pre-release 2 que se dio en el curso, para comprobar que ya no
> tienes GPFs pero necesito tu Email privado para mandartelo.
639328192@aglsl.com
Un saludico,
Fredy
jasm-arroba-chochurro
Mensajes: 27
Registrado: Vie Dic 24, 2004 7:47 am

Mas preguntas

Mensaje por jasm-arroba-chochurro »

No es por nada, pero me esta dando la mala impresión que hay una
tendencia a complicarse la vida de forma innecesaria.
Saludos
Jose A. Suárez
fredy[1]
Mensajes: 218
Registrado: Mar Mar 08, 2005 2:03 am

Mas preguntas

Mensaje por fredy[1] »

Ignacio,
Con las modificaciones que me envías y tal y como lo estaba poniendo yo,
funciona perfectamente.
Ahora, si pongo
::oDataSet:End()
::oDataset:=TOdbcDataset():new()
::oDataset:cSelect:=cSQL
::oDataSet:lOpen := .t.
Me da un error diciendo que no existe XA_Datase0.dbf
De momento lo había solucionado con oDataSet:UpdateControls() que me
actualiza de golpe todos los controles asociados al dataset.
Más cosas.
1.- En un browse con nKeyno sabemos la posición relativa al total de
registros,
¿cómo sabemos el número de lineas de un browse y en qué linea respecto a las
que se visualizan del browse nos encontramos?
2- El otro día me hablabas del control de excepciones, y métodos como
IsError().
Por mucho que los he buscado no los encuentro. ¿Están documentados?
Por ejemplo:
Hago un select y resulta que el cable de red está desconectado, con lo cual
el sistema me da un error.
(SQLDriverConnect error [# 1]
¿Cómo hago para cazarlo?
Me gustaría sacar un mensaje al usuario, con la posibilidad de corregir el
problema y continuar
He visto:
oDbcDataSource:lAbortOnError, que me tira del programa si hay un error
oDbcDataSet:lDisplayError, que nos permite indicar si se muestran los
errores o no
Pero no he visto ningún otro, hay algo sobre un array de errores, pero no lo
encuentro
¿Hay alguna clase para el manejo de errores?
3- Para qué sirve el método alert en el dataset?
Un saludico,
Fredy
Responder