jeu. 13 août 2015, 10h59
Thierry
atoutfox.public.association
Re: progressbar et sql
Bonjour,
Il faut utiliser le mode asynchrone pour Sqlexec.
Voici un exemple :
LOCAL loTherm
loTherm = NewObject("_thermometer",home()+"ffc/_therm","","Veuillez
patienter...")
loTherm.Show
loTherm.Update(0, "En cours d'execution...")
DOEVENTS force
SqlSetProp(hsql,"Asynchronous",.f.)
IF SqlExec(m.hSql,"SELECT count(*) as cnt FROM dossier (nolock)","cnt")<0
ERROR Message()
ENDIF
lotherm.iBasis=cnt.cnt
SqlSetProp(hsql,"Asynchronous",.t.)
CursorSetProp("FetchSize",1000,0)
IF SqlExec(hsql,"SELECT * FROM dossier (nolock)")<0
ERROR Message()
ENDIF
LOCAL cnt
DO WHILE SqlExec(hsql)=0
DOEVENTS
cnt=CursorGetProp("RecordsFetched")
loTherm.Update(m.cnt, transform(m.cnt) + "/" +TRANSFORM(lotherm.ibasis))
ENDDO
RELEASE loTherm
"RHJ" a écrit dans le message de groupe de discussion :
mqg1da$t7h$1@news.niouzes.net...
bonjour à tous,
Dans mon formulaire quand j'execute sqlexec
par ex:
sqlexec(maConnexionHandle,'select * from
matable','monCurseur')
je peux apercevoir dans le statusBar le chargement de monCurseur du type
Enreg:1/reccount() dont reccount() s'incremente jusqu'à la fin du
traitement.
et ma question est, s'il est possible d'utiliser ces valeurs dans un
progressbar (ctl32)
disons que je lance un
sqlexec(maconnexionhandle,'select count(*) nb
from matable','cursorNb')
pour avoir le nombre de record.
Une autre chose, j'essayé d'afficher un fichier gif pour contourner le
count(*) et la seconde requête mais pendant de traitement, le gif s'arrête
de bouger quand le sql est en cours. Il y a-t-il aussi une solution pour
cela.
Ma démarche était :
afficher gif
lancer sqlexec()
rafraichir mon tableau
masquer gif
Mon but dans tout cela était d'éviter que l'utilisateur ait une sensation
d'attente et de lenteur pendant un traitement de masse sur un formulaire.
Merci d'avance pour votre aide et contribution.
Cordialement,
Rivo
Journal
RHJ pense que ce message est la bonne réponse ou qu'il est utile
Permalink : http://www.atoutfox.org/nntp.asp?ID=0000016640