Como rotar estas promociones...?

Iniciado por luison, 19 Abril 2011, 18:13 PM

0 Miembros y 1 Visitante están viendo este tema.

luison

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


Código (vb) [Seleccionar]

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
Código (vb) [Seleccionar]

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.


luison

Hasta ahorita he logrado un avance con 2 timers, un par de arreglos para guardar la info de la consulta:

Código (vb) [Seleccionar]

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




Código (vb) [Seleccionar]

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

BlackZeroX

#2
En lugar un timer y el Sleep ( Este te duerme el hilo ) puedes usar:

Wait()

Asi:

Código (Vb) [Seleccionar]



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!¡.
.
The Dark Shadow is my passion.