RUN-TIME ERROR 13 TYPE MISMATCH

THIAGOPSANTOS 07/12/2009 14:37:10
#329284
Boa tarde galera,

Este erro deve ser comum, mais nao encontrei nos topicos assistidos.

Tenho uma aplicação em vb6 que gera um relatorio em excel. E nesta apclicação preciso corverte data e tempo.

O relatorio ja estefe fucinando normalmente. mas hj acomeçou a dar este erro.

Nesta Função:

Function CONVERT_TEMPO_SECS(tempo_total As String)
Dim d, h, h2, h3, m, m2, m3, S, s2, s3 As Integer
Dim tempo_total_as_date As Date
h3 = 0
m3 = 0
s3 = 0
d = 0

If InStr(1, tempo_total, [Ô]d[Ô]) Then
d = Mid(tempo_total, 1, InStr(1, tempo_total, [Ô]d[Ô]) - 1)
tempo_total = Mid(tempo_total, InStr(1, tempo_total, [Ô]d[Ô]) + 1)
End If

tempo_total_as_date = CDate(tempo_total)

N = Split(tempo_total_as_date, [Ô]:[Ô])
h = CInt(N(0)) <<<<<<------------------------------------------------- ERRROOOOOOOOOOOOOOOOOOOOO
m = CInt(N(1))
If InStr(1, N(2), [Ô]AM[Ô]) <> 0 Or InStr(1, N(2), [Ô]PM[Ô]) <> 0 Then
S = Mid(N(2), 1, 2)
Else
S = CInt(N(2))
End If
CONVERT_TEMPO_SECS = d * 86400 + h * 3600 + m * 60 + S
End Function

LEANDRO 07/12/2009 14:42:20
#329285
Vai em Painel de Controle
Opções Regionais e de idioma
Personalizar
Data

e veja se a data esta como dd/mm/aaaa, se nao, coloque essa
EDERMIR 07/12/2009 14:43:27
#329286
Resposta escolhida
Qual o valor de [Ô]tempo_total_as_date[Ô]?

N = Split(tempo_total_as_date, [Ô]:[Ô])
THIAGOPSANTOS 07/12/2009 14:50:57
#329288
Esta OK a data.
THIAGOPSANTOS 07/12/2009 14:57:19
#329289
O valor que esta aparendo quando passo o debug é:

N = Split(tempo_total_as_date, [Ô]:[Ô]) ---> 12/05/1903
SURFMANPR 07/12/2009 17:41:31
#329307
Você não está passando um valor válido para a função Split. para ela criar a matriz(vetor) é necessário que a data tenha hora, minutos e segundos... ou seja [Ô]12/05/1903 15:30:26[Ô]. Mesmo passando esse dado, iria dar erro na função, pois na hora de converter para int iria dar erro devido ao espaço no valor de n(0).

Se vc passar apenas o valor [Ô]15:30:26[Ô](hora) vai funcionar 100%!

Achei seu código confuso... Se eu entendi, acho que vc quer algo assim:

Private Function CONVERT_TEMPO_SECS(tempo_total As Date)
Dim d as integer
Dim h as integer
Dim m as integer
Dim s as integer

d = Day(tempo_total)
h = Hour(tempo_total)
m = Minute(tempo_total)
S = Second(tempo_total)

CONVERT_TEMPO_SECS = d * 86400 + h * 3600 + m * 60 + S
End Function


Veja se lhe ajuda
EDERMIR 08/12/2009 14:45:55
#329345
Citação:

THIAGOPSANTOS escreveu:
O valor que esta aparendo quando passo o debug é:

N = Split(tempo_total_as_date, [Ô]:[Ô]) ---> 12/05/1903


O valor é uma DATA, existem dois problemas:
O SPLIT trata caracter
DATAS não são separadoas por [Ô]:[Ô]
Se você quer separar DIA,MES e ANO:
Wdia = day(data)
Wmes = month(data)
Wano = year(data)
Tópico encerrado , respostas não são mais permitidas