VALOR VINDO DO SELECT. RUNTIME ERROR 13

RENRS 11/10/2011 16:18:07
#386439
Bom dia

estou tendo um problema para exibir o valor de um select. O valor que deve ser exibido (66.66%) não aparece e da erro [Ô]Run Time 13 Type Miss macth[Ô]

o codigo é o seguinte:
  
Set sqlOra = DB_ORA.Execute(sql_Str)
If sqlOra.EOF Or IsNull(sqlOra!perc) Then
MsgBox [Ô]Sem dados para gerar relatório[Ô]
Exit Sub
End If

percent = 0 [ô]percent é do tipo DOUBLE
percent = FormatPercent(sqlOra(0), 2, True, False, False) [ô]Erro nessa linha. Run time 13 - miss macth
relatorioCanaleta.DataControlCanal.Recordset = sqlOra
relatorioCanaleta.lbl_DtInicio.Caption = dataIni
relatorioCanaleta.lbl_DtFim.Caption = dataFim
relatorioCanaleta.Label1.Caption = [Ô]Canaletas dentro da faixa (%): [Ô] & percent
relatorioCanaleta.Show


Outra coisa. Como posso ver o valor de sqlOra(0) na tela Immediate? ja tentei sqlOra(0) e sqlOra.fields([Ô]perc[Ô]).value

valeu
LUIZCOMINO 11/10/2011 16:44:01
#386445
Resposta escolhida
amigo poste essa funcão FormatPercen

para ver o valor basta digitar no immediate ? sqlOra!perc ou colocar em um msgbox assim: msgbox sqlOra!perc

abraço!
LUIZCOMINO 11/10/2011 16:52:26
#386448
obs se a variavel percent é tipo double e essa função retorna exatamente isso 66.66% com com a [Ô]%[Ô] esta ai o erro, a variavel percent tem que ser do tipo string.

RENRS 13/10/2011 11:12:28
#386574
Ok, alterei o tipo de percent para String.

agora, quando tento ler o valor de sqlOra!perc , sempre da erro de [Ô]Invalid Procedure Call or Argument[Ô]
usando o codigo abaixo:
 percent = FormatPercent(1 - sqlOra(0), 2, True, False, False)  


retorna sempre 100%, mas sem erro. Acho que devido não reconhecer sqlOra(0)

MARCELO.TREZE 13/10/2011 11:30:08
#386578
Voce tentou sem o FormatPercent para ver se retorna algum valor?

percent = sqlOra(0)
RENRS 13/10/2011 11:33:02
#386579
Sim.
percent = sqlOra(0) dá erro de [Ô]Invalid Procedure Call or Argument[Ô].


LUIZCOMINO 13/10/2011 11:40:05
#386581
e assim:

percent = sqlOra!perc

retorna o mesmo erro?
RENRS 13/10/2011 12:33:34
#386589
Sim.
Acho que achei o problema.
O valor retornado pelo sql era .6666666666 (dizima periodica)
Acrescentei mais dados, é o valor passou a ser de .75, com isso funciona legal.
Tem algum bug quando o valor é fracionado.
RENRS 13/10/2011 13:19:04
#386596
O jeito foi tratar o valor vindo do select antes, garantindo que nao venha dizima. Usei a função Round
Tópico encerrado , respostas não são mais permitidas