Salu2
Tengo una tabla con promociones:
ID - DESCRIPCION - INICIA - TERMINA
1 3 x 2 Cereales 19/04/2011 25/04/2011
2 4 X 3 Pastas 20/04/2011 30/04/2011
Dim recset As New Recordset
Set recset = Conexion.Execute("SELECT descripcion from promos where termina >='" & Date & "'")
If recset.EOF = False Then
While Not recset.EOF
'mostrar promocion #1
'esperar 1 minuto
'mostrar promocion # 2
'esperar 1 minuto
'...
recset.MoveNext
Loop
End If
Set recset = Nothing
La idea es mostrar la promoción #1, esperar un tiempo razonable mientras se lee la descripción, luego mostrar la siguiente promoción, esperar y asi sucesivamente.
He pensado tal vez se pueda hacer con
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
O posiblemente exista una forma mas eficiente.
Espero puedan ayudarme con algunos tips.
Gracias, seguiremos por aqui intentando.
Hasta ahorita he logrado un avance con 2 timers, un par de arreglos para guardar la info de la consulta:
Public Sub consulta_promos()
Dim recset As New Recordset
Set recset = Conexion.Execute("SELECT descripcion,img from promos where fecha_termina >= #" & Date & "#")
If recset.EOF = False Then
Do While Not recset.EOF
mtextos(posT) = recset!descripcion
mImages(posI) = recset!img
posT = posT + 1
posI = posI + 1
recset.MoveNext
Loop
End If
Set recset = Nothing
End Sub
Private Sub tmrPromociones_Timer()
If tope > posT Then
tope = 1
lblMsjsPromos.Caption = mtextos(tope)
Me.picPromos.LoadImage_FromFile (App.Path & "/img_promos/" & mImages(tope))
Me.picPromos.AutoSize = True
tope = tope + 1
Else
lblMsjsPromos.Caption = mtextos(tope)
Me.picPromos.LoadImage_FromFile (App.Path & "/img_promos/" & mImages(tope))
Me.picPromos.AutoSize = True
tope = tope + 1
End If
tmrPromociones.Enabled = False
Me.tmrReiniciaPromos.Enabled = True
End Sub
Estoy provocando varios escenarios / casos para ver si esta forma es la adecuada
En lugar un timer y el Sleep ( Este te duerme el hilo ) puedes usar:
Wait() (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8)
Asi:
option explicit
private recset As Recordset'// No hay que hacerle New ya que olo lo usaremos como referenciador al que obtendremos.
' // En cualquier otro proceso...
Set recset = Conexion.Execute("SELECT descripcion,img from promos where fecha_termina >= #" & Date & "#")
private bExit as boolean
Public Sub Girar_Promos()
on error goto _ErrReport:
dim simg$
if ( not recset is nothing ) then
with recset
Do While (bExit = false)
simg$ = App.Path & "/img_promos/" & recset!img
if ( dir(simg$,vbarchive) <> "" then
picPromos.LoadImage_FromFile (simg$)
lblMsjsPromos.Caption = recset!descripcion
call wait( 5 ) ' // Cada 5 segundos.
else
debug.print "Error Al cargar: "; simg$
end if
if ( .EOF ) then
.MoveFirst
else
.MoveNext
end if
loop
end with
end if
exit sub
_ErrReport:
Debug.print "Error Con el RecordSet"
End Sub
Dulces Lunas!¡.
.