Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Caires

[Resolvido] Run-time error '13' typemismatch

Recommended Posts

Pessoal eu montei um programa para algumas penitenciarias, e agora eles me pediram para elaborar uma pesquisa por condenação,

elaborei a pesquisa mas quando clico para pesquisar esta dando um erro... mas não estou conseguindo encontrar o erro....

Agradeceria muito se alguém me ajudasse, vou colocar o código abaixo:

 

 

Private Sub cmdir_Click()

 

Data.RecordSource = "select * from qualificativa where esta='SIM'"

Data.Refresh

 

Dim condenado As String

Dim atual As Currency

Dim a, b, c, d, e, f As Currency

Dim total As Currency

 

total = 0

 

a = 0

b = 0

c = 0

d = 0

e = 0

f = 0

g = 0

h = 0

 

 

While Not Data.Recordset.EOF

 

If Data.Recordset.Fields("condenado") Then

 

condenado = Year(Data.Recordset.Fields("condenado"))

 

condenado = atual - condenado

 

If condenado >= 0 And condenado <= 4 Then

a = a + 1

ElseIf condenado >= 5 And condenado <= 8 Then

b = b + 1

ElseIf condenado >= 9 And condenado <= 15 Then

c = c + 1

ElseIf condenado >= 16 And condenado <= 20 Then

d = d + 1

ElseIf condenado >= 21 And condenado <= 30 Then

e = e + 1

ElseIf condenado >= 31 And condenado <= 50 Then

f = f + 1

ElseIf condenado >= 51 And condenado <= 100 Then

g = g + 1

ElseIf idade >= 100 Then

h = h + 1

 

End If

 

 

End If

 

Data.Recordset.MoveNext

Wend

 

List1.AddItem a & " Reeducandos condenados entre 0 e 4 anos"

List1.AddItem b & " Reeducandos condenados entre 5 e 8 anos"

List1.AddItem c & " Reeducandos condenados entre 9 e 15 anos"

List1.AddItem d & " Reeducandos condenados entre 16 e 20 anos"

List1.AddItem e & " Reeducandos condenados entre 21 e 30 anos"

List1.AddItem f & " Reeducandos condenados entre 31 e 50 anos"

List1.AddItem g & " Reeducandos condenados entre 51 e 100 anos"

List1.AddItem Format(h, "00") & " Reeducandos condenados mais de 100 anos"

 

 

total = a + b + c + d + e + f + g + h

 

List1.AddItem ""

List1.AddItem total & " Reeducandos Cadastrados"

 

 

 

End Sub

 

Private Sub Form_Load()

 

var0b = Conexao(Data, caminho_bd, "qpalzmMZN", True)

 

End Sub

 

Private Sub List1_Click()

 

End Sub

 

 

 

Agradeço desde já a todos!

Thiago Caires

Adm. Redes Microsoft

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a linha do erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Geralmente esse erro é causado pq o tipo de dado que está sendo armazenado no banco não corresponde, espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não da erro na programação, penas quando vou executar o programa e acessar o relatório por "pena"que é igual na base de dados "condenado" que corresponde a quantidade de anos que o Réu foi condenado....

 

Meu forte não é programação....

sou administrador de redes, mas se puderem me ajudar com esse problema agradeço...

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Thiago Caires

 

observe que você esta usando dois tipo de variaveis de tipo diferentes, para fazer uma subritração.

 

Dim condenado As String

Dim atual As Currency

 

Uma pergunta o campo condenado na sua tabela é campo datetimer ???

 

Se for você usa esta introção para evitar erro ou Run-time error '13', ou seja uma string para um campo númerico

a qui você pode fazer assim

condenado = iif(isnumeric(Year(Data.Recordset.Fields("condenado"))),Year(Data.Recordset.Fields("condenado")),0)

 

nesta linha assima usa esta validação para que ele sempre seja um número.

 

Na linha abaixo você esta fasendo um aoperação com uma varivel Curency e um avarivel String

Tente subitrair 5 - ''

ai vai dar o erro Run-time error '13'

Sempre trabalhe com variaveis númericas para efetuar cálculo

condenado = atual - condenado

 

Eu acho que o problema esta esta ai.

 

tente declarar a variavel condenado para Curency

 

Bom espero que ajude

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nilson, troquei a variavel para Currency, mas agora de outro erro....

 

'run-time error '3265'

"ITEM NÃO ENCONTRADO NESTA COLEÇÃO"

 

 

Mas agradeço muito pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nilson, na base da dados o pessoal não cadastrou apenas numeros, vou citar um exemplo:

 

Fulano da silva "condenado" 5 anos e 4 meses

 

ai em outro réu cadastraram..

 

chico lorota "condenado" 8a e 9m

 

então eu não posso dizer que é numerico mais não tem sóh dados numericos na base da dados....

como eu posso resolver esse problema....?

 

Obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é o seguinte Thiago Caires

 

Então você tem uma tabela e no mesmo campo ele cadastram tudo deste preso ?

Ex. o nome e o tempo condenado é isto ???

Se for isto acho melhor você estruturae o banco de dados e criar campos diferentes

Os campos, codigo, Nome, Ano,Mes em separado para você poder trabalhar com estes dados.

O que esta acontecendo é o seguinte você esta tentando passar uma letra para um avariavel numerica.

 

Este sistema ele ja esta sendo usando na penitenciaria ??

 

se ele ja estão usando, pede para ele te dar ums dias para estruturar o banco de dado de forma correta.

 

qual quer coisa estamos as ordem

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

OLha o nome estão separados.... agora a condenação já não está cadastrada de forma errada.... eu tinha notado isso...

por que só tem um espaço na base de dados como "CONDENADO" ai lá eles cadastram como um exemplo: 5 anos e 10 meses....

deve ser por isso que esta dando erro... mesmo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você alterou a estrutura ou já estava assim?

 

Como está sendo passado o valor para o campo condenacao agora?

 

Se ainda estiver sendo passado como 5 anos e 10 meses não é ideal. O ideal mesmo é que você consiga ter novas as informações necessárias de forma objetiva, preferencialmente separadas por campo. Um campo para armazenar a quantidade de anos e outro para a quantidade de meses.

 

Se tiver como alterar a estrutura, faça isso. Facilitará muito sua programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já estava assim....

se eu alterar na base de dados de 5 anos e 4 meses para 5,4

será que daria para mostrar que o 5 é = anos e o 4 é = a meses?

 

ou eu vou precisar inserir mais 3 colunas no access com o nome de cada uma como "ANO" , "MES" e " DIAS" ??

 

 

Obrigado

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio para facilitar, para eu fazer um relátorio apenas por condenação....

seria mais facil néh.....

ficaria como a programação.... mais ou menos...?

 

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando a primeira pergunta, pode ser feito 5,4 sem problemas.

 

Mesmo que você faça "5 anos e 4 meses", tratando esse valor, a gente consegue pegar os dados necessários. O que realmente é preciso é que, sempre sejam passados de forma igual, não pode em um passar "5 anos e 4 meses" e ano outro "5a 4m" e assim vai.

 

Mas lógico que se criar uma coluna para cada dado, fica mais fácil sim.

 

Mas na verdade mesmo, o mais normal, seria você criar um campo para adicionar a data que ele entrou na prisão, tendo essa data, depois basta você calcular o tempo da data até hoje que acha tudo que precisar, quantidade de anos, de meses, dias e até de horas se quiser.

 

Quanto a segunda dúvida, não entendi o que quis dizer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.