Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 23/10/2006 14:50 hs
Pessoal, como eu incremento a variavel (Criterio) fazendo esse codigo rodar 03 vezes e na terceira vez parar? É o seguinte quando eu dou o primeiro incremento 1 para essa variavel e carrego o primeiro label(LB1), depois tera que incrementar automaticamente a variavel para 2 e vazer a segunda pesquisa para carregar o segundo Label(LB2) por ultimo incrementar a variavel para 3 e carregar terceiro Label(LB3) finalizando a pesquisa e limpando a variavel. Isso tem jeito? Private Sub CommandButton1_Click() Dim Criterio As String
Criterio = 1
Dim I Dim Soma As Double
Set TbData = New ADODB.Recordset Set rsTemp = New ADODB.Recordset
Dim Sql As String 'For Criterio = 1 To 3 Sql = "Select Data,Codigo,SaldoHora From HExtra WHERE Codigo Like '%" & Criterio & "%' GROUP BY Data,Codigo,SaldoHora Having Data BETWEEN #" & Format(TxtIn.Value, "MM/DD/YYYY") & "# AND #" & Format(TxtFin.Value, "MM/DD/YYYY") & "# ORDER BY Data" Set TbData = Bd_Hora.Execute(Sql)
Do While Not TbData.EOF ListHora.AddItem Format(CDate(TbData("SaldoHora")), "HH:MM") TbData.MoveNext Loop 'Next For I = 0 To ListHora.ListCount - 1 Soma = CDate(Soma) + CDate(ListHora.List(I)) Next I If Criterio = 1 Then Lb1.Caption = CDate(Soma) ElseIf Criterio = 2 Then Lb2.Caption = CDate(Soma) ElseIf Criterio = 3 Then Lb3.Caption = CDate(Soma) End If End Sub
|
|
|
|
|
|
|
|
Postada em 23/10/2006 15:32 hs
vc não pode criar um array de labels?
for i=0 to 2 Soma = CDate(Soma) + CDate(ListHora.List(I)) lb(i) = CDate(Soma) next
|
|
|
|
Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 23/10/2006 15:42 hs
Tentei assim mas o cálculo esta dando errado!!
Private Sub CommandButton1_Click() Dim Criterio As Integer
Criterio = 0
Dim I Dim Soma As Double
Set TbData = New ADODB.Recordset Set rsTemp = New ADODB.Recordset
Dim Sql As String For Criterio = 1 To 3 Sql = "Select Data,Codigo,SaldoHora From HExtra WHERE Codigo Like '%" & Criterio & "%' GROUP BY Data,Codigo,SaldoHora Having Data BETWEEN #" & Format(TxtIn.Value, "MM/DD/YYYY") & "# AND #" & Format(TxtFin.Value, "MM/DD/YYYY") & "# ORDER BY Data" Set TbData = Bd_Hora.Execute(Sql)
Do While Not TbData.EOF ListHora.AddItem Format(CDate(TbData("SaldoHora")), "HH:MM") TbData.MoveNext Loop
For I = 0 To ListHora.ListCount - 1 Soma = CDate(Soma) + CDate(ListHora.List(I)) Next I If Criterio = 1 Then Lb1.Caption = CDate(Soma) ListHora.Clear ElseIf Criterio = 2 Then Lb2.Caption = CDate(Soma) ListHora.Clear ElseIf Criterio = 3 Then Lb3.Caption = CDate(Soma) ListHora.Clear End If Next End Sub
|
|
|
|
|
|
Postada em 23/10/2006 16:41 hs
hummm não costumo fazer conta de tempo ou data convertidos para números... mas qdo vc debuga vc percebe q a conta está certa?? experimenta fazer a conta e converter pra cdate... conta a conta pra ver se bate...
|
|
|
|
Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 23/10/2006 16:58 hs
Obrigatóriamente a variavel tem que ser Integer? Quando coloco como String da a mensagem de erro (Tipos incompatíveis) nesta linha:
For Criterio = 1 To 3
Acho que o problema esta ai, mas não sei como resolver!!
|
|
|
|
|
|
Postada em 23/10/2006 19:46 hs
Se critério for integer não vejo problema algum nesta linha... mas se não for tb não tem problema... for i= 1.1 to 2.5 step 0.1 next funciona normal... Tipos incompatíveis nesta linha ae é muito estranho...
|
|
|
|