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.
problemas ao dar um select que retorna muitos registros
problemas ao dar um select que retorna muitos registros
Caros programadores de Xailer,
Tenho uma tabela com mais de 160000 registros... o que ocorre é que ao dar
um "select * from medicos" gasta-se cerca de 5 a 7 segundos... um tempo
muito bom... o problema é que nesse pequeno tempo se o usuário clicar em
outro componente qualquer do form, por exemplo num outro que abra um outro
select ai dá vários erros...
O que posso fazer para resolver isso ?
Att.
Reginaldo José Silva
Sommus Automação Comercial Ltda
www.sommus.com
Tenho uma tabela com mais de 160000 registros... o que ocorre é que ao dar
um "select * from medicos" gasta-se cerca de 5 a 7 segundos... um tempo
muito bom... o problema é que nesse pequeno tempo se o usuário clicar em
outro componente qualquer do form, por exemplo num outro que abra um outro
select ai dá vários erros...
O que posso fazer para resolver isso ?
Att.
Reginaldo José Silva
Sommus Automação Comercial Ltda
www.sommus.com
problemas ao dar um select que retorna muitos registros
Reginaldo,
mira en la documentación la propiedad lBusy de TApplication, quizás sea lo
que necesitas.
Saludos,
José Lalín
mira en la documentación la propiedad lBusy de TApplication, quizás sea lo
que necesitas.
Saludos,
José Lalín
problemas ao dar um select que retorna muitos registros
Caro José Latin,
Tentei assim:
Application:lBusy:=.T.
oSender:cSelect := "SELECT * FROM medicos ORDER BY nome"
oSender:lOpen:=.T.
Application:lBusy:=.F.
Esse código no oncreate do oSQLQuery
MAS, NíO DEU CERTO....
"José Lalín" <notengo@correo.com> escreveu na mensagem
news:4a6a1500$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Reginaldo,
mira en la documentación la propiedad lBusy de TApplication, quizás sea lo
que necesitas.
Saludos,
José Lalín
Tentei assim:
Application:lBusy:=.T.
oSender:cSelect := "SELECT * FROM medicos ORDER BY nome"
oSender:lOpen:=.T.
Application:lBusy:=.F.
Esse código no oncreate do oSQLQuery
MAS, NíO DEU CERTO....
"José Lalín" <notengo@correo.com> escreveu na mensagem
news:4a6a1500$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Reginaldo,
mira en la documentación la propiedad lBusy de TApplication, quizás sea lo
que necesitas.
Saludos,
José Lalín
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
problemas ao dar um select que retorna muitos registros
Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj
de arena, pero te deja tocar donde quieras, vamos que te engaña.
Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
bloquean el programa.
Salu2.
José Lalín escribió:
>
> Reginaldo,
>
> mira en la documentación la propiedad lBusy de TApplication, quizás sea
> lo que necesitas.
>
> Saludos,
> José Lalín
de arena, pero te deja tocar donde quieras, vamos que te engaña.
Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
bloquean el programa.
Salu2.
José Lalín escribió:
>
> Reginaldo,
>
> mira en la documentación la propiedad lBusy de TApplication, quizás sea
> lo que necesitas.
>
> Saludos,
> José Lalín
problemas ao dar um select que retorna muitos registros
Esse WaitOn() e WaitOff() é do Xailer ? pois não encontrei no manual...
Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
Att.
Reginaldo
"Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj de
> arena, pero te deja tocar donde quieras, vamos que te engaña.
>
> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
> bloquean el programa.
>
> Salu2.
>
> José Lalín escribió:
>>
>> Reginaldo,
>>
>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>> lo que necesitas.
>>
>> Saludos,
>> José Lalín
Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
Att.
Reginaldo
"Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj de
> arena, pero te deja tocar donde quieras, vamos que te engaña.
>
> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
> bloquean el programa.
>
> Salu2.
>
> José Lalín escribió:
>>
>> Reginaldo,
>>
>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>> lo que necesitas.
>>
>> Saludos,
>> José Lalín
- ignacio
- Site Admin
- Mensajes: 9440
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
problemas ao dar um select que retorna muitos registros
Reginaldo,
La solución que te propone Bingen con las funciones de su librería personal
son buenas. También puedes conjuntar lo que te propone José Lalín pero
además deshabilitando el formulario que enserñará el grid con TForm:lEnabled
:= .F.
Para mayor control se puede hacera una función que reciba, por ejemplo,como
parametros el datasource y cSelect. Esta función lanzaría un formulario tipo
diálogo MODAL que en su evento OnShow ejecutará el Select. Cuando terminase
cierra el formulario y devuelve el resultado de la select bien como dataset
o como matriz.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Sommus - Reginaldo" <reginaldo@sommus.com> escribió en el mensaje
news:[email=4a6d8ee3@svctag-j7w3v3j....]4a6d8ee3@svctag-j7w3v3j....[/email]
> Esse WaitOn() e WaitOff() é do Xailer ? pois não encontrei no manual...
>
> Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
>
> Att.
>
> Reginaldo
>
> "Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
> news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj
>> de arena, pero te deja tocar donde quieras, vamos que te engaña.
>>
>> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
>> bloquean el programa.
>>
>> Salu2.
>>
>> José Lalín escribió:
>>>
>>> Reginaldo,
>>>
>>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>>> lo que necesitas.
>>>
>>> Saludos,
>>> José Lalín
>
>
>
La solución que te propone Bingen con las funciones de su librería personal
son buenas. También puedes conjuntar lo que te propone José Lalín pero
además deshabilitando el formulario que enserñará el grid con TForm:lEnabled
:= .F.
Para mayor control se puede hacera una función que reciba, por ejemplo,como
parametros el datasource y cSelect. Esta función lanzaría un formulario tipo
diálogo MODAL que en su evento OnShow ejecutará el Select. Cuando terminase
cierra el formulario y devuelve el resultado de la select bien como dataset
o como matriz.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Sommus - Reginaldo" <reginaldo@sommus.com> escribió en el mensaje
news:[email=4a6d8ee3@svctag-j7w3v3j....]4a6d8ee3@svctag-j7w3v3j....[/email]
> Esse WaitOn() e WaitOff() é do Xailer ? pois não encontrei no manual...
>
> Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
>
> Att.
>
> Reginaldo
>
> "Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
> news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj
>> de arena, pero te deja tocar donde quieras, vamos que te engaña.
>>
>> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
>> bloquean el programa.
>>
>> Salu2.
>>
>> José Lalín escribió:
>>>
>>> Reginaldo,
>>>
>>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>>> lo que necesitas.
>>>
>>> Saludos,
>>> José Lalín
>
>
>
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
problemas ao dar um select que retorna muitos registros
Prezados,
funcionou usando da forma que o Ignácio disse:
Application:oMainForm:lEnabled:=.F.
Mas, não consegui fazer um formulário com a mensagem...
Poderiam me informar onde consigo o Waitonmete ???
Obrigado,
Reginaldo
"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escreveu na
mensagem news:[email=4a6db982@svctag-j7w3v3j....]4a6db982@svctag-j7w3v3j....[/email]
> Reginaldo,
>
> La solución que te propone Bingen con las funciones de su librería
> personal son buenas. También puedes conjuntar lo que te propone José Lalín
> pero además deshabilitando el formulario que enserñará el grid con
> TForm:lEnabled := .F.
>
> Para mayor control se puede hacera una función que reciba, por
> ejemplo,como parametros el datasource y cSelect. Esta función lanzaría un
> formulario tipo diálogo MODAL que en su evento OnShow ejecutará el Select.
> Cuando terminase cierra el formulario y devuelve el resultado de la select
> bien como dataset o como matriz.
>
> Un saludo,
>
> --
> Ignacio Ortiz de Zúñiga
> Xailer support / Soporte de Xailer
> http://www.xailer.com
> http://www.xailer.info
> "Sommus - Reginaldo" <reginaldo@sommus.com> escribió en el mensaje
> news:[email=4a6d8ee3@svctag-j7w3v3j....]4a6d8ee3@svctag-j7w3v3j....[/email]
>> Esse WaitOn() e WaitOff() é do Xailer ? pois não encontrei no manual...
>>
>> Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
>>
>> Att.
>>
>> Reginaldo
>>
>> "Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
>> news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj
>>> de arena, pero te deja tocar donde quieras, vamos que te engaña.
>>>
>>> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
>>> bloquean el programa.
>>>
>>> Salu2.
>>>
>>> José Lalín escribió:
>>>>
>>>> Reginaldo,
>>>>
>>>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>>>> lo que necesitas.
>>>>
>>>> Saludos,
>>>> José Lalín
>>
>>
>>
>
>
funcionou usando da forma que o Ignácio disse:
Application:oMainForm:lEnabled:=.F.
Mas, não consegui fazer um formulário com a mensagem...
Poderiam me informar onde consigo o Waitonmete ???
Obrigado,
Reginaldo
"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escreveu na
mensagem news:[email=4a6db982@svctag-j7w3v3j....]4a6db982@svctag-j7w3v3j....[/email]
> Reginaldo,
>
> La solución que te propone Bingen con las funciones de su librería
> personal son buenas. También puedes conjuntar lo que te propone José Lalín
> pero además deshabilitando el formulario que enserñará el grid con
> TForm:lEnabled := .F.
>
> Para mayor control se puede hacera una función que reciba, por
> ejemplo,como parametros el datasource y cSelect. Esta función lanzaría un
> formulario tipo diálogo MODAL que en su evento OnShow ejecutará el Select.
> Cuando terminase cierra el formulario y devuelve el resultado de la select
> bien como dataset o como matriz.
>
> Un saludo,
>
> --
> Ignacio Ortiz de Zúñiga
> Xailer support / Soporte de Xailer
> http://www.xailer.com
> http://www.xailer.info
> "Sommus - Reginaldo" <reginaldo@sommus.com> escribió en el mensaje
> news:[email=4a6d8ee3@svctag-j7w3v3j....]4a6d8ee3@svctag-j7w3v3j....[/email]
>> Esse WaitOn() e WaitOff() é do Xailer ? pois não encontrei no manual...
>>
>> Caro, Ignácio, pode nos mostrar a melhor solução para esse problema ?
>>
>> Att.
>>
>> Reginaldo
>>
>> "Bingen Ugaldebere" <bingen@bisoft.com> escreveu na mensagem
>> news:4a6d51dd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Perdona José pero si no han cambiado las cosas lBusy solo saca el reloj
>>> de arena, pero te deja tocar donde quieras, vamos que te engaña.
>>>
>>> Para eso utilizo WaitOn() y WaitOff() de mi librería de mensajes que si
>>> bloquean el programa.
>>>
>>> Salu2.
>>>
>>> José Lalín escribió:
>>>>
>>>> Reginaldo,
>>>>
>>>> mira en la documentación la propiedad lBusy de TApplication, quizás sea
>>>> lo que necesitas.
>>>>
>>>> Saludos,
>>>> José Lalín
>>
>>
>>
>
>
-
- Mensajes: 40
- Registrado: Vie Oct 02, 2015 3:01 am
Re: problemas ao dar um select que retorna muitos registros
Hola Bingen
no he encontrao las funciones waiton() y waitoff(), ¿Tendras algo de favor?
saludos
no he encontrao las funciones waiton() y waitoff(), ¿Tendras algo de favor?
saludos
Re: problemas ao dar um select que retorna muitos registros
Hola siento el retraso hacía tiempo que no entraba al foro, las vacaciones y el posterior amontone de tareas, ya se sabe.
Estas funciones on parte de una librería muy extendida por el foro llamada Messages.Prg pero en la actualidad yo las he complicado en exceso en nuestro sistema de mensajes propio, si alguien tuviera la Messages.Prg original para postearla aqui por favor...
Lo siento. SI no hay más remedio tengo que revisar el formato actual para poder publicarlo de nuevo.
Estas funciones on parte de una librería muy extendida por el foro llamada Messages.Prg pero en la actualidad yo las he complicado en exceso en nuestro sistema de mensajes propio, si alguien tuviera la Messages.Prg original para postearla aqui por favor...
Lo siento. SI no hay más remedio tengo que revisar el formato actual para poder publicarlo de nuevo.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es
Re: problemas ao dar um select que retorna muitos registros
Espero esta sea la versión que buscan.
Y gracias por compartirla.
Saludos
Y gracias por compartirla.
Saludos
- Adjuntos
-
- Messages.zip
- (11.12 KiB) Descargado 243 veces
-
- Mensajes: 32
- Registrado: Dom Jun 21, 2009 4:29 pm
Re: problemas ao dar um select que retorna muitos registros
Mi estimado Aquí están las funciones .
Sintaxis
Waiton("Mensaje " ) // Hasta que no procese el Waitoff() estará en espera.
***
Mifuncion que quiero controlar
waitoff()
************************************************************
FUNCTION WaitOn( cText, cImage)
local oImage,oFont,nWidth:=0,nHeight:=0,nTotalWidth:=0,nTotalHeight:=0
Default cText To "Cargando Data"
Default cImage To ""
*Verifica si la hay alguna form activo
If Application:oActiveForm <> Nil
*lo pongo en segundo plano
oPrevForm:=Application:oActiveform
oPrevForm:lEnabled := .F.
Endif
*Form lo pongo en estado de espera
Application:lBusy :=.T.
cText :=Alltrim(cText)
cImage :="reload.gif"
*Crea Tipo y Tamaño de Fuente
oFont := TFont():New()
WITH OBJECT oFont
:cName := "Arial "
:nSize := 8
:lBold := .T.
:lUnderline:=.f.
END WITH
*Calcular tamaños segun al fuente
nHeight := oFont:GetTextHeight( cText ) * 1.1
nWidth := oFont:GetTextWidth( cText ) * 1.1
*Verifica si tiene imagen para el nTotalHeight o solo letras
nTotalHeight:= nHeight*2+10
*Verifica si tiene imagen para el nTotalWidth o solo letras
nTotalWidth := nWidth+IIF(!Empty(cImage),40,20)
*Ventana de mensaje con espera hasta que se ejecuta WaitOff
DEFINE FORM oFormWait SIZE nTotalWidth,nTotalHeight BORDERSTYLE bsSPLASH OF Application:oActiveForm
if !Empty(cImage)
@ 13,10 Image oImage SIZE 16, 16 FILE cImage Transparent NONE OF oFormWait
@ nHeight-5, 30 LABEL cText VAR oWaitSay SIZE nWidth, nHeight OF oFormWait Alignment taCenter
oWaitSay:nVAlignment :=vaCenter
oWaitSay:oFont := oFont
else
@ nHeight-5, 10 Label cText VAR oWaitSay SIZE nWidth,nHeight OF oFormWait Alignment taCenter
oWaitSay:nVAlignment :=vaCenter
oWaitSay:oFont :=oFont
endif
ACTIVATE FORM oFormWait CENTER
Return Nil
**************************************
FUNCTION Waitoff()
If ValType(oFormWait) <> 'U'
oFormWait:Close()
oFormWait := Nil
ENDIF
If Valtype(oPrevForm) <> 'U'
oPrevForm:lEnabled:=.T.
oPrevForm := Nil
ENDIF
Application:lBusy:=.F.
RETURN Nil
Espero te ayude
Atentamente
Michael Pavlich
Sintaxis
Waiton("Mensaje " ) // Hasta que no procese el Waitoff() estará en espera.
***
Mifuncion que quiero controlar
waitoff()
************************************************************
FUNCTION WaitOn( cText, cImage)
local oImage,oFont,nWidth:=0,nHeight:=0,nTotalWidth:=0,nTotalHeight:=0
Default cText To "Cargando Data"
Default cImage To ""
*Verifica si la hay alguna form activo
If Application:oActiveForm <> Nil
*lo pongo en segundo plano
oPrevForm:=Application:oActiveform
oPrevForm:lEnabled := .F.
Endif
*Form lo pongo en estado de espera
Application:lBusy :=.T.
cText :=Alltrim(cText)
cImage :="reload.gif"
*Crea Tipo y Tamaño de Fuente
oFont := TFont():New()
WITH OBJECT oFont
:cName := "Arial "
:nSize := 8
:lBold := .T.
:lUnderline:=.f.
END WITH
*Calcular tamaños segun al fuente
nHeight := oFont:GetTextHeight( cText ) * 1.1
nWidth := oFont:GetTextWidth( cText ) * 1.1
*Verifica si tiene imagen para el nTotalHeight o solo letras
nTotalHeight:= nHeight*2+10
*Verifica si tiene imagen para el nTotalWidth o solo letras
nTotalWidth := nWidth+IIF(!Empty(cImage),40,20)
*Ventana de mensaje con espera hasta que se ejecuta WaitOff
DEFINE FORM oFormWait SIZE nTotalWidth,nTotalHeight BORDERSTYLE bsSPLASH OF Application:oActiveForm
if !Empty(cImage)
@ 13,10 Image oImage SIZE 16, 16 FILE cImage Transparent NONE OF oFormWait
@ nHeight-5, 30 LABEL cText VAR oWaitSay SIZE nWidth, nHeight OF oFormWait Alignment taCenter
oWaitSay:nVAlignment :=vaCenter
oWaitSay:oFont := oFont
else
@ nHeight-5, 10 Label cText VAR oWaitSay SIZE nWidth,nHeight OF oFormWait Alignment taCenter
oWaitSay:nVAlignment :=vaCenter
oWaitSay:oFont :=oFont
endif
ACTIVATE FORM oFormWait CENTER
Return Nil
**************************************
FUNCTION Waitoff()
If ValType(oFormWait) <> 'U'
oFormWait:Close()
oFormWait := Nil
ENDIF
If Valtype(oPrevForm) <> 'U'
oPrevForm:lEnabled:=.T.
oPrevForm := Nil
ENDIF
Application:lBusy:=.F.
RETURN Nil
Espero te ayude
Atentamente
Michael Pavlich
Re: problemas ao dar um select que retorna muitos registros
Muchas gracias compañeros, a ver si saco tiempo para poder ofreceros un nuevo Messages mucho más completo.
Prometido.
Salu2
Prometido.
Salu2
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es